Abstract
This document serves as an official registry for all known global parameters,
properties, and values used by the Decentralized Identifier ecosystem.
Status of This Document This section describes the status of this
document at the time of its publication. Other documents may supersede
this document. A list of current W3C publications and the latest revision
of this technical report can be found in the
W3C technical reports index at
https://www.w3.org/TR/.
This registry is under active development and implementers are advised
against using the registry unless they are directly involved with the
W3C DID Working Group.
Comments regarding this document are welcome. Please file issues
directly on GitHub ,
or send them
to public-did-wg@w3.org (
subscribe ,
archives ).
Portions of the work on this specification have been funded by the
United States Department of Homeland Security's Science and Technology
Directorate under contracts HSHQDC-16-R00012-H-SB2016-1-002, 70RSAT20T00000010,
and HSHQDC-17-C-00019. The content of this specification does not
necessarily reflect the position or the policy of the U.S. Government
and no official endorsement should be inferred.
Work on this registry has also been supported by the Rebooting the
Web of Trust community facilitated by Christopher Allen, Shannon
Appelcline, Kiara Robles, Brian Weller, Betty Dhamers, Kaliya Young,
Kim Hamilton Duffy, Manu Sporny, Drummond Reed, Joe Andrieu, and
Heather Vescent, Dmitri Zagidulin, and Dan Burnett.
This document was published by the Decentralized Identifier Working Group as a
Working Group Note.
GitHub Issues are preferred for
discussion of this specification.
Alternatively, you can send comments to our mailing list.
Please send them to
public-did-wg@w3.org
(subscribe ,
archives ).
Publication as a Working Group Note does not imply endorsement
by the W3C Membership.
This is a draft document and may be updated, replaced
or obsoleted by other documents at any time. It is inappropriate to cite this
document as other than work in progress.
This document was produced by a group
operating under the
W3C Patent
Policy .
This document is governed by the
15 September 2020 W3C Process Document .
Table of Contents Abstract Status of This Document 1. Conformance2. Introduction3. The Registration Process4. Property Names4.1 DID document properties4.1.1 id4.1.2 alsoKnownAs4.1.3 controller4.1.4 verificationMethod4.1.5 publicKey4.1.6 service4.2 Verification relationships4.2.1 assertionMethod4.2.2 authentication4.2.3 capabilityDelegation4.2.4 capabilityInvocation4.2.5 keyAgreement4.3 Verification method properties4.3.1 publicKeyJwk4.3.2 publicKeyBase584.3.3 publicKeyHex4.3.4 publicKeyMultibase4.3.5 blockchainAccountId4.3.6 ethereumAddress4.4 Service properties4.4.1 serviceEndpoint5. Property Values5.1 Verification method types5.1.1 JsonWebKey20205.1.2 EcdsaSecp256k1VerificationKey20195.1.3 Ed25519VerificationKey20185.1.4 Bls12381G1Key20205.1.5 Bls12381G2Key20205.1.6 GpgVerificationKey20205.1.7 RsaVerificationKey20185.1.8 X25519KeyAgreementKey20195.1.9 SchnorrSecp256k1VerificationKey20195.1.10 EcdsaSecp256k1RecoveryMethod20205.1.11 VerifiableCondition20215.2 Service types5.2.1 LinkedDomains5.2.2 DIDCommMessaging6. Representations7. Representation-Specific Entries7.1 JSON7.2 JSON-LD7.2.1 @context7.3 CBOR8. DID Resolution Input Metadata8.1 accept9. DID Resolution Metadata9.1 contentType9.2 error9.2.1 invalidDid9.2.2 invalidDidUrl9.2.3 notFound9.2.4 representationNotSupported10. DID Document Metadata10.1 created10.2 updated10.3 deactivated10.4 nextUpdate10.5 versionId10.6 nextVersionId10.7 equivalentId10.8 canonicalId11. Parameters11.1 hl11.2 service11.3 versionId11.4 versionTime11.5 relativeRef11.6 initial-state11.7 transform-keys11.8 signed-ietf-json-patch11.9 resource12. DID MethodsA. ReferencesA.1 Normative references
3. The Registration Process
Software implementers might find that the existing Decentralized Identifier Core
specification [DID-CORE ] is not entirely capable of addressing their use case
and might need to add a new parameters, properties, or values to this registry
in order to achieve their use case in a globally interoperable fashion. In order
to add a new parameter, property, or value to this registry, an implementer MUST
submit a modification request for this registry, as a pull request on the
repository where this registry is hosted, where the modification request adheres
to the following policies:
Any addition to the DID Core Registries MUST specify a human readable
description of the addition.
If there are copyright, trademark, or any intellectual property rights
concerns, the addition and use MUST be authorized in writing by the intellectual
property rights holder under a
F/RAND
license. Examples include DID Methods that use trademarked brand names,
property names that utilize the titles of copyrighted works, and patented
technology that would cause the use of the extension to require licensing a
patent.
Any addition MUST NOT create unreasonable legal, security, moral, or privacy
issues that will result in direct harm to others. Examples of unacceptable
additions include any containing racist language, technologies used to
persecute minority populations, and unconsented pervasive tracking.
Any addition to the DID Core Registries MUST link, via at least a URL,
preferably a content-integrity protected one, to the defining specification so
that implementers can implement the property.
Any addition to the DID Core Registries that is a property or value, MUST
specify a machine readable JSON-LD Context for the addition.
The JSON-LD Context MUST be included in full as part of the submission.
A namespace URI MUST be provided for the JSON-LD Context so that consumer
implementations can consistently map a URI to the full context.
The URI provided MUST be persistent, and link all terms to their associated
human readable descriptions.
The URI provided SHOULD resolve or link to the full context contents.
JSON-LD Contexts MUST be versioned and MUST NOT be date stamped.
JSON-LD Contexts SHOULD use scoped terms and MUST use the @protected
feature to eliminate the possibility of term conflicts.
Properties in the DID Core Registries MUST NOT be removed, only deprecated.
The Editors of the DID Specification Registries MUST consider all of the
policies above when reviewing additions to the registry and MUST reject registry
entries if they violate any of the policies in this section. Entities
registering additions can challenge rejections first with the W3C DID Working
Group and then, if they are not satisfied with the outcome, with the W3C Staff.
W3C Staff need not be consulted on changes to the DID Specification Registries,
but do have the final authority on registry contents. This is to ensure that W3C
can adequately respond to time sensitive legal, privacy, security, moral, or
other pressing concerns without putting an undue operational burden on W3C
Staff.
Entries that are identified to cause interoperability problems MAY be marked as
such at the discretion of the maintainers of this registry, and if possible,
after consultation with the entry maintainer.
Any submission to the registries that meet all the criteria listed above will be
accepted for inclusion. These registries enumerate all known mechanisms that
meet a minimum bar, without choosing between them.
4. Property Names
The following section defines the properties available for use in a DID
document. Note that some of these properties are defined in the
DID Core Specification , and
others are defined elsewhere and may be method- or domain-specific. Please read
the associated specifications to ensure that the properties you use are
appropriate for your implementation. The properties are arranged here according
to the purpose they serve.
Issue
This registry is a work in progress and some properties are missing normative
definitions. We are working on this! This does NOT mean that in future it will
be possible to submit items to the registry without normative definitions (see § 3. The Registration Process ).
4.1 DID document properties
These properties are foundational to DID documents, and are expected to be
useful to all DID methods.
4.1.1 id
{
"id": "did:example:123" ,
...
}
4.1.2 alsoKnownAs
{
"alsoKnownAs": "https://example.com/" ,
...
}
4.1.3 controller
{
"controller": "did:example:123" ,
...
}
4.1.5 publicKey
This property has been deprecated in favor or verificationMethod
.
{
"id" : "did:example:123" ,
"publicKey" : [
{
"id" : "did:example:123#ZC2jXTO6t4R501bfCXv3RxarZyUbdP2w_psLwMuY6ec" ,
"type" : "Ed25519VerificationKey2018" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
},
{
"id" : "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"x" : "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4" ,
"y" : "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo" ,
"kty" : "EC" ,
"kid" : "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}
]
}
4.1.6 service
Example 5 : Example of service and serviceEndpoint properties
{
...
"service": [{
"id" : "did:example:123#edv" ,
"type" : "EncryptedDataVault" ,
"serviceEndpoint" : "https://edv.example.com/"
}]
}
4.2 Verification relationships
These are properties that express the relationship between the DID subject and a
verification method using a
verification relationship .
4.2.1 assertionMethod
Example 6 : Example of assertionMethod property
{
...
"publicKey" : [{
"id" : "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"x" : "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4" ,
"y" : "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo" ,
"kty" : "EC" ,
"kid" : "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"assertionMethod" : [{
"id" : "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4" ,
"type" : "Ed25519VerificationKey2018" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "BYEz8kVpPqSt5T7DeGoPVUrcTZcDeX5jGkGhUQBWmoBg"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.2 authentication
Example 7 : Example of authentication property
{
...
"publicKey" : [{
"id" : "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"x" : "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4" ,
"y" : "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo" ,
"kty" : "EC" ,
"kid" : "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"authentication" : [{
"id" : "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4" ,
"type" : "Ed25519VerificationKey2018" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "BYEz8kVpPqSt5T7DeGoPVUrcTZcDeX5jGkGhUQBWmoBg"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.3 capabilityDelegation
Example 8 : Example of capabilityDelegation property
{
...
"publicKey" : [{
"id" : "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"x" : "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4" ,
"y" : "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo" ,
"kty" : "EC" ,
"kid" : "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"capabilityDelegation" : [{
"id" : "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4" ,
"type" : "Ed25519VerificationKey2020" ,
"controller" : "did:example:123" ,
"publicKeyMultibase" : "z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.4 capabilityInvocation
Example 9 : Example of capabilityInvocation property
{
...
"publicKey" : [{
"id" : "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"x" : "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4" ,
"y" : "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo" ,
"kty" : "EC" ,
"kid" : "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}],
"capabilityInvocation" : [{
"id" : "did:example:123#z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4" ,
"type" : "Ed25519VerificationKey2020" ,
"controller" : "did:example:123" ,
"publicKeyMultibase" : "z6MkpzW2izkFjNwMBwwvKqmELaQcH8t54QL5xmBdJg9Xh1y4"
},
"did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
]
}
4.2.5 keyAgreement
{
...
"keyAgreement": [
{
"id" : "did:example:123#zC9ByQ8aJs8vrNXyDhPHHNNMSHPcaSgNpjjsBYpMMjsTdS" ,
"type" : "X25519KeyAgreementKey2019" ,
"controller" : "did:example:123" ,
"publicKeyMultibase" : "zC9ByQ8aJs8vrNXyDhPHHNNMSHPcaSgNpjjsBYpMMjsTdS"
}
]
}
4.3 Verification method properties
These properties are for use on a verification method object, in the value of
verificationMethod
.
4.3.1 publicKeyJwk
{
"id": "did:example:123#_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A" ,
"type" : "JsonWebKey2020" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "Ed25519" ,
"x" : "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ" ,
"kty" : "OKP" ,
"kid" : "_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A"
}
},
4.3.3 publicKeyHex
{
"@context" :[
"https://www.w3.org/ns/did/v1" ,
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id" :"did:example:123" ,
"publicKey" :[{
"id" : "did:example:123#vm-2" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1RecoveryMethod2020" ,
"publicKeyHex" : "027560af3387d375e3342a6968179ef3c6d04f5d33b2b611cf326d4708badd7770"
}]
}
4.3.5 blockchainAccountId
Example 13 : Example of blockchainAccountId property
{
"@context" :[
"https://www.w3.org/ns/did/v1" ,
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id" :"did:example:123" ,
"publicKey" :[{
"id" : "did:example:123#vm-3" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1RecoveryMethod2020" ,
"blockchainAccountId" :"0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb@eip155:1"
}]
}
4.3.6 ethereumAddress
This property is deprecated in favor of blockchainAccountId
.
{
"@context" :[
"https://www.w3.org/ns/did/v1" ,
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id" :"did:example:123" ,
"publicKey" :[{
"id" : "did:example:123#vm-3" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1RecoveryMethod2020" ,
"ethereumAddress" : "0xF3beAC30C498D9E26865F34fCAa57dBB935b0D74"
}]
}
4.4 Service properties
These properties are for use on a service object, in the value of
service
.
4.4.1 serviceEndpoint
Example 15 : Example of service and serviceEndpoint properties
{
...
"service": [{
"id" : "did:example:123#edv" ,
"type" : "EncryptedDataVault" ,
"serviceEndpoint" : "https://edv.example.com/"
}]
}
5. Property Values
5.1 Verification method types
These are values to be used for the type
in a verification method object.
5.1.1 JsonWebKey2020
Issue
ISSUE 240 on DID Core : The duplication and/or possible interaction of properties held in a JWK and a verification method are an active topic of discussion in the Working Group. Implementers are cautioned that the behavior of values associated with this property are not stable and might change in the future.
Do not include private or extraneous information in verification methods.
The class of private information related to JWKs is defined
here .
{
"id" : "did:example:123#_TKzHv2jFIyvdTGF1Dsgwngfdg3SH6TpDv0Ta1aOEkw" ,
"type" : "JsonWebKey2020" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "P-256" ,
"x" : "38M1FDts7Oea7urmseiugGW7tWc3mLpJh6rKe7xINZ8" ,
"y" : "nDQW6XZ7b_u2Sy9slofYLlG03sOEoug3I0aAPQ0exs4" ,
"kty" : "EC" ,
"kid" : "_TKzHv2jFIyvdTGF1Dsgwngfdg3SH6TpDv0Ta1aOEkw"
}
}
5.1.2 EcdsaSecp256k1VerificationKey2019
Example 17 : Example of EcdsaSecp256k1VerificationKey2019 class
{
"id" : "did:example:123#WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"x" : "NtngWpJUr-rlNNbs0u-Aa8e16OwSJu6UiFf0Rdo1oJ4" ,
"y" : "qN1jKupJlFsPFc1UkWinqljv4YE0mq_Ickwnjgasvmo" ,
"kty" : "EC" ,
"kid" : "WjKgJV7VRw3hmgU6--4v15c0Aewbcvat1BsRFTIqa5Q"
}
}
5.1.3 Ed25519VerificationKey2018
Example 18 : Example of Ed25519VerificationKey2018 class
{
"id" : "did:example:123#ZC2jXTO6t4R501bfCXv3RxarZyUbdP2w_psLwMuY6ec" ,
"type" : "Ed25519VerificationKey2018" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
}
5.1.4 Bls12381G1Key2020
{
"id" : "did:example:123#z3tEGVtEKzdhJB2rT5hLVjwQPis8k7bTM16t7vDZrQaoddk6wZ7or6xPPs1P8H9U16Xe75" ,
"type" : "Bls12381G1Key2020" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "7bXhTVonHPizXP72AE92PPmRiaXipC519yU7F6NxUFExWpyQo57LuKKBoTyuZ3uWm9" ,
}
5.1.5 Bls12381G2Key2020
{
"id" : "did:example:123#zUC7K51WYEsj8y6KPVa1XfwdW5ZJrW5kSbMV619j128T6atCLLXJjjovMZsJ3Ay4STdngRkvM4ygT4qm1mk6HR8FvipSY435nLgYS1TTcaqJAzDWzM1iB9vh3hTL1DEKitwn56i" ,
"type" : "Bls12381G2Key2020" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "25ETdUZDVnME6yYuAMjFRCnCPcDmYQcoZDcZuXAfeMhXPvjZg35QmZ7uctBcovA69YDM3Jf7s5BHo4u1y89nY6mHiji8yphZ4AMm4iNCRh35edSg76Dkasu3MY2VS9LnuaVQ" ,
}
5.1.6 GpgVerificationKey2020
{
"@context" :[
"https://www.w3.org/ns/did/v1" ,
"https://gpg.jsld.org/contexts/lds-gpg2020-v0.0.jsonld"
],
"id" :"did:example:123" ,
"publicKey" :[{
"id" : "did:example:123#989ed1057a294c8a3665add842e784c4d08de1e2" ,
"type" : "GpgVerificationKey2020" ,
"controller" : "did:example:123" ,
"publicKeyGpg" : "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: OpenPGP.js v4.9.0\r\nComment: https://openpgpjs.org\r\n\r\nxjMEXkm5LRYJKwYBBAHaRw8BAQdASmfrjYr7vrjwHNiBsdcImK397Vc3t4BL\r\nE8rnN......v6\r\nDw==\r\n=wSoi\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n"
}]
}
5.1.7 RsaVerificationKey2018
{
"id": "did:example:123#key-0",
"type": "RsaVerificationKey2018",
"controller": "did:example:123",
"publicKeyJwk": {
"kty":"RSA",
"e":"AQAB",
"use":"sig",
"kid":"tNksV42EUs3Xct9AkgZyFWglItRGMxVZ1A1XM68SNq0
"n":"kO2d_qQTEBjYFGcoY_da7ziFY4L2QX14K7snCee09n-cY2eP-oJXk8T2_lL20YnpYhf4i
jhkWHGU8kY8-FWPRrzSeu3JUMVSZoqTgoAiKWdnSLNvPVxvGuD2CiA3T6AkwUC03D2AkOLCcJV
8h_hxUEPeDawF7ArpuJW5DXzEJjE7gOjN4r6d7VB6sd5y-3la54H2ADz2amHLdBWs30fL4BRBH
lVdx0YmF37V4u5yvnnb5Iyr3kBXJes8t0MUMPkjqEEXRmukpKUzZYNpWDXY0tVcXeK5sRx0DAn
lNgNNf14-vsyjGkj2Rz0oGW73jjWa8dw-yVlDEHyIkQU9-UY4dFXbVjdIO8j_5ghh62o1T7Y4w
5CWMc-FxPE3LHe-_teW97X__NN-ToYgfi42IvV2mYOdQMCbvnvY2oMdK3b9wmeVi0marToauL5
LMg5xHDKopmIR7E3VyRtNYwDFAZ89kadcbSrZ8zTR5APaB7Tmp2L2ZfXKxqKQuxlFTTCcZtg4e
5AN8QuYdI18DEDQn2umUU_Twj7k4CXvuIKVL8p4yRHC4CHAGIm9cH_t11dF3wXygaENVOGRXQu
0g1iKq0mO2rWpOqkGJ5uXMFb5lx54i8uOjCdZ9y2el28xA55Ve95KCxeTHp997Bn3TIgbeQ-B_
-3PBVTuuAAH8y9fFNKtu5E"
}
}
5.1.8 X25519KeyAgreementKey2019
Issue 164 : X25519KeyAgreementKey2019 has no normative definition Normative definition in a suite is required for registration, this entry should be updated or removed.
Normative Definition
JSON-LD
Normative definition pending
DID Core
{
...
"keyAgreement": [
{
"id" : "did:example:123#zC9ByQ8aJs8vrNXyDhPHHNNMSHPcaSgNpjjsBYpMMjsTdS" ,
"type" : "X25519KeyAgreementKey2019" ,
"controller" : "did:example:123" ,
"publicKeyBase58" : "9hFgmPVfmBZwRvFEyniQDBkz9LmV7gDEqytWyGZLmDXE"
}
]
}
5.1.9 SchnorrSecp256k1VerificationKey2019
5.1.10 EcdsaSecp256k1RecoveryMethod2020
{
"@context" : [
"https://www.w3.org/ns/did/v1" ,
"https://identity.foundation/EcdsaSecp256k1RecoverySignature2020#"
],
"id" :"did:example:123" ,
"publicKey" : [
{
"id" : "did:example:123#vm-1" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1RecoveryMethod2020" ,
"publicKeyJwk" : {
"crv" : "secp256k1" ,
"kid" : "JUvpllMEYUZ2joO59UNui_XYDqxVqiFLLAJ8klWuPBw" ,
"kty" : "EC" ,
"x" : "dWCvM4fTdeM0KmloF57zxtBPXTOythHPMm1HCLrdd3A" ,
"y" : "36uMVGM7hnw-N6GnjFcihWE3SkrhMLzzLCdPMXPEXlA"
}
},
{
"id" : "did:example:123#vm-2" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1RecoveryMethod2020" ,
"publicKeyHex" : "027560af3387d375e3342a6968179ef3c6d04f5d33b2b611cf326d4708badd7770"
},
{
"id" : "did:example:123#vm-3" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1RecoveryMethod2020" ,
"ethereumAddress" : "0xF3beAC30C498D9E26865F34fCAa57dBB935b0D74"
}
]
}
5.1.11 VerifiableCondition2021
{
"id" : "did:example:123#1" ,
"controller" : "did:example:123" ,
"type" : "VerifiableCondition2021" ,
"conditionAnd" : [{
"id" : "did:example:123#1-1" ,
"controller" : "did:example:123" ,
"type" : "VerifiableCondition2021" ,
"conditionOr" : [{
"id" : "did:example:123#1-1-1" ,
"controller" : "did:example:123" ,
"type" : "EcdsaSecp256k1VerificationKey2019" ,
"publicKeyBase58" : "5JBxKqYKzzoHrzeqwp6zXk8wZU3Ah94ChWAinSj1fYmyJvJS5rT"
}, {
"id" : "did:example:123#1-1-2" ,
"controller" : "did:example:123" ,
"type" : "Ed25519VerificationKey2018" ,
"publicKeyBase58" : "PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCzamP7YTHkZc78MJgqWsAy"
}]
}, {
"id" : "did:example:123#1-2" ,
"controller" : "did:example:123" ,
"type" : "Ed25519VerificationKey2018" ,
"publicKeyBase58" : "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
}]
}
5.2 Service types
These are values to be used for the type
property
in a service object.
5.2.1 LinkedDomains
Example 26 : Example of service and serviceEndpoint properties
{
"@context" : ["https://www.w3.org/ns/did/v1" ,"https://identity.foundation/.well-known/did-configuration/v1" ],
"id" : "did:example:123" ,
"verificationMethod" : [{
"id" : "did:example:123#456" ,
"type" : "JsonWebKey2020" ,
"controller" : "did:example:123" ,
"publicKeyJwk" : {
"kty" : "OKP" ,
"crv" : "Ed25519" ,
"x" : "VCpo2LMLhn6iWku8MKvSLg2ZAoC-nlOyPVQaO3FxVeQ"
}
}],
"service" : [
{
"id" :"did:example:123#foo" ,
"type" : "LinkedDomains" ,
"serviceEndpoint" : {
"origins" : ["https://foo.example.com" , "https://identity.foundation" ]
}
},
{
"id" :"did:example:123#bar" ,
"type" : "LinkedDomains" ,
"serviceEndpoint" : "https://bar.example.com"
}
]
}
5.2.2 DIDCommMessaging
Example 27 : Example of service and serviceEndpoint properties
{
"@context" :[
"https://www.w3.org/ns/did/v1" ,
"https://didcomm.org/messaging/contexts/v2"
],
...
"type" :"DIDCommMessaging" ,
"serviceEndpoint" :"http://example.com/path" ,
"accept" :[
"didcomm/v2" ,
"didcomm/aip2;env=rfc587"
],
"routingKeys" :[
"did:example:somemediator#somekey"
]
...
}
6. Representations
This table provides a reference for media types and the associated specifications for producing and consuming those representations.
Media Type
Specification
application/did+json
DID Core
application/did+ld+json
DID Core
application/did+cbor
DID Core
application/did+dag+cbor
Issue 252 : application/did+dag+cbor needs specification URL
application/did+yaml
Issue 253 : application/did+yaml needs specification URL
7. Representation-Specific Entries
7.1 JSON
These are entries in DID documents that are specific to the
JSON representation .
(No entries yet)
7.2 JSON-LD
These are entries in DID documents that are specific to the
JSON-LD representation .
7.2.1 @context
The following values are acceptable values for the @context
entry as
a JSON
String or first item of a JSON Array ,
represented as a JSON
String .
Example 28 : Example of @context in the JSON-LD representation
{
"@context" : [
"https://www.w3.org/ns/did/v1" ,
"https://example.com/blockchain-identity/v1"
],
...
}
7.3 CBOR
These are entries in DID documents that are specific to the
CBOR representation .
(No entries yet)
11. Parameters
11.1 hl
did:example:123?hl=zQmWvQxTqbG2Z9HPJgG57jjwR154cKhbtJenbyYTWkjgF3e
11.2 service
did:example:123?service=agent
11.3 versionId
did:example:123?versionId=4
11.4 versionTime
did:example:123?versionTime=2016-10-17T02:41:00Z
11.5 relativeRef
did:example:123?service=files&relativeRef=%2Fmyresume%2Fdoc%3Fversion%3Dlatest%23intro
11.6 initial-state
did:example:123?initial-state=eyJkZWx0YV9oYXNoIjoiRWlDUlRKZ2Q0U0V2YUZDLW9fNUZjQnZJUkRtWF94Z3RLX3g...
11.8 signed-ietf-json-patch
Example 51 : Example of signed-ietf-json-patch parameter
did:example:123?signed-ietf-json-patch=eyJraWQiOiJkaWQ6ZXhhbXBsZTo0NTYjX1FxMFVMMkZxNjUxUTBGamQ2VH...
11.9 resource
Example 52 : A DID URL with a 'resource' DID parameter
did:foo:21tDAKCERh95uGgKbJNHYp?resource=true
12. DID Methods
This table summarizes the DID method specifications currently in development.
The links will be updated as subsequent Implementer’s Drafts are produced.
The normative requirements for DID method specifications can be found in
Decentralized Identifiers
v1.0: Methods [DID-CORE ]. DID methods that do not meet these requirements
will not be accepted. We encourage DID method authors to provide an email
address in the Author Links column, as this helps with maintenance.
Issue
How will we automate the update of the namespace reservations and keep them in sync with the reserved namespace in the Abstract Data Model? See issue #152 .
Method Name
Status
DLT or Network
Author Links
Link
did:3:
PROVISIONAL
Ceramic Network
Joel Thorstensson
3ID DID Method
did:abt:
PROVISIONAL
ABT Network
ArcBlock
ABT DID Method
did:aergo:
PROVISIONAL
Aergo
Blocko
Aergo DID Method
did:ala:
PROVISIONAL
Alastria
Alastria National Blockchain Ecosystem
Alastria DID Method
did:bba:
PROVISIONAL
Ardor
Attila Aldemir
BBA DID Method
did:bid:
PROVISIONAL
bif
teleinfo caict
BIF DID Method
did:bnb:
PROVISIONAL
Binance Smart Chain
Ontology Foundation
Binance DID Method
did:bryk:
PROVISIONAL
bryk
Marcos Allende, Sandra Murcia, Flavia Munhoso, Ruben Cessa
bryk DID Method
did:btcr:
PROVISIONAL
Bitcoin
Christopher Allen, Ryan Grant, Kim Hamilton Duffy
BTCR DID Method
did:ccp:
PROVISIONAL
Quorum
Baidu, Inc.
Cloud DID Method
did:celo:
PROVISIONAL
Celo
Ontology Foundation
Celo DID Method
did:com:
PROVISIONAL
commercio.network
Commercio Consortium
Commercio.network DID Method
did:corda:
PROVISIONAL
Corda
Nitesh Solanki,Moritz Platt,Pranav Kirtani
Corda DID method
did:did:
PROVISIONAL
Decentralized Identifiers
Spruce Systems, Inc.
DID Identity DID Method
did:dock:
PROVISIONAL
Dock
Dock.io
Dock DID Method
did:dom:
PROVISIONAL
Ethereum
Dominode
did:echo:
PROVISIONAL
Echo
Echo Technological Solutions LLC
Echo DID Method
did:elastos:
PROVISIONAL
Elastos ID Sidechain
Elastos Foundation
Elastos DID Method
did:elem:
PROVISIONAL
Element DID
Transmute
ELEM DID Method
did:emtrust:
PROVISIONAL
Hyperledger Fabric
Halialabs Pte Ltd.
Emtrust DID Method
did:eosio:
PROVISIONAL
EOSIO
Gimly Blockchain
EOSIO DID Method
did:evan:
PROVISIONAL
evan.network
evan GmbH
evan.network DID Method
did:example:
PROVISIONAL
DID Specification
W3C Credentials Community Group
DID Specification
did:erc725:
PROVISIONAL
Ethereum
Markus Sabadello , Fabian Vogelsteller , Peter Kolarov
erc725 DID Method
did:etho:
PROVISIONAL
Ethereum
Ontology Foundation
ETHO DID Method
did:ethr:
PROVISIONAL
Ethereum
uPort
ETHR DID Method
did:factom:
PROVISIONAL
Factom
Sphereon, Factomatic, Factom Inc
Factom DID Method
did:future:
PROVISIONAL
Netease Chain
Netease Blockchain Team
Future DID Method
did:gatc:
PROVISIONAL
Ethereum, Hyperledger Fabric, Hyperledger Besu, Alastria
Gataca
Gataca DID Method
did:git:
WITHDRAWN
DID Specification
Internet Identity Workshop
Git DID Method
did:github:
PROVISIONAL
Github
Transmute
GitHub DID Method
did:grg:
PROVISIONAL
GrgChain
GRGBanking Blockchain Express Co. Ltd.
GrgChain DID Method
did:hedera:
PROVISIONAL
Hedera Hashgraph
Hedera Hashgraph, Swisscom Blockchain AG
Hedera Hashgraph DID Method
did:holo:
PROVISIONAL
Holochain
Holo.Host
Holochain DID Method
did:hpass:
PROVISIONAL
Hyperledger Fabric
IBM
hpass DID Method
did:icon:
PROVISIONAL
ICON
ICONLOOP
ICON DID Method
did:infra:
PROVISIONAL
InfraBlockchain
Blockchain Labs
Infra DID Method
did:io:
PROVISIONAL
IoTeX
IoTeX Foundation
IoTeX DID Method
did:ion:
PROVISIONAL
Bitcoin
Various DIF contributors
ION DID Method
did:iota:
PROVISIONAL
IOTA
IOTA Foundation
IOTA DID Method
did:ipid:
PROVISIONAL
IPFS
TranSendX
IPID DID method
did:is:
PROVISIONAL
Blockcore
Blockcore
Blockcore DID Method
did:iwt:
PROVISIONAL
InfoWallet
Raonsecure
InfoWallet DID Method
did:jlinc:
PROVISIONAL
JLINC Protocol
Victor Grey
JLINC Protocol DID Method
did:jnctn:
PROVISIONAL
Jnctn Network
Jnctn Limited
JNCTN DID Method
did:jolo:
PROVISIONAL
Ethereum
Jolocom
Jolocom DID Method
did:keri:
PROVISIONAL
Ledger agnostic
Dr. Sam Smith, Charles Cunningham, Phil Feairheller
KERI DID Method
did:key:
PROVISIONAL
Ledger independent DID method based on public/private key pairs
Rick Astley (thank you for your inspiration), Manu Sporny, Dmitri Zagidulin, Dave Longley, Orie Steele
DID key method
did:kilt:
PROVISIONAL
KILT Blockchain
BOTLabs GmbH
KILT DID Method
did:klay:
PROVISIONAL
Klaytn
Ontology Foundation
Klaytn DID Method
did:kr:
PROVISIONAL
Korea Mobile Identity System
Ministry of the Interior and Safety, korea
Korea Mobile Identity System DID Method
did:life:
PROVISIONAL
RChain
lifeID Foundation
lifeID DID Method
did:lit:
PROVISIONAL
LEDGIS
IBCT
LIT DID Method
did:meme:
PROVISIONAL
Ledger agnostic
DID Meme Maintainers
Meme DID Method
did:meta:
PROVISIONAL
Metadium
Metadium Foundation
Metadium DID Method
did:moac:
PROVISIONAL
MOAC
MOAC Blockchain Tech, Inc.
MOAC DID Method
did:monid:
PROVISIONAL
Ethereum
Min Ju
MONiD DID Method
did:morpheus:
PROVISIONAL
Hydra
Internet of People
Morpheus DID Method
did:mydata:
PROVISIONAL
iGrant.io
iGrant.io
Data Agreement DID Method
did:near:
PROVISIONAL
NEAR
Ontology Foundation
NEAR DID Method
did:nft:
PROVISIONAL
Ceramic Network
Joel Thorstensson
NFT DID Method
did:ockam:
PROVISIONAL
Ockam
Ockam
Ockam DID Method
did:onion:
PROVISIONAL
Ledger agnostic
Blockchain Commons
Onion DID Method
did:ont:
PROVISIONAL
Ontology
Ontology Foundation
Ontology DID Method
did:omn:
PROVISIONAL
OmniOne
OmniOne
OmniOne DID Method
did:op:
PROVISIONAL
Ocean Protocol
Ocean Protocol
Ocean Protocol DID Method
did:orb:
PROVISIONAL
Ledger agnostic
SecureKey
Orb DID Method
did:panacea:
PROVISIONAL
Panacea
MediBloc
Panacea DID Method
did:peer:
PROVISIONAL
peer
Daniel Hardman
peer DID Method
did:pistis:
PROVISIONAL
Ethereum
Andrea Taglia, Matteo Sinico
Pistis DID Method
did:pkh:
PROVISIONAL
Ledger-independent generative DID method based on CAIP-10 keypair expressions
Wayne Chang, Charles Lehner, Juan Caballero
did:pkh method
did:polygon:
PROVISIONAL
Polygon (Previously MATIC)
AyanWorks, MATIC
Polygon DID Method
did:ptn:
PROVISIONAL
PalletOne
PalletOne
PalletOne DID Method
did:safe:
PROVISIONAL
Gnosis Safe
Gnosis Ltd.
SAFE DID Method
did:san:
PROVISIONAL
SAN Cloudchain
YLZ Inc.
SAN DID Method
did:schema:
PROVISIONAL
Multiple storage networks, currently public IPFS and evan.network IPFS
51nodes GmbH
Schema Registry DID Method
did:selfkey:
PROVISIONAL
Ethereum
SelfKey
SelfKey DID Method
did:signor:
PROVISIONAL
Ethereum, Hedera Hashgraph, Quorum, Hyperledger Besu
Cryptonics
Signor DID Method
did:sirius:
PROVISIONAL
ProximaX Sirius Chain
ProximaX Singapore Pte. Ltd.
ProximaX SiriusID DID Method
did:sol:
PROVISIONAL
Solana
Daniel Kelleher
SOL DID Method
did:sov:
PROVISIONAL
Sovrin
Mike Lodder
Sovrin DID Method
did:ssb:
PROVISIONAL
Secure Scuttlebutt
Charles E. Lehner
SSB DID Method
did:ssw:
PROVISIONAL
Initial Network
SK telecom
SSW DID Method
did:stack:
PROVISIONAL
Bitcoin
Jude Nelson
Blockstack DID Method
did:tangle:
PROVISIONAL
IOTA Tangle
BiiLabs Co., Ltd.
TangleID DID Method
did:tls:
PROVISIONAL
Ethereum
Ulrich Gallersdörfer, Kilian Käslin
TLS DID
Method
did:trust:
PROVISIONAL
TrustChain
TrustCerts GmbH
Trust DID Method
did:trustbloc:
PROVISIONAL
Hyperledger Fabric
SecureKey
TrustBloc DID Method
did:trx:
PROVISIONAL
TRON
Ontology Foundation
TRON DID Method
did:ttm:
PROVISIONAL
TMChain
Token.TM
TM DID Method
did:tyron:
PROVISIONAL
Zilliqa
Julio Cabrapan Duarte
tyronZIL DID-Method
did:twit:
PROVISIONAL
Twit
DID Twit GitHub
Twit DID Method
did:tys:
PROVISIONAL
DID Specification
Chainyard
TYS DID Method
did:tz:
PROVISIONAL
Tezos
Spruce Systems, Inc.
Tezos DID Method
did:unik:
PROVISIONAL
uns.network
Space Elephant SAS
UNIK DID Method
did:unisot:
PROVISIONAL
Bitcoin SV
UNISOT AS
UNISOT DID Method
did:uns:
PROVISIONAL
uns.network
Space Elephant SAS
UNS DID Method
did:uport:
DEPRECATED
Ethereum
uPort
did:v1:
PROVISIONAL
Veres One
Digital Bazaar
Veres One DID Method
did:vaa:
PROVISIONAL
bif
China Academy of Information and Communications Technology (CAICT)
VAA Method
did:vaultie:
PROVISIONAL
Ethereum
Vaultie Inc.
Vaultie DID Method
did:vid:
PROVISIONAL
VP
VP Inc.
VP DID Method
did:vivid:
PROVISIONAL
NEO2, NEO3, Zilliqa
Vivid
Vivid DID Method
did:vvo:
PROVISIONAL
Vivvo
Vivvo Application Studios
Vivvo DID Method
did:web:
PROVISIONAL
Web
Oliver Terbu, Mike Xu, Dmitri Zagidulin, Amy Guy
Web DID Method
did:wlk:
PROVISIONAL
Weelink Network
Weelink
Weelink DID Method
did:work:
PROVISIONAL
Hyperledger Fabric
Workday, Inc.
Workday DID Method
did:lac:
PROVISIONAL
LACChain Network
LACChain Alliance
LAC DID Method
↑