DIDs and DOIs on Sovrin


How are DIDs different from, the same as DOIs? (see https://www.doi.org/index.html)

Even though the language on the DOI site focuses on digital objects and DIDs are more general than that, I know that DOI proponents are discussing how they can be used as identifiers for anything.

Clearly, a DID could point to a DDO that contains the DOI for something.

Would it be possible to use a DOI as a key on the ledger?


One clear distinction is that a DOI is meant to be canonical. Whereas a DID is not.


@phil Sorry to be slow in answering—sometimes the “Sovrin question stack” just overflows :wink:

In any case, I’m very familiar with DOIs. Here’s how I would summarize the similarities and differences.


  • Both DIDs and DOIs are globally unique persistent (immutable) identifiers—meaning identifiers designed to be assigned once to a resource and continue to uniquely identify that one resource forever. (Note that this is also the job of URNs.)
  • Both DIDs and DOIs are first-class objects that directly represent the identity of the identified resource, rather than merely pointing to its location (like a URL).
  • Both DIDs and DOIs are resolvable to metadata that describes the identified resource. In the case of DIDs, this is a DDO (DID descriptor object). In the case of DOIs, it is a typed list of data sources as defined by the Handle System.


  • True to their name, DIDs do not require any centralized registry infrastructure. Both registration and resolution MUST be fully decentralized or it’s not a DID.
  • The persistent of a DID does not depend on any single registry provider. Instead it depends only on the persistence of the distributed ledger on which the DID is registered.
  • DIDs are registered and verified cryptographically; DOIs are not. DIDs are designed for distributed ledger technology (“blockchains”) and decentralized control, so each one has associated cryptographic keys. DOIs do not assume any cryptographic model.
  • The syntax is different. DOI structure is based on a dot-delimited hierarchical registry/resolution syntax to identify the registry, followed by a forward slash “/” and the registry-specific unique identifier. DID structure is colon-delimited levels in the form did:method:method-specific-ID, where the first two levels identifies both the target ledger and the interaction method (i.e., how to create/read/update/delete DIDs of that method), and the third (or more) levels are the method-specific unique-identifier.
  • DID syntax does not require a path component. While a DOI uses a forward slash “/” to separate the registry ID from the registry’s internal ID; a DID by itself does not contain a path segment. This means the DID component is directly analogous to the URI scheme and authority component, and that DIDs paths, fragments, and query syntax can be identical to URI path, fragment, and query syntax.