trustoverip/tswg-did-method-webs-specification

Describe use of versionId (and maybe versionTime) DID parameters

peacekeeper opened this issue · 5 comments

Using the KEL, this DID method can nicely support a history of DID documents. The value of the versionId DID parameter could be a sequential number, or a KERI-specific way of identifying a "version of the KEL".

Supporting versionTime may be harder. According to PhilF:

KERI events don't have time associated with them per se, but implementations store their own local "first seen" date/time for each event. We could use that, but it gets tricky if the host of the DID Doc is the controller and the events are seen by a watcher that could be at some time after they actually occur

See https://www.w3.org/TR/did-core/#did-parameters

We only care about the timings in the KEL/TEL associated with the DIDDoc, if that helps.

It sounds like watchers process the events to create their own KEL/TEL, possibly with different times? Presumably that means the times are not part of the chain of events in the KEL/TEL, since using local times would result in different outcomes.

Is KERI only concerned with the ordering of events, and not their time, or does (local) time play into the event stream?

Do ACDCs have an issuance and/or validity date, like the "validFrom" property in the VCDM or "nbf" / "iat" claims in JWT?

Is KERI only concerned with the ordering of events, and not their time, or does (local) time play into the event stream?

I believe local time is a form of available metadata, but is not considered trustworthy. What is guaranteed is relative order.

Do ACDCs have an issuance and/or validity date, like the "validFrom" property in the VCDM or "nbf" / "iat" claims in JWT?

There is no guaranteed timestamp info in an ACDC; it has or doesn't have such info depending on the schema. https://trustoverip.github.io/tswg-acdc-specification/draft-ssmith-acdc.html#name-top-level-fields

To summarize my answers: I agree with @peacekeeper that versionId is trivial to support. KEL versions are simply numbered with sequential integers, so the value of the versionId arg would be a number like 1, 2, 3.

It is possible to support versionTime in specifically constrained KERI ecosystems, but there is no generic features upon which versionTime could be implemented with trustworthiness and precision. So I would vote that we simply not support it in this method.

Of these 2, I think versionId is actually far more useful, anyway. Distributed timestamping is a wicked hard problem.