Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
The decentralized nature of DIDs has inspired a wide range of DID methods, as different innovators document novel approaches for using DIDs with different Verifiable Data Registries. At last count, there were 226 methods listed in the W3C extensions registry and countless others in use. This means that implementers are faced with the challenge of choosing which methods to support. This is true not only for components like DID Resolvers, which necessarily process method-specific features, but also for issuers and verifiers, who must decide independently with method meets their business needs for features like revocation, provenance, and cost.
How do implementers decide which methods are suitable for their use?
Applying the DID Method Rubric is one answer to that question. This document defines a coherent way to evaluate multiple DID methods on a feature-to-feature basis, tailored to the business context addressed by implementers.
The rubric presents a set of criteria which an Evaluator can apply to any DID Method based on the use cases most relevant to them. Rather than reducing this Evaluation to a single number, the rubric retains the sensibility that requirements for use tend to be multidimensional and many of the possible responses are not necessarily good or bad. It is up to the Evaluator to understand how each response in each criteria might illuminate favorable or unfavorable consequences for their needs.
While this rubric assists in the evaluation of many aspects of a DID Method, it is not intended to be exhaustive. Evaluators are encouraged to extend the framework to incorporate their own criteria (and hopefully share those criteria back to the community when possible).
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index.
This document was published by the Decentralized Identifier Working Group as a Group Note using the Note track.
This Group Note is endorsed by the Decentralized Identifier Working Group, but is not endorsed by W3C itself nor its Members.
The W3C Patent Policy does not carry any licensing requirements or commitments on this document.
This document is governed by the 18 August 2025 W3C Process Document.
This section is non-normative.
A rubric is a tool used in academia to communicate expectations and evaluate performance. It consists of a set of criteria to be evaluated, possible responses for each criteria, and a scoring guide explaining how to both choose and interpret each response. The act of evaluating a rubric, which we call an Evaluation, provides basis for self-evaluation, procurement decisions, or even marketing points. Written records of an evaluation, which we'll call an Evaluation Report, document how a particular subject is measured against the criteria. For students, a rubric helps to clarify how their work will be evaluated by others. For Evaluators, a rubric provides a consistent framework for investigating and documenting the performance of a subject against a particular set of criteria.
We were inspired to develop a rubric for decentralization when discussions about the requirements for decentralized identifiers, aka DIDs, led to intractable disagreement. It became clear that no single definition of "decentralized" would suffice for all of the motivations that inspired developers of DID Methods to work on a new decentralized approach to identity. Despite this challenge, two facts remained clear:
Rather than attempt to force a definition of "decentralized" that might work for many but would alienate others, the group set out to capture the measurable factors that could enable Evaluators to judge the decentralization of DID Methods based on their own independent requirements, with minimal embedded bias.
This approach identified several useful criteria about methods that have nothing to do with decentralization. Rather than create a separate rubric for these criteria, the DID WG extended the scope of the rubric to include any criteria that might be useful for evaluators.
Pick the most important criteria for your use, ask each question, and select the most appropriate response. Do this for all of the DID Methods under consideration.
Each Evaluation should start with an explicit framing of the use under consideration. Are you evaluating the Method for use in Internet-of-Things (IoT)? For school childrens' extra-curricular activities? For international travel? The use, or set of uses, will directly affect how some of the questions are answered.
Where a given Method offers variability, such as multiple networks for the same Method, then evaluate each variant. For example, did:ethr supports Ethereum mainnet, multiple testnets and permissioned EVM-compliant networks such as Quorum. To apply a criteria to did:ethr, you will evaluate it against all the variations that matter to you. Each variation should get its own Assessment. This applies to Level 2 Networks that can operate on multiple Level 1 Networks as well as DID Methods that directly offer support for multiple underlying DID registries.
When creating an Evaluation Report, we recommend noting both the Evaluator and the date of the Evaluation. Many of the criteria are subjective and all of them may evolve. Tracking who made the Evaluation and when they made it will help readers better understand any biases or timeliness issues that may affect the applicability of the Evaluation.
Be selective and acknowledge the subjective. Evaluations do not need to be exhaustive. There is no requirement to answer all the questions. Simply answer the ones most relevant to the use contemplated. Similarly, understand that any recorded Evaluation is going to represent the biases of the Evaluator in the context of their target use. Even the same Evaluator, evaluating the same Method for a different use, may come up with slightly different answers—for example, that which is economically accessible for small businesses might not be cost-effective for refugees, and that could affect how well-suited a given Method is for a specific use.
Finally, note that the rubric is not just about decentralization. There are security, privacy, and economic concerns that are considered. However, no such list of criteria could ever be exhaustive and none should be considered "complete". We encourage Evaluators to use this rubric as a starting point for their own work rather than the final say in the merit of any given Method.
In short, use this rubric to help understand if a given DID Method is appropriate for your needs, whatever your use cases may be.
To record and report an Evaluation, we recommend two possible formats, either comprehensive or comparative.
A comprehensive Evaluation applies a single set of criteria to just one Method. This set is chosen by the Evaluator; it need not be all possible criteria, but it is all relevant criteria as judged by the Evaluator.
A comparative Evaluation includes multiple Methods in the same table to easily compare and contrast two or more different Methods. This may include any number of criteria.
In addition to the selected criteria, we recommend each report specify
We have grouped our criteria into several categories:
Evaluators should consider criteria from all groups, as best fits your use cases.
Three categories cover how a given Method is governed: Rulemaking, Operations, and Enforcement. Our approach parallels the same separation of authority embodied in the tripartite governments.
Rulemaking addresses who makes the rules and how. (This is the legislative branch.)
Operations addresses how those rules are executed and how everyone knows that they are carried out. (This is the executive branch.)
Enforcement addresses how we find and respond to rule breaking. (This is the judicial branch in the US.)
This mental model is key to understanding the criteria of each section as well as why we included some criteria and not others.
The remaining categories each covers different areas worth considering when evaluating DID Methods.
Design addresses the method as designed. In other words, the output of the rulemaking: what rules apply to this DID method?
Adoption & Diversity covers questions related to how widely a DID Method is used.
Security influences overall trust in the ecosystem. Different DID methods offer different security guarantees, or guarantees of different strengths.
Privacy addresses the ability of a DID method to ensure various privacy mechanisms. When DIDs are used as identifiers for people, it becomes important to consider what tools a DID method offers to operate at different levels of privacy.
When evaluating the governance of DID Methods, three potentially independent layers should be considered: the specification, the network, and the registry.
For Rulemaking, the criteria should be evaluated against all three of the above layers.
For Operations, the criteria should be evaluated against the network and the registry. The specification is taken as a given (it is the core output of Rulemaking).
For Adoption, the criteria should be evaluated for each major software component: wallet, resolver, and registry.
For the examples in the rest of this document we refer to a set of Methods that are familiar to the authors and exhibit interesting characteristics for Evaluation. See the tables below.
The following sources provided example evaluations for this rubric. These are not presented as objective fact, but rather as attempts by contributors to illustrate noteworthy differences using their subjective judgement. Additional contributions that flow into the registry should include a section that documents their source with an additional row in the table.
| Relative ID | Title | Evaluator(s) | Evaluation Date | Evaluation URL |
|---|---|---|---|---|
| eval-1 | DID Method Rubric | Joe Andrieu | 2021-11-19 | https://www.w3.org/TR/2021/NOTE-did-rubric-20211119/ |
| eval-2 | DID Method Rubric | Daniel Hardman | 2021-11-19 | https://www.w3.org/TR/2021/NOTE-did-rubric-20211119/ |
| eval-3 | VeresOne Rubric Evaluation | Joe Andrieu, Eric Schuh | 2022-03-01 | https://didevaluations.com/evals/v1.2022.03.01.pdf |
| eval-4 | DID Web Rubric Evaluation | Joe Andrieu, Eric Schuh | 2022-03-01 | https://didevaluations.com/evals/web.2022.03.01.pdf |
| eval-5 | DID Ion Rubric Evaluation | Joe Andrieu, Eric Schuh | 2022-03-01 | https://didevaluations.com/evals/ion.2022.03.01.pdf |
This is not a comprehensive list (see the DID Specification Registries for a current list of registered Methods). Rather, this section aggregates the methods used in Example Assessments of current criteria for easy reference.
| Method | Specification | Network | Registry |
|---|---|---|---|
| did:btcr | DID Method BTCR | Bitcoin | Bitcoin |
| did:ethr | ethr DID Method Spec | Ethereum | Specific smart contracts for each network. |
| did:git | DID git Spec | git (an open source version control system) | Any Method-compliant git repository |
| did:hedera | Hedera Hashgraph DID Method Specification | Hashgraph, Inc | DIDs written to a ledger that uses Hashgraph consensus as an alternative to traditional blockchain. |
| did:indy | did:indy Method Spec | Hyperledger Indy community | Supersedes did:sov to service all Indy-based ledgers. |
| did:ion | did:ion Method Spec | Bitcoin and IPFS | Bitcoin and IPFS |
| did:jlinc | JLINC DID Method Specification | JLincLabs | Register DIDs over the JLinc protocol for sharing data with terms and conditions. |
| did:jolo | Jolocom DID Method Specification | Ethereum | Specific smart contracts for different networks and subnetworks. |
| did:key | The did:key Method v0.7 | CCG work item | Use a keypair as a DID. |
| did:peer | Peer DID Method Spec | n/a (communications can flow over any agreeable channel) | Held by each peer |
| did:pkh | did:pkh Method Specification | Spruce ID | Wrap an identifier (e.g., payment address) from one of many existing blockchains in did format. |
| did:sov | Sovrin DID Method Spec | Hyperledger Indy | A particular instance of Hyperledger Indy |
| did:trustbloc | TrustBloc DID Method Specification 0.1 | Trustbloc | Persist DIDs via Sidetree wrapper around a permissioned ledger. |
| did:twit | Twit DID method specification | Gabe Cohen | Publish a DID via Twitter feed. |
| did:v1.production | did:v1 Method Specification | https://veres.one/network/ | Same as network |
| did:v1.testnet | did:v1 Method Specification | https://veres.one/network/ | Same as network |
| did:web | did:web Method Specification | CCG work item | DIDs associated with control of a domain name (DNS). |
The term "criteria" is often treated as both a singular and a plural noun. In the singular, we say "The most important criteria is the buyer's age". This singular use of criteria has been in use for over half a century https://www.merriam-webster.com/dictionary/criterion#usage-1 In the plural we say "That proposal doesn't meet all of the criteria." Sometimes people use both in the same sentence: "Select one criteria from the list of criteria."
However, for formal use, "criteria" is more broadly accepted as plural while "criterion" is singular. By this style rule, the last sentence in the previous paragraph should be "Select one criterion from the list of criteria."
As editors of a Note published by the World Wide Web Consortium, we are torn. We would prefer to use rigorous grammar and be consistent in doing so. At the same time, we find attempts to enforce the formal rule sometimes leads people to using the inverse, such as "Select a criteria from the list of criterion." This is the exact opposite of our desired outcome.
In our own work with implementers and developers of the DID Core specification, we have found that the singular "criteria" is readily accepted and understood and leads to no confusion when used, even alongside plural usage. Since the DID Method Rubric is, at its core, a set of criteria with ample reason to refer to, for example, "Criteria #23", we find the combined singular and plural use is cleaner (just stick with "criteria"), less confusing, and more aligned with common usage among our audience.
As such, throughout the DID Method Rubric, we use the term "criteria" to refer to both singular instances of criteria and plural sets of criteria.
This registry — the DID Method Rubric Registry — provides a public vehicle for publishing updated DID Method Rubric criteria. In order to add or update a criteria, a submitter 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:
href anchor in
the HTML for the criteria itself. See the sections below
on identifiers and versioning. Subcomponents, such as
questions, responses, relevance, and examples, are not
separately versioned; any change to a subcomponent
triggers an appropriate version change to its primary
component.
retired.js file, with a permalink to the last
version of the registry where each criteria was active.
The primary components managed by this registry are criteria for evaluating DID Methods, with as many as eight subcomponents: name, id, version, question, assessmentTemplate, response, relevance, exampleAssessments, and, optionally, a source. In addition, the DID Method Rubric maintains a list of cited DID methods and evaluations. The criteria are independently identified and versioned (see those sections for details) while references cited in the criteria themselves link to their full citation in the appropriate list.
rubric/criteria/ directory. The file
name MUST be the criteria's number (from its
id, e.g., 1 for criteria-1) followed by a
kebab-case slug of the criteria name and the
.json file extension (e.g.,
1-open-contribution-participation.json).
id to the appropriate category in
rubric/rubric-outline.json. The rubric
outline determines the organization and ordering of
criteria within the rendered document. A criteria file
that is not referenced in the outline will not appear
in the Rubric.
The following is an example of a complete criteria JSON file:
{
"name": "Offline creation",
"id": "https://www.w3.org/TR/did-rubric#criteria-42",
"version": "1.0.0",
"source": "https://didcriteria.com/criteria/7",
"question": {
"question": "Does the Method require network communications to create a DID?"
},
"response": {
"type": "multipleChoice",
"possibleResponses": [
{
"label": "A",
"meaning": "No. Creation is expected to be off-line."
},
{
"label": "B",
"meaning": "Yes. Creation requires network coordination with a single party."
},
{
"label": "C",
"meaning": "Yes. Creation requires network coordination with multiple parties."
}
]
},
"assessmentTemplate": {
"columns": [
{
"heading": "Method",
"type": "method",
"propertyRef": "method"
},
{
"heading": "Spec.",
"type": "enhancedLetter",
"propertyRef": "spec"
},
{
"heading": "Notes",
"type": "note",
"propertyRef": "note"
}
]
},
"relevance": "Communication is costly, with increasing costs the more parties are involved.",
"exampleAssessments": [
{
"id": "a-29",
"method": "did:v1.testnet",
"spec": "A",
"note": "Veres One DID creation is a local cryptographic process.",
"evaluationCitation": "#eval-3"
},
{
"id": "a-31",
"method": "did:web",
"spec": "B+",
"note": "The DID controller must be able to communicate with the web server.",
"evaluationCitation": "#eval-4"
}
]
}
Each criteria needs a human-friendly, short, descriptive name that captures the essence of the criteria as concisely as possible.
The criteria id must be explicit, unique, and persistent. See the section on Identifiers for details. Criteria ids under the DID Method Rubric namespace will be assigned by the rubric maintainers.
The criteria version must increment, as appropriate, any time the criteria, or any of its subcomponents, is updated. See the section on Versioning for details.
The key question for evaluating the criteria. This property is REQUIRED.
Any additional instructions for how the evaluator should interpret or apply the question when making their assessment. This property is OPTIONAL.
An ordered array of column definitions. Each column
specifies a heading, a type, and a property reference.
This property is REQUIRED. The columns array MUST
include a column with a type of method as
the first entry, which identifies the specific DID
method being assessed.
The display label for the column in the assessment table. This property is REQUIRED.
The type of data expected in this column. This property is REQUIRED. The following types are currently defined, but additional types MAY be introduced as needed:
method
enhancedLetter
multipleChoice
note
The property name used in example assessments to provide the value for this column. This property is REQUIRED.
This subcomponent defines the options an evaluator has for responding to the criteria's question.
The type of response expected from evaluators. This property is REQUIRED. Currently defined types include:
multipleChoice
An ordered array of the possible responses available to
evaluators. This property is REQUIRED when the response
type is multipleChoice.
A short identifier for the response. Labels MUST start with "A" and progress sequentially through the English alphabet. This property is REQUIRED.
A description of what the label represents. This property is REQUIRED.
This subcomponent explains why this criteria is useful. Readers should be able to understand the extent to which this particular criteria is applicable to their situation.
This subcomponent lists example assessments of different DID methods against this criteria. Each example assessment is an evaluation of a specific DID method, structured according to the criteria's assessmentTemplate. The set of example assessments is presented as a table for easy comparison across methods.
This OPTIONAL subcomponent tracks the provenance of the criteria. Criteria in the Rubric may be independently versioned and developed externally under their own identifiers. When such iterations are folded back into the Rubric, the source MUST point to the external origin so that the versioning history is preserved.
The value MUST be either:
"."
If no source is provided, the default value is
".".
Each criteria must be explicitly, uniquely, and persistently identified using incremental numbers. New criteria should use the next available increment based on the highest numbered identifier in the current publication.
Previous numbered identifiers MUST NOT be re-used, even if the criteria so identified are no longer published; this maintains the persistent linkability of previously published versions. Such "retired" criteria MAY be listed in a Prior Criteria section linking directly to the latest published Rubric containing the retired criteria; this Prior Criteria section MUST also contain an anchor with the canonical id.
The registry shall maintain an entry with the "next available" number. Additions should use the "next available" number to construct an identifier for the new criteria, and update the "next available" entry at the same time. Editors will manage any sequencing errors when accepting PRs.
Identifiers must be constructed by appending that numerical value to the string "criteria-" and incorporated in the ID of the heading element for that criteria, which when placed in the Rubric appears as something like (note the version in its own span after the permalink):
<h4 id="criteria-1">Open contribution (participation)</h4> <a href="#criteria-1">https://www.w3.org/TR/did-rubric#criteria-1</a> <span>1.0.0</span>
This allows permanent links to citations based on the publication date of a given Rubric: https://www.w3.org/TR/2021/NOTE-did-rubric-20210826/#criteria-32 as well as version-free links that resolve to the latest version of the criteria, and if retired, to an entry in the Prior Criteria list which itself links to the last valid presentation of the criteria. So that, for example, https://www.w3.org/TR/did-rubric/#criteria-32 points to the current criteria-32 in the latest published document. When that criteria is retired, that same URL points to the entry in the Prior Criteria list, which links to its last versioned publication, e.g., https://www.w3.org/TR/2021/NOTE-did-rubric-20210826/#criteria-32
Criteria versions allow for incremental improvements while retaining long-term referenceability.
Every example evaluation cited in the Notes entry in a assessment MUST link to a proper citation in this DID Evaluations Cited table.
This is not a comprehensive listing of DID Method Rubric evaluations. It is expected that such evaluations are developed and published elsewhere, in support of various methods and use cases. Only those evaluations cited as Example Assessments in current criteria will be listed.
Evaluation entries defined by creating a JSON file under the rubric/evaluationCitations folder in the github repository. This JSON file MUST include:
Every DID method cited in an Example Assessment MUST link to a proper citation in the Methods Considered table. The table MUST only contain methods that are explicitly cited in the Example Assessments.
The table is generated from individual JSON files under
rubric/methodsConsidered/. To add or
update a method, edit the corresponding JSON file rather than
this table directly.
Each entry SHOULD contain the following:
The Editors of the DID Method Rubric Registry 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 Method Rubric Registry, 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.
Submissions to the registry that meet all the criteria listed above will be considered for inclusion, however the editors retain the responsibility of curating the content to ensure the broadest applicability of the DID Method Rubric with the goal of enabling effective evaluations of any DID Method for any legitimate use case.
Rulemaking criteria address who makes the rules and how. Output of rulemaking are the rules.
| A: | Anyone can participate in an open, fair process where all participants have equal opportunity to be heard and influence decisions. |
| B: | Anyone can comment and contribute to open debate, but decisions are ultimately made by a closed group. |
| C: | Debate is restricted to a selected but known group. |
| D: | Debate is conducted in secret by an unknown group. |
| Method | Spec. | Net. | Reg. | Notes |
|---|---|---|---|---|
| did:web | A | B | C/D | Spec (A): Owned by CCG at W3C, anyone can join. Net (B): Most of the network is controlled by public or private entities. Reg: Controlled by the Domain Holder, which is a restricted set (C) and in some cases may not be known to the resolving party (D). [eval-4] |
| did:git | B | C | D | The git network is the git source code, which is controlled (currently) by 16 people. They do not have a public issues process. The spec is openly developed on github by a listed set of contributors and issues may be raised by anyone. Each registry is controlled by potentially unknown parties as negotiated in "meatspace". [eval-1] |
| did:btcr | B | D | D | Changes to the bitcoin protocol are chaotic and uncertain. They use BIPs, but the path to adoption is uncertain and the relative power of developers, miners, and users is open to debate. The spec is openly developed on github by a listed set of contributors and issues may be raised by anyone. [eval-1] |
| A: | Agendas and participation details for all meetings are publicly announced, the meetings are broadcast in real-time to any listeners, and all minutes and recordings are captured in realtime and publicly reviewable in perpetuity. |
| B: | Minutes of meetings are reviewable by the public, including all votes and who cast them, but real-time observation may be limited. |
| C: | All current rules are publicly available. |
| D: | Rules may be changed without public notice. |
| Method | Spec. | Net. | Reg. | Notes |
|---|---|---|---|---|
| did:btcr | C | C | C | The spec is maintained by volunteers, operating in an open fashion but without formal processes for announcements and meeting notes. The network and registry are bitcoin, which has a fairly public but messy innovation process, without formal meetings or votes. [eval-1] |
| did:ion | A | A-/A | A-/A | Spec (A): method spec maintained by DIF, using open and transparent processes. Net (A-/A) and Reg (A-/A): It can be hard to track conversations about Bitcoin Improvement Proposals (BIPs) and decision processes differ for different BIPs, which can affect visibility (A-). IPFS has great support for realtime zoom participation and Notes(A) [eval-5] |
| did:peer | C | n/a | B | Rules for accepting changes to the business rules are bilaterally negotiated between the peers, subject to conformance with the specification. [eval-1] |
| A: | Rulemaking rarely occurs in simple structures. Identifying the different organizational entities that participate in setting rules allows evaluators to understand how rules get made. Understanding how rules get helps predict possible future developments. |
| Method | Decision Making Body | Notes |
|---|---|---|
| did:v1.testnet | Digital Bazaar | Digital Bazaar created Veres One and is shepherding it through development to production. [eval-3] |
| did:v1.production | Veres One Community Group | In production, the Veres One Community Group is the public-facing decision making body designed for discussing technical matters. [eval-3] |
| did:v1.production | Veres Foundation Board | The Veres Foundation holds responsibility for the financial and legal decisions necessary to keep the network operational. [eval-3] |
| A: | Individual. Sole proprietorship |
| B: | Informal Group. Unincorporated Partnership / Open Community |
| C: | For-profit formal organization. For-profit Corporation / LLC / Partnership |
| D: | Quasi not-for-profit formal organization. B-Corp https://bcorporation.net/ / CIC https://en.wikipedia.org/wiki/Community_interest_company |
| E: | Recognized not-for-profit formal organization. Not-for-profit public benefit organization (NGOs, 501c(3/4/6), etc) |
| F: | NGO |
| G: | Trade Association |
| H: | Charity |
| I: | Public agency (federal, state, or local) |
| J: | Other |
| Method | Decision Making Body | Governance Structure | Notes |
|---|---|---|---|
| did:v1.testnet | Digital Bazaar | C | Digital Bazaar is a closely held startup with a seventeen year track record. (C) [eval-3] |
| did:v1.production | Veres One Community Group | E | The Veres One Community Group is a community group operating under the rules of the World Wide Web Consortium. Open to the public, self-elected leadership (E) [eval-3] |
| did:v1.production | Veres Foundation Board | E | The Veres Foundation operates under the non-profit regulations of Ontario, Canada. Self-propagating board of directors overseeing a non-profit organization. (E) [eval-3] |
| A: | Free to all |
| B: | Inexpensive, but accessible |
| C: | Modest cost for interested parties |
| D: | Expensive and restricted |
| E: | Not possible to participate because the rules are immutable |
| Method | Decision Making Body | Cost | Notes |
|---|---|---|---|
| did:v1.testnet | Digital Bazaar | D+ | Digital Bazaar is a small development team working with select customers to define Veres One. There is no explicit mechanism for outside participation, however, the governance framework has been developed with high transparency through github and the W3C Veres One Community Group. (D+) [eval-3] |
| did:v1.production | Veres One Community Group | B | Community group is open to the public. Any member of the community group can propose changes to the method. Group consensus then determines which proposals advance to the Veres Foundation. (B) [eval-3] |
| did:v1.production | Veres Foundation Board | C- | For technical decisions, the Foundation strongly prefers proposals to reach consensus in the community group. For operational, financial, and legal decisions, the board will likely reserve the right to make decisions independent of the community group. Board bylaws are under development as of this evaluation. (C-) [eval-3] |
| A: | Free to all |
| B: | Inexpensive, but accessible |
| C: | Modest cost for interested parties |
| D: | Expensive and restricted |
| E: | Not possible to participate because the rules are immutable |
| Method | Decision Making Body | Cost | Notes |
|---|---|---|---|
| did:v1.testnet | Digital Bazaar | D | The most common way to be involved is by invitation from Digital Bazaar, either as an employee, subcontractor, or advisor. (D) [eval-3] |
| did:v1.production | Veres One Community Group | B | The largest cost is time to participate and a track record for credibility. (B) [eval-3] |
| did:v1.production | Veres Foundation Board | D | Foundation leadership is initially selected by Digital Bazaar and self-selecting thereafter. (D) [eval-3] |
Design criteria addresses the method as designed. In other words, the output of the rulemaking: what rules apply to this DID method?
| A: | Anyone can participate fully (full read/write and participation in consensus). |
| B: | Anyone can read/write, but consensus mechanism is permissioned. |
| C: | Anyone can read, but writing and consensus is permissioned. |
| D: | All participation is permissioned. |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:ethr | A | A | Ethereum is open to anyone. The registry is accessible to anyone. [eval-1] |
| did:v1.production | B+ | B+ | Net (B+) and Reg (B+)The ledger is available to the public for reading, and anyone can submit a transaction (either through paying an accelerator or in-kind contribution), however, only Witnesses are able to approve updates to the chain. The propagation rules of the peer network restrict the ability for Witnesses to selectively approve transactions, but ultimately, the decision remains with a supermajority of Witnesses. [eval-3] |
| did:git | A | D | Git software is available to anyone. Participation and access is controlled by the repo maintainers. [eval-1] |
| A: | Any wallet can work with any resolver on any registry, |
| B: | Any wallet can work with multiple resolvers and multiple registries, |
| C: | Some implementations of some wallets can work with some resolvers, |
| D: | There is a single combined suite of resolver, registry, and wallet. |
| Method | Spec. | Net. | Reg. | Notes |
|---|---|---|---|---|
| did:v1.production | A | A | A | Spec (A), Net (A) and Reg (A): Veres One uses 100% W3C conformant representations, without regard to which wallet implementation is used. [eval-3] |
| did:btcr | A | A | A | Bitcoin has no restrictions on the software used to access the network. [eval-1] |
| did:web | A | A- | A- | Spec (A), Net (A-) and Reg (A-): Web-based wallets may have complications from CORS (cross-origin resource sharing), but in general any “wallet” is compatible. Although a given service (hosting or website, etc.) could add a layer of permissioned restrictions, the did:web Method does not require it. Similarly, nation-state level firewalls could restrict access at various layers, but, again, the Method does not require it. [eval-4] |
| A: | Universal: DIDs can only be created and used universally, between any number of parties. |
| B: | Contextual: DIDs can be created and used contextually, between any set of collaborating parties. |
| C: | Paired: DID can be created and used pairwise, between any two parties. |
| D: | Central: DIDs can only be created and used with a single, centralized party. |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:peer | A+ | C | Did:peer is communication-layer independent, so it can be used on any network, including direct physical links. However, only those parties to the creation of the DID can actually use it. The DIDs have no use outside that direct peer-to-peer relationship. [eval-1] |
| did:web | A/B | A/B | In general, did:web DIDs can be used for anything, by anyone (A). However, some implementers believe did:web should only be used to represent institutional entities (who tend to already have good systemic controls over web infrastructure). (B) [eval-4] |
| did:ethr | A | A | Open, permissionless, and globally resolvable. [eval-1] |
| A: | None |
| B: | At least one. [List the required crypto-currencies in the Notes] |
| Method | Spec. | Notes |
|---|---|---|
| did:v1.testnet | A | Spec (A): The V1 DID Method operates on its own blockchain with a novel, non-cryptocurrency consensus algorithm. [eval-3] |
| did:v1.production | A | Spec (A): The V1 DID Method operates on its own blockchain with a novel, non-cryptocurrency consensus algorithm. [eval-3] |
| did:web | A | Spec (B): did:web, which is based on the World Wide Web and DNS does not rely on any cryptocurrency. [eval-4] |
| did:ion | B | Spec (B): One must use bitcoin. BTC is required for anchoring transactions. The IPFS layer does not require cryptocurrency, but the bitcoin layer is required for all operations. [eval-5] |
| A: | No. Creation is expected to be off-line. Only resolution, updates and deactivations require network or registry interaction |
| B: | Yes. Creation requires network coordination with a single party to complete the DID creation |
| C: | Yes. Creation requires network coordination with multiple parties in a known, constrained group to complete the DID creation |
| D: | Yes. Creation requires network coordination with and acceptance by an open, global consensus system to complete DID creation |
| Method | Spec. | Notes |
|---|---|---|
| did:v1.testnet | A | Veres One DID creation is a local cryptographic process. There is no network or registry involved. [eval-3] |
| did:v1.production | A | Veres One DID creation is a local cryptographic process. There is no network or registry involved. [eval-3] |
| did:web | B+ | The DID controller must be able to communicate with the web server that is hosting the DID Document. However, in some configurations, this may not mean accessing the global network. For example, if you are physically present at the hosting server, one can create the DID Document files directly without network access. To resolve the DID Document those files must be published at an accessible endpoint, but creation doesn’t need the network. [eval-4] |
| did:ion | A | All new did:ions start offline. Only updates need to be published. [eval-5] |
| A: | Greater than 5 billion |
| B: | Greater than 1 billion |
| C: | Greater than 500 million |
| D: | Greater than 50 million |
| E: | Greater than 5 million |
| F: | Less than 5 million |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | C | Veres One can handle ~750 million updates per quarter at the current architecture of 13 witnesses running stock amazon instances. Performance can be improved through a variety of approaches with different cost and engineering tradeoffs. [eval-3] |
| did:v1.production | C | Veres One can handle ~750 million updates per quarter at the current architecture of 13 witnesses running stock amazon instances. Performance can be improved through a variety of approaches with different cost and engineering tradeoffs. [eval-3] |
| did:web | A | did:web is a partitioned namespace where any given partition could support billions of DIDs. The URL behind the DID could be hosted by a small hosting service that can only handle a limited # of DIDs, but the hosting of a given domain could also be scaled arbitrarily. [eval-4] |
| did:ion | A | A single did:ion node, which limits its operations to 10,000 ops per transaction, is capable of anchoring ~131 million DIDs, updated every quarter. However, any number of did:ion nodes can independently anchor different did:ion operations, making the capacity effectively limited only by the blocksize of bitcoin (and the impact from other transactions competing for space in each block). [eval-5] |
| A: | Only operational costs of running the algorithm (no externalized expense) |
| B: | Less than $0.01 |
| C: | Less than $0.10 |
| D: | Less than $1 |
| E: | Less than $10 |
| F: | $10 or greater |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | A | Creation is FREE [eval-3] |
| did:v1.production | A | Creation is FREE [eval-3] |
| did:web | A | Assuming you already have a hosting provider providing a website, this cost is essentially free. If you don’t, you may incur the cost of establishing a website (and perhaps a domain purchase or TLD application). [eval-4] |
| did:ion | A | Offline creation has no network costs, just local computation. [eval-5] |
| A: | Only operational costs of running the algorithm (no externalized expense) |
| B: | Less than $0.01 |
| C: | Less than $0.10 |
| D: | Less than $1 |
| E: | Less than $10 |
| F: | $10 or greater |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | n/a | Veres One Test Net does not have pricing. [eval-3] |
| did:v1.production | D/A | Veres One updates target a retail cost of ~$0.25, which will be set based on operational costs of the Veres Foundation, for wholesale pricing. Accelerators may mark up these prices based on their business model and approach. The estimates for these costs are currently under evaluation. Prices will also vary based on the size of the update, with larger updates costing more. (D) The costs and in-kind requirements will be managed by the Foundation based on market dynamics. (A) [eval-3] |
| did:web | A | Assuming you already have a hosting provider providing a website, this cost is essentially free. If you don’t, you may incur the cost of establishing a website (and perhaps a domain purchase or TLD application). [eval-4] |
| did:ion | B/C | Node operators who have staked ~$100,000 USD in BTC may update 10,000 DIDs in a single bitcoin transaction; at an average transaction fee of $3 (the current annualized average), that is $0.0003 per update. (B) Node operators who have not staked any BTC may update up to 100 DIDs in a single bitcoin transaction; at an average transaction fee of $3 (the current annualized average), that is $0.03 per update. (C) Cost scales deterministically between these two ends of the price spectrum. [eval-5] |
| A: | Only operational costs of running the algorithm (no externalized expense) |
| B: | Less than $0.01 |
| C: | Less than $0.10 |
| D: | Less than $1 |
| E: | Less than $10 |
| F: | $10 or greater |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | n/a | Veres One Testnet does not have pricing. [eval-3] |
| did:v1.production | B | The Foundation-established cost can be earned by in-kind contributions, allowing hosted participants to post transactions without out-of-pocket expense. The amortized cost of this is expected to be less than “retail” but remain subject to several variables. For this evaluation, we estimate the in-kind costs for Veres One can be reduced to less than $0.01 per update, but ultimately this will be subject both to the Foundation’s in-kind rules as well as the marginal cost of satisfying those rules. [eval-3] |
| did:web | n/a | The method itself does not provide for in-kind contributions. [eval-4] |
| did:ion | n/a | The method does not provide for any kind of in-kind contributions. It is worth noting that some node operators are offering free updates to the public based on a modest Proof of Work. [eval-5] |
Operation criteria address how the rules are operationalized, ie., how are the rules embodied in a working system.
| A: | All operational finances are transparent and accounted for. |
| B: | Compensation for primary operators is transparent. |
| C: | Some financial flows are visible. |
| D: | Operation is privatized with no visibility. |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:peer | D | D | The financials of both parties have no visibility. [eval-1] |
| did:v1.production | B | B | Net (B) and Reg (B): Once operations are transferred to the Foundation, finances should be considerably more transparent. [eval-3] |
| did:btcr | A- | A- | Bitcoin is transparent, although operations are somewhat obscured by pseudonymous transaction addresses. [eval-1] |
| A: | Minimal. Less than 1MB |
| B: | Modest. 1MB to 1GB |
| C: | Substantial. 1GB to 128 GB |
| D: | Exceptional. Over 128GB in memory |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:peer | A | A | Resolution typically requires looking up a file in the file system, which uses minimal RAM. [eval-2] |
| did:git | B | varies | Git for Windows is just shy of 50 MB (please update if there are smaller versions available). However, one must still download the entire repo containing the registry material. [eval-1] |
| did:btcr | D | D | To definitively resolve, one must operate a full node. [eval-1] |
| did:sov | A | A | The Sovrin ledger is based on Hyperledger Indy which supports highly efficient state proofs for cryptographic verification of resolution responses. A full node is not required. [eval-1] |
| did:ethr | B | B | A full ethereum node takes >100GB, but a light ethereum node can support this method with less than 256kb. [eval-1] |
| did:jolo | B | B | A full ethereum node takes >100GB, but a light ethereum node can support this method with less than 256kb. [eval-1] |
| A: | Minimal. Less than 1MB |
| B: | Modest. 1MB to 1GB |
| C: | Substantial. 1GB to 128 GB |
| D: | Exceptional. Over 128GB in memory |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:peer | A | A | Registration may require a few KB of RAM as a DID doc is written to disk. [eval-2] |
| did:git | B | varies | Git for Windows is just shy of 50 MB (please update if there are smaller versions available). However, one must still download the entire repo containing the registry material. [eval-1] |
| did:btcr | A- | A- | To register a DID, one must simply get a transaction on the ledger, unless you choose to host a continuation DID Document elsewhere, which would require its own resources. [eval-1] |
| did:sov | A | A | Registration of a DID is a single transaction that can be performed by a thin client. [eval-1] |
| did:ethr | A+ | A+ | The smart contract used for did:ethr recognizes any valid public key as a DID, without requiring registration. This means DIDs can even be created offline with full usability. Only rotation and the registration of service endpoints require network access. [eval-1] |
| did:jolo | A+ | A+ | The smart contract used for did:ethr recognizes any valid public key as a DID, without requiring registration. Only rotation and the registration of service endpoints require network access. [eval-1] |
| A: | More than 1,000,000 Transactions Per Second |
| B: | 100,001 - 1,000,000 TPS |
| C: | 10,001 - 100,000 TPS |
| D: | 1,001 - 10,000 TPS |
| E: | 101 - 1,000 TPS |
| F: | 11 - 100 TPS |
| G: | 1-10 TPS |
| H: | Less than 1 TPS |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:v1.testnet | n/a | n/a | Net (n/a) and Reg (n/a): Veres One DID creation is a local cryptographic process. There is no network or registry involved. [eval-3] |
| did:v1.production | n/a | n/a | Net (n/a) and Reg (n/a): Veres One DID creation is a local cryptographic process. There is no network or registry involved. [eval-3] |
| did:web | A | A | Net (A) and Reg (A): Architecturally, the World Wide Web can easily handle +1,000,000 transactions per second. Thanks to the way domain names can be routed to specific servers in a round-robin fashion, a given domain could, theoretically, reach 1,000,000 TPS. However, we know of no single domain currently engineered to handle that scale. [eval-4] |
| did:ion | n/a | n/a | Net (n/a) and Reg (n/a): Creation is offline, so there is effectively no limit. [eval-5] |
| A: | More than 1,000,000 Transactions Per Second |
| B: | 10,001 - 1,000,000 TPS |
| C: | 101 - 10,000 TPS |
| D: | 11 - 100 TPS |
| E: | 1-10 TPS |
| F: | Less than 1 TPS |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | C | Updates on Veres One have been demonstrated at >100 TPS. This could go considerably higher with various technical trade-offs. [eval-3] |
| did:v1.production | C | Updates on Veres One have been demonstrated at >100 TPS. This could go considerably higher with various technical trade-offs. [eval-3] |
| did:web | A | DID:web update performance is highly sensitive to both implementation choices (http server, database, etc.) and network latency. [eval-4] |
| did:ion | B | Assuming 500 bytes per BTC tx, 1 MB block size, and 1 block per 10 minutes, if ALL transactions in a BTC block contain updates, there could be as many as 35,000 updates per second with did:ion. [eval-5] |
| A: | Less than 1 second |
| B: | 1 to < 60 seconds |
| C: | 1 to < 10 min |
| D: | 10 min to < 1 hour |
| E: | 1 hour to < 1 day |
| F: | 1 day to 2 weeks |
| G: | Greater than two weeks |
| H: | Updates not guaranteed |
| Method | Net | Reg | Notes |
|---|---|---|---|
| did:v1.testnet | B | B | Net (B) and Reg (B):Provable Finality for Veres One updates ranged from 1 to 60 seconds in testing (1-3 seconds in a single data center) [eval-3] |
| did:v1.production | B | B | Net (B) and Reg (B):Provable Finality for Veres One updates ranged from 1 to 60 seconds in testing (1-3 seconds in a single data center) [eval-3] |
| did:web | B | B | Net (B) and Reg (B): Depends on your network (and network configuration), but generally, did:web document updates are as fast as updates to any web resource. [eval-4] |
| did:ion | D/H | D/H | Net and Reg:Updates to did:ion DIDs are ultimately anchored on BTC, which averages one block per every ten minutes. Some nodes may batch the BTC anchor operation, which could add to the delay, but this is not a requirement of the method. (D and D) Similarly, due to the dynamically adjusting market for bitcoin transactions, it is possible for a controller to submit a transaction to the ION node and for it to go un-anchored because the ION node is not configured with a competitively priced bitcoin transaction fee. (H and H) [eval-5] |
| A: | Equation based on the consensus algorithm |
| B: | Known number |
| C: | Percentage |
| D: | NONE (specific components MUST be operational) |
| E: | OPTIONAL (operations do not depend on the layer being available) |
| Method | Layer | Response | Notes |
|---|---|---|---|
| did:v1.testnet | Witnesses | 4 | The BFT consensus algorithm used by Veres One requires a supermajority of 9/13 witness nodes to formulate consensus. [eval-3] |
| did:v1.testnet | Peers | N/A | Peer nodes are not needed in the formulation of consensus. [eval-3] |
| did:v1.production | Witnesses | 4 | The BFT consensus algorithm used by Veres One requires a supermajority of 9/13 witness nodes to formulate consensus. [eval-3] |
| did:v1.production | Peers | N/A | Peer nodes are not needed in the formulation of consensus. [eval-3] |
| A: | Equation based on the consensus algorithm |
| B: | Known number |
| C: | Percentage |
| D: | Unknown |
| E: | N/A -- If the algorithm isn’t dependent on the particular layer |
| Method | Layer | Response | Notes |
|---|---|---|---|
| did:v1.testnet | Witnesses | 4 | Since a supermajority of 9/13 witness nodes is needed for consensus to be reached, compromising more than 4 of these nodes means an attacker could halt consensus formulation. [eval-3] |
| did:v1.testnet | Peers | N/A | Peers being compromised does not lead to network failure. [eval-3] |
| did:v1.production | Witnesses | 4 | Since a supermajority of 9/13 witness nodes is needed for consensus to be reached, compromising more than 4 of these nodes means an attacker could halt consensus formulation. [eval-3] |
| did:v1.production | Peers | N/A | Peers being compromised does not lead to network failure. [eval-3] |
Criteria in this section deal with the design rules that enable maintaining the integrity of the verifiable data registry (VDR) and the means of applying those rules. Enforcement is the proper execution of the process of ensuring compliance with laws, regulations, rules, standards, and social norms. This includes how the rule of law is applied to entities involved in governance and operation of the method.
| A: | Anyone |
| B: | Only a select group, including parties not involved in a given DID transaction |
| C: | Only parties to the transaction |
| D: | Not available |
| Method | Reg. | Notes |
|---|---|---|
| did:btcr | A | Anyone can see everything. [eval-1] |
| did:git | B- | If you have access to the authoritative git repo, you can see the cryptographic journal. However, within the method specification, there is no way to know if the repo you are inspecting is, in fact, definitive. [eval-1] |
| did:web | D | The web server hosting the DID Document has no requirement to preserve cryptographic history. [eval-4] |
| Method | Decision Making Body | Notes |
|---|---|---|
| did:v1.testnet | Digital Bazaar, Inc. | Digital Bazaar created Veres One. It is a corporation formed in the commonwealth of Virginia, USA. [eval-3] |
| did:v1.production | Veres One Community Group | In production, the Veres One Community Group is the public-facing decision making body designed for discussing technical matters. It operates under the auspices of the World Wide Web Consortium. The W3C does not have a single physical headquarters. There are four institutions that "host" W3C: MIT (in Cambridge, MA, USA), ERCIM (in Sophia-Antipolis, France), Keio University (near Tokyo, Japan), and Beihang University (in Beijing, China). [eval-3] |
| did:v1.production | Veres Foundation Board | The Veres Foundation holds responsibility for the financial and legal decisions necessary to keep the network operational. It is based in Ottawa, Canada. [eval-3] |
| A: | Open ended, unknown, or unknowable. |
| B: | Capped. [State lower and upper bounds in Notes] |
| C: | One |
| D: | Zero |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | B [13] | Veres One is designed for 13 Witnesses; only Witnesses are able to approve updates to the chain. The propagation rules of the peer network restrict the ability for Witnesses to selectively approve transactions, but ultimately, the decision remains with a supermajority of nine Witnesses. [eval-3] |
| did:v1.production | B [13] | Veres One is designed for 13 Witnesses; only Witnesses are able to approve updates to the chain. The propagation rules of the peer network restrict the ability for Witnesses to selectively approve transactions, but ultimately, the decision remains with a supermajority of nine Witnesses. [eval-3] |
| did:web | C | Any of the layers could be compromised by that particular party. [eval-4] |
| did:ion | A | Bitcoin and IPFS allow any number of legal entities to participate in consensus. [eval-5] |
| A: | Proof of Work |
| B: | Proof of Stake |
| C: | BFT algorithm based |
| D: | Electoral ‒ Select parties vote with thresholds |
| E: | Unanimous ‒ All parties countersign |
| F: | Unilateral ‒ Latest signed version defined as authentic |
| G: | Standards-based specifications determined by institutional authority, used by anyone |
| H: | Other ‒ Add your own |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | C | There Veres One registry consensus algorithm uses a BFT algorithm which formulates consensus through a super majority of witness nodes with any number of peer nodes allowed to participate in the gossip network. [eval-3] |
| did:v1.production | C | There Veres One registry consensus algorithm uses a BFT algorithm which formulates consensus through a super majority of 13 witness nodes with any number of peer nodes allowed to participate in the gossip network. [eval-3] |
| did:web | F/G | ICANN sets the specification for consensus (F). DNS works by participants agreeing that ICANN’s rules determine global state. [eval-4] |
| did:ion | A | The VDR for did:ion is Bitcoin, which is Proof of Work [eval-5] |
| A: | List each layer |
| Method | Layer | Notes |
|---|---|---|
| did:v1.testnet | Witnesses | In the test net the number of peer nodes is limited but the same number of witness nodes are used as in production. [eval-3] |
| did:v1.testnet | Peers | [eval-3] |
| did:v1.production | Witnesses | In production the number of peer nodes is expected to increase greatly. [eval-3] |
| did:v1.production | Peers | [eval-3] |
| A: | Open ended, unknown, or unknowable. |
| B: | Capped. [State upper and lower bounds in Notes] |
| C: | One |
| Method | Layer | Response | Notes |
|---|---|---|---|
| did:v1.testnet | Witnesses | B [4] | Veres One’s consensus requires 9 of 13 Witness nodes to agree, as such if more than 4 were compromised the network may cease to function. (B) [eval-3] |
| did:v1.testnet | Peers | A | Peer nodes are not directly involved in maintaining the verifiable data registry and only propagate state. As such compromising any number of Peer nodes does not compromise the network. (A) [eval-3] |
| did:v1.production | Witnesses | B [4] | Veres One’s consensus requires 9 of 13 Witness nodes to agree, as such if more than 4 were compromised the network may cease to function. (B) [eval-3] |
| did:v1.production | Peers | A | Peer nodes are not directly involved in maintaining the verifiable data registry and only propagate state. As such compromising any number of Peer nodes does not compromise the network. (A) [eval-3] |
| A: | None |
| B: | Authentication |
| C: | AssertionMethod |
| D: | Key Agreement |
| E: | CapabilityInvocation |
| F: | CapabilityDelegation |
| G: | Other |
| H: | Any |
| Method | Spec. | Notes |
|---|---|---|
| did:v1.testnet | H | The did.v1 specification does not have any restrictions to the Verification Relationships supported. [eval-3] |
| did:v1.production | H | The did.v1 specification does not have any restrictions to the Verification Relationships supported. [eval-3] |
| did:web | H | The did:web specification does not restrict Verification Relationships. [eval-4] |
| did:ion | B,C,D,E,F | The did:ion specification only enumerates the Verification Relationships as they appear at the time of this assessment in the did-core specification. [eval-5] |
| A: | None |
| B: | Cryptographically signed transactions |
| C: | Cryptographic challenge string & signed response |
| D: | Authenticator App |
| E: | Biometrics |
| F: | |
| G: | DNS Record |
| H: | HTML over HTTP |
| I: | SMS/MMS |
| J: | DID document update |
| K: | Other |
| L: | Any |
Adoption criteria address how widely the method and its implementations are used by various parties and systems.
| A: | State-sponsored funding |
| B: | Regulated not-for-profit entity |
| C: | Private equity |
| D: | Operational budget |
| E: | Cryptocurrency |
| F: | Tokenized Initial Coin Offering |
| G: | Initial Public Offering (public equity funding) |
| H: | Other -- State what in the notes |
| Method | Spec. | Net. | Reg. | Notes |
|---|---|---|---|---|
| did:v1.testnet | D | D | D | Spec (D), Net (D), and Reg (D): did:v1 was funded by Digital Bazaar through internal operational budgets [eval-3] |
| did:v1.production | D | D | D | Spec (D), Net (D), and Reg (D): did:v1 was funded by Digital Bazaar through internal operational budgets [eval-3] |
| did:web | D | A/B/C/D/G | H | Spec (D): Specification was developed largely by independent firms using operational budgets . Net: The web was funded initially by the US Department of Defense and national TLD Administrators are funded by nation-states (A). Network infrastructure of TLD Administrators, hosting services, etc., have largely been funded by non-profits (B), private firms using either private equity (C), operational budgets (D), or public equity offerings (G). Reg (H): Individual websites and network services have been funded in just about every way imaginable. [eval-4] |
| did:ion | D | E/C/D | E/C/D | Spec (D): Specification was developed largely by independent firms using operational budgets Net and Reg: Bitcoin is a self-funding cryptocurrency (E), IPFS was developed by Protocol Labs, using some combination of private equity and operating budget (C/D). [eval-5] |
| A: | Over 20 years |
| B: | Over 10 years |
| C: | Over 5 years |
| D: | Over 1 year |
| E: | Less than 1 year |
| F: | There is no organization per se |
| Method | Spec. | Net. | Reg. | Notes |
|---|---|---|---|---|
| did:v1.testnet | B | D | D | Spec: Digital Bazaar, the team behind the spec has been in business for over 17 years. (B) Net (D) and Reg (D): The Veres One Foundation was founded in 2019. [eval-3] |
| did:v1.production | B | D | D | Spec: Digital Bazaar, the team behind the spec has been in business for over 17 years. (B) Net (D) and Reg (D): The Veres One Foundation was founded in 2019. [eval-3] |
| did:web | F | A | * | Spec (F): did:web specification development began in earnest in 2019 by a variety of interested parties. Net (A): The Internet and the World Wide Web have been around for over 20 years. Reg (*): The individual web servers that might be used depend on the organizational maturity of the hosting company and the website operator. [eval-4] |
| did:ion | A/D | C | C | Spec: The major organizations behind the did:ion specification are DIF (D) and Microsoft (A). DIF is also the organization driving the Sidetree specification, which did:ion is based on. Net (C) and Reg (C): Are based on bitcoin and IPFS Microsoft has existed for more than 20 years. DIF and Protocol Labs (the organization behind IPFS) are younger, but each have existed for at least five years. Bitcoin started in 2009, but really has no formal organization. [eval-5] |
| A: | Yes. A production system is available to the general population. |
| B: | No. A test network is operational. |
| C: | No. Only an internal developer network is operational. |
| D: | No. The software is not yet running on any network. |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:v1.testnet | B | B | Net (B) and Reg (B): The Veres One test network has been operational for over 3 years, in three major release iterations. It is not yet in production. [eval-3] |
| did:v1.production | B | B | Net (B) and Reg (B): The Veres One test network has been operational for over 3 years, in three major release iterations. It is not yet in production. [eval-3] |
| did:web | A | A | Net (A) and Reg (A): The web has been in general use for 30+ years. Multiple production deployments are in use today. [eval-4] |
| did:ion | A | A | Net (A) and Reg (A): All major components are in production and available to the public. [eval-5] |
| A: | The network/registry has been operationalized for ten years or more. |
| B: | The network/registry has been operationalized for five years or more |
| C: | The network/registry has been operationalized for one year or more |
| D: | The network/registry has been operationalized for less than one year |
| E: | The network/registry is not operationalized for non-trivial use |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:v1.testnet | C | C | Net (C) and Reg (C): The Veres One test network has been operational for over 3 years in three major release iterations. [eval-3] |
| did:v1.production | E | E | Net (E) and Reg (E): The Veres One production network has not yet been released. [eval-3] |
| did:web | A | D | Net (A): The web has been around since 1991. Reg (D): We know of no websites that have operationalized did:web earlier than July 2021. [eval-4] |
| did:ion | D/A/B | D/A/B | Net and Reg: did:ion entered production on Jan 22, 2021 (less than one year at the point of this Evaluation) (D). Bitcoin has been in operation since 2009 (A) and IPFS since 2015 (B). [eval-5] |
Security criteria address how the method is cryptographically secured.
| A: | No combination of required features produces a profile with less than 256 bits of security. |
| B: | Between 128 and 256 bits. (Conventional wisdom — NIST recommendation — says that this level of security is adequate until the next revolutionary breakthrough.) |
| C: | Less than 128 bits. (NIST recommends replacing this security by 2030.) |
| D: | Less than 112 bits. (Security is obsolete today.) |
| Method | Reg. | Notes |
|---|---|---|
| did:web | C | Although the DNS subsystem that supports did:web does not provide strong security, control of a DID is proved by accessing /.well-known over TLS. Thus, the security is tied to certificate config. Most web server certificates use 2048- bit RSA, which gives 112 bits of security. [eval-2] |
| did:indy | B | Hashes are SHA2-256. Keys are Ed25519/Curve25519 (128 bits of security). Reads and writes to the Indy ledger use CurveZMQ rather than TLS. This gives 128 bits of security in the aggregate. [eval-2] |
| did:ion | B- | Secp256k1 theoretically guarantees 128 bit security. However, some theoretical attacks have shown a reduction of approximately 5 bits. (B-) [eval-5] |
| A: | The VDR is practically immune from this risk. |
| B: | The VDR has reasonable protections in place. However, motivated and well resourced attackers could temporarily disrupt access in a targeted context. |
| C: | Attackers could permanently disrupt access in a targeted context. |
| Method | Reg. | Notes |
|---|---|---|
| did:btcr | A | The global bitcoin network has a strong track record of uptime , stretching back for well over a decade, even in the face of motivated attack. [eval-2] |
| did:v1.production | B | Veres One is operated by known parties; if all such parties are attacked, especially via legal means, the network could be shut down or additional rules applied. However, no single party can deny the consensus process. Like any publicly accessible service, Veres One is subject to distributed denial of service attacks. Counter measures are in place, but cannot be 100% ameliorated. (B) [eval-3] |
| did:web | C | There are a number of attack vectors for each layer in the system; however, each layer also has its own mechanisms for addressing disruption. (C) [eval-4] |
| A: | The code is public. It has hundreds of contributors. CVEs or similar reports have been published and handled appropriately. |
| B: | The code is public, but the list of contributors is small. No vulnerability reporting mechanism has been announced, or it's been announced but has no demonstrable track record. |
| C: | The code is partly private. |
| D: | The code is entirely private. |
| Method | Score | Notes |
|---|---|---|
| did:sov | A | The most prominent codebases that implement this method, github.com/hyperledger/indy-* have over 1000 forks, about 200 unique contributors from over a dozen organizations, spanning 5 years and about 25000 commits as of 2021. Sovrin's Technical Governance Board, which vets some aspects of the design, is composed of numerous independent experts, and meets regularly. Both Hyperledger and Sovrin Foundation have responsible disclosure mechanisms for vulnerabilities, and both have successfully handled vulnerabilities from initial report to patch and public disclosure. [eval-2] |
| did:peer | B | The spec and implementations of code are entirely public, with incubation through DIF's identifiers WG. However, contributors are limited to a dozen developers, activity is light, and there is no announced vulnerability mechanism. [eval-2] |
| A: | Rich diffuse control mechanisms are a first-class feature, and anyone who resolves a DID can see whether they are in use so confidence is increased. This may include device revocation (where keys must be exercised on a particular device to be valid). |
| B: | Some diffuse control is possible but has important deficits in documentation, maturity, or visibility. |
| C: | Multiple parties can exercise control independently. Diffuse control is possible outside the system (e.g., using Shamir secret sharing to reconstitute a single key before updating a DID document). It's not possible to know whether such mechanisms are in use. |
| D: | Only a single party can exercise control at a time. |
| Method | Score | Notes |
|---|---|---|
| did:key | C | did:key is controlled by a single key. If aggregate control is desired, these keys can be sharded, but that is outside the method's feature set. [eval-2] |
| did:peer | A | Dynamic peer DIDs explicitly define an m-of-n scheme that can be used to authorize any evolution of state, or any verification method supported by the DID. [eval-2] |
| A: | Experts generally consider the system very secure, and this opinion is reinforced by a track record of secure production use. |
| B: | The theoretical security of the system looks excellent, and no known attacks or substantive criticisms are unaddressed. However, limited review or limited experience informs the opinion. |
| C: | Credible reports of vulnerabilities or design shortcomings have not been addressed. |
| D: | The system actively uses mechanisms that are officially deprecated. |
| E: | The system uses mechanisms that have not been vetted. |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | A | Ed25519 and SHA256 are highly regarded cryptographic algorithms and are the only cryptographic primitives used in Veres One. (A) [eval-3] |
| did:v1.production | A | Ed25519 and SHA256 are highly regarded cryptographic algorithms and are the only cryptographic primitives used in Veres One. (A) [eval-3] |
| did:web | A/E | TLS/SSL (a requirement for did:web) is the most widespread adoption of cryptographic technology with well-tested, proven implementations (A). The method itself does not require any additional cryptographic primitives. The did:web method does inherit the known short-comings of DNS, which can be mitigated with DNSSec, in some cases. However, this is not a cryptographic problem. In addition, each webserver is free to use any authentication and authorization technique for creating, updating, and deactivating a DID and DID Document. The method relies on this layer to function, but the implementation of this layer may or may not use vetted cryptography (E). [eval-4] |
| did:ion | A | Bitcoin’s security has proven robust. (A) [eval-5] |
| A: | Yes. A formal proof has been published in a peer reviewed journal |
| B: | Yes. A formal proof has been published |
| C: | No. An informal argument has been published |
| D: | No. The consensus algorithm is opaque to registry users. |
| Method | Net. | Reg. | Notes |
|---|---|---|---|
| did:v1.testnet | B | B | Net (B) and Reg (B): Mathematical proofs have been peer reviewed for publication in a not-yet-published book on consensus algorithms and as a special IEEE journal publication on network consensus algorithms. [eval-3] |
| did:v1.production | B | B | Net (B) and Reg (B): Mathematical proofs have been peer reviewed for publication in a not-yet-published book on consensus algorithms and as a special IEEE journal publication on network consensus algorithms. [eval-3] |
| did:web | A | n/a | Net (A): The DNS and TLS systems have been thoroughly reviewed in academic literature in research about the Internet and the World Wide Web. Reg (n/a) : The method provides no consensus mechanism with regard to the https server itself. The entity controlling the server operates independently. (n/a) [eval-4] |
| did:ion | A | A | Net (A) and Reg (A): Bitcoin’s proof of work consensus algorithm has been thoroughly reviewed. IPFS uses a Kademlia hash table algorithm, which has also undergone thorough academic review since publication in 2002. However, compromising the hash table would not compromise the content of a DID Document; rather it would affect the ability to resolve the DID to that DID Document. IPFS’s content-hash addressing is based on multihash, and did:ion requires using the SHA-256 variant of multihash. SHA-256 is extremely well reviewed. [eval-5] |
| A: | The update history of the DID document is recorded, accessible, and linked appropriately to its predecessor. Arbitrary versions can be queried and proved correct, and they have a reasonably useful timestamp. |
| B: | The update history of the DID document exists, and a forensic analysis could prove correctness. However, it's not exposed for consumption of ordinary resolvers, it lacks supporting metadata, or it's exposed in a very suboptimal way. |
| C: | Limited evidence of proper DID document updates exists. |
| D: | No evidence of proper DID document updates exist; the user has to trust the system's assertion that the current state resulted from something appropriate. |
| Method | Reg. | Notes |
|---|---|---|
| did:v1.testnet | A | All document updates are recorded in a non-repudiable manner on the Veres One Ledger. [eval-3] |
| did:v1.production | A | All document updates are recorded in a non-repudiable manner on the Veres One Ledger. [eval-3] |
| did:web | D | The method does not require the website serving the DID Document to demonstrate any form of provenance. [eval-4] |
| did:ion | B | As long as the IPFS-based transaction bundles are available (either via IPFS or somewhere else), the provenance of each DID Document is independently validatable. Similarly, if bitcoin state is lost, it would be impossible to verify the provenance of did:ion DID Documents. In both cases, it is relatively straightforward to address this by retaining your own copy of the state information, e.g., running your own bitcoin node and hosting the did:ion transaction bundles on your own IPFS node. In addition, late publishing https://identity.foundation/sidetree/spec/#late-publishing could allow multiple versions of DID Documents to be simultaneously seen as canonical. [eval-5] |
| A: | Both registry consensus *and* transaction validation are compliant |
| B: | Transaction validation is compliant but consensus is not |
| C: | No. Neither consensus nor transactions are compliant |
| Method | Spec. | Net. | Reg. | Notes |
|---|---|---|---|---|
| did:v1.testnet | A | A | A | Spec (A), Net (A), and Reg (A): did:v1 was written to be compatible with all NIST requirements, including those specified in the Relevance section (6.8.3) [eval-3] |
| did:v1.production | A | A | A | Spec (A), Net (A), and Reg (A): did:v1 was written to be compatible with all NIST requirements, including those specified in the Relevance section (6.8.3) [eval-3] |
| did:web | A | A | A | Spec (A), Net (A), and Reg (A): Due to the flexibility of the underlying web architecture, any layer *might* be non-compliant; However, the web is a mature platform with many years of solutions that do, in fact, meet US federal requirements. [eval-4] |
| did:ion | B | B | B | Spec (B), Net (B), and Reg (B): Bitcoin is likely not NIST compliant thanks to the adoption of Schnorr signatures (with the taproot extension), which are not yet NIST approved. However, recent signals from NIST suggest that (1) bitcoin use of cryptography is not prima facie out of compliance and (2) NIST’s previous evaluations of Schnorr hinged on patent concerns; now that those patents are expired, many are optimistic that Schnoor will be given serious consideration in future evaluations. IPFS allows non-approved hash algorithms through multihash, however did:ion adds the requirement that all hashes be SHA-256, which is NIST compliant. [eval-5] |
Addresses the ability of a DID method to ensure various privacy mechanisms. When DIDs are used as identifiers for people, it becomes important to consider what tools a DID method offers to operate at different levels of privacy. Use cases that focus on IoT or institutions may not feel that this dimension is especially important (though institutional privacy may sometimes be desirable).
| A: | Fully private is possible. |
| B: | VDR is visible to "all", but "all" is a restricted audience with enforced terms of service or other disincentives to abuse. |
| C: | VDR is fully public with no constraints. |
| Method | Score | Notes |
|---|---|---|
| did:twit | C | A did:tweet is created and updated by posting to a public twitter feed; it is always completely public. [eval-2] |
| did:key | A | Nothing about the did:key method requires it to be published anywhere. It is as private or as public as the mechanism used to share it. [eval-2] |
| did:trustbloc | B | A did:trustbloc is public to all users of the Hyperledger Fabric instance where it is published -- but that blockchain may be permissioned and restricted to a private audience. [eval-2] |
| A: | The natural and default behavior is to create a new DID in each new context, and there is no meaningful incentive to do otherwise. |
| B: | It is possible to create and manage numerous DIDs, but the latency, complexity, or monetary expense of doing so results in modest pressure to reuse a DID. |
| C: | Each DID is expensive in at least one important dimension. Incentives to reuse are strong. |
| Method | Score | Notes |
|---|---|---|
| did:btcr | C | At times when Bitcoin value has spiked, creating a DID on Bitcoin has required an expensive transaction. Finality also takes a significant amount of time. This creates incentives to reuse a DID in multiple contexts. [eval-2] |
| did:sov | C | The Sovrin ledger deliberately charges for ledger writes to discourage its use for privacy-oriented identifiers. [eval-2] |
| did:peer | A | Creating a peer DIDs is free and nearly instantaneous. There are no incentives for reuse. [eval-2] |
The following criteria have been retired. We link to their last canonical publication for historical provenance. Many of these criteria have evolved into newer criteria, others have simply been removed from this Rubric for lack of completeness, currency and/or relevance.
This DID Method Rubric one framework for evaluating DID Methods. It offers a set of criteria which can be used selectively by Evaluators to better understand and document their considerations when deciding to support or adopt a given DID Method.
This Note is a derivative work of A Rubric for Decentralization of DID Methods, a collaborative paper written at Rebooting the Web of Trust IX by Joe Andrieu, Shannon Appelcline, Amy Guy, Joachim Lohkamp, Drummond Reed, Markus Sabadello, and Oliver Terbu.
Referenced in:
Referenced in:
Referenced in: