Open awoie opened 3 years ago
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Because dereferencing is about extracting a specific resource from a DID Document, and given the fact that
This process depends on DID resolution of the DID contained in the DID URL
what do you think of the following
VerificationMethod
or ServiceEndpoint
with id
= didUrl
I am concerned about two things in this algorithm:
resolve
function calls the dereference
function of the same DID Method, it may end in an infinite loopThe steps that you outlined are exactly what should happen for dereferencing a DID URL.
As for the concerns, in my experience DID documents are relatively small so optimizing all resolvers to provide only partial documents seems premature. Since this library doesn't perform the actual DID resolution, this kind of optimization would have to be implemented by each DID method driver. The infinite loop situation should be a concern of the DID driver that would use a pattern like this, not this library.
That being said, there are a few design decisions that can be made to make this extra useful:
resolve()
.
Therefore, I think it would be wise to create and export a function like dereference(didDocument, didUrl, options)
that would also be called internally by the dereference(didUrl, options)
function.publicKey
instead of verificationMethod
, so this corner case also needs to be addressed.#fragment
part of the URL for element IDs, so a simple string comparison id === didUrl
would not be enough.
This last bit is a problem for many other situations, so it makes sense to fix this as a separate line of work, since it can also be applied to the resolve()
method.Indeed the infinite loop situation does not concern this library but a disclaimer mentioning the fact that this situation can occur depending how drivers are implemented is necessary in my opinion.
verificationMethod
and service
. But maybe I misunderstood something here
https://www.w3.org/TR/did-core/#relative-did-urls
DID Core distinguishes between resolving a DID and dereferencing a DID URL. Resolving a DID is already covered but it would be good have support for dereferencing a DID URL as well as defined in the DID Core spec here.
Interface looks as follows: