did:x
Method SpecificationThe did:x
method specification conforms to the requirements specified in
the DID specification, currently published by the W3C Credentials Community
Group. For more information about DIDs and DID method specifications, please see
the DID Primer
Decentralized Identifier (DID, see [1]) implementations are, by and large, not meant to be human-readable or memorable. For the most part, this is both deliberate and useful. It allows for the identifiers to be uniformly generated and ultimately be most directly used by machines for verification. But it does suffer the same issues that IP addresses did on the early internet. Ultimately, people are who these tools will serve, and people don’t deal well with long IP addresses, long hexadecimal, or base58 strings.
did:x
aims to be for DIDs what DNS was for IP addresses. It accomplishes this by being an alias-only DID method that can point to any other valid DID. It provides personalizable, memorable names that can be fully owned by the controller(s) of an Ethereum (or EVM-compatible) address.
The described DID method allows any Ethereum smart contract or key pair account to own the names in the registry. Further, it allows for associated services to be declared for the did:x
DID name (i.e., linked domains, messaging endpoints, etc).
For a reference implementation of this DID method specification see [3].
The target system is the Ethereum network where the registry is deployed. In the meantime, this only includes Polygon. There are plans in the future to expand this to other EVM-compatible chains.
Since this DID method still supports publicKeyHex
and publicKeyBase64
encodings for verification methods, it requires a valid JSON-LD context for those entries.
To enable JSON-LD processing, the @context
used when constructing DID documents for did:ethr
should be:
"@context": [
"<https://www.w3.org/ns/did/v1>",
"<https://w3id.org/security/suites/secp256k1recovery-2020/v2>"
]
You will also need this @context
if you need to use EcdsaSecp256k1RecoveryMethod2020
in your apps.
The namestring that shall identify this DID method is x
A DID that uses this method MUST begin with the following prefix: did:x
. Per the DID specification, this string MUST be in lowercase. The remainder of the DID, after the prefix, is specified below.