Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dif-recommended/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ The following table tracks DID methods that are currently participating in this

| Method | DIF Recommended | Spec Version | W3C Registry | Proposal | W3C Tests | Universal Resolver | DID Traits | Multiple Impls | Deployment | Standards Target | Intro and Deep Dives |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------ | -------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `did:ethr` | **Yes** - [Findings Document](https://github.com/decentralized-identity/did-methods/blob/main/dif-recommended/findings-did-ethr.md) | [v1.0](https://github.com/decentralized-identity/ethr-did-resolver/blob/master/doc/did-method-spec.md) | Yes | [Yes](https://github.com/decentralized-identity/did-methods/blob/main/method-proposals/PROPOSAL-did-ethr.md) | [Yes](https://w3c.github.io/did-test-suite/#M14) | Yes | No | ? | ? | TBD | [Intro](https://us02web.zoom.us/rec/share/AphrjaZ6ha9zv6Z4sMsc1du9WG6BcyFkq8uCGry-xiruG-o58ggjuvSlNsjD4HFQ.Hq5JIy4LthJL1t4z), [Deep Dive 1](https://us02web.zoom.us/rec/share/Q3F5d2qM1dhcMTQzzdCYwTjcAtswJBjD-LXejwShZc3DRGzpl-DQAnIKhbJISDQ.gaBolbAIoN6VyZMD), [Deep Dive 2](https://us02web.zoom.us/rec/share/Wz5VJes_1TRMsYRHv8eqMkRVlaXZeG_rubm5I0WEzs2wElF2j4nToUB6bW1YyPCY.r6_ukP-Q93eOAMBY) |
| `did:webplus` | **Yes** - [Findings Document](https://github.com/decentralized-identity/did-methods/blob/main/dif-recommended/findings-did-webplus.md) | [Specification](https://ledgerdomain.github.io/did-webplus-spec/) | Yes | [Yes](https://github.com/decentralized-identity/did-methods/blob/main/method-proposals/PROPOSAL-did-webplus.md) | [Yes](https://github.com/w3c/did-test-suite/pull/228) | [Pending](https://github.com/decentralized-identity/universal-resolver/pull/534) | Yes | [1](https://github.com/LedgerDomain/did-webplus), [2](https://github.com/LedgerDomain/poc-did-webplus-py) | In Progress | [OCI](https://oc-i.org) | [Intro](https://us02web.zoom.us/rec/share/1jJ7EIXc72ARQTQLXK6PXV2-cq0oN7gWlDBXwzD-IkEXpRfnxyxpX2IBZ1rRU23U.saBYCUDcfR2tbKps), [Deep Dive 1](https://us02web.zoom.us/rec/share/aF-Oyy6vsSHTQVotgcMMpdxAMo_I0e3PyvFHl5Wrqy3PbLMsl283eXGb2OBGV0Dr.-f9s4l5thUU_4JpS), [Deep Dive 2](https://us02web.zoom.us/rec/share/6yRpfB0ZND2JdmmYr6oQz8kYfFturosnG5ohQKxLNS4UXy80VyLuerzeNppo2XQ-.E74fBnNUdLYo1HFM) |
| `did:webvh` | **Yes** - [Findings Document](https://github.com/decentralized-identity/did-methods/blob/main/dif-recommended/findings-did-webvh.md) | [Current Stable v1.0](https://identity.foundation/didwebvh/v1.0/) | Yes | [Yes](https://github.com/decentralized-identity/did-methods/blob/main/method-proposals/PROPOSAL-did-webvh.md) | [Yes](https://w3c.github.io/did-test-suite/#M51) | Yes | [Yes](https://identity.foundation/did-traits/#comparison-of-did-methods) | [5](https://didwebvh.info/latest/implementations/) | [Yes](https://didwebvh.info/latest/implementations/deployments/) | W3C | [Intro](https://us02web.zoom.us/rec/share/AJ5AINNqN0mc-gDtSsKPjgyknBjXViRsVpXklZFcC4vObcrRxAoXQ3c9kCRkmEKA.ZAK46kp3nq77dWIm), [Deep Dive 1](https://us02web.zoom.us/rec/share/6GhsVQ6VCIQiM5YyqkeAr4zg9RxcfxriKSi3tqQp5v0nad7Gdp52uXe5Pm3B26nz.SdHHNRMZJJcWmzZn), [Deep Dive 2](https://us02web.zoom.us/rec/share/lfV6HHLI9JrbIihvji3aChwKMzpKNuAYstXwHjcAAXbBI6pt1e1GTGheEY-vR0G6.xRejirZnUaAxQB3_) |
| `did:cid` | **No** | [Spec](https://archetech.com/protocol.html) ([v0.7.0](https://github.com/archetech/archon)) | No | [Yes](https://github.com/decentralized-identity/did-methods/blob/main/method-proposals/PROPOSAL-did-cid.md) | No | No | No | [Partial](../method-proposals/PROPOSAL-did-cid.md) | [Yes](../method-proposals/PROPOSAL-did-cid.md) | TBD | 0 |
Expand Down
176 changes: 176 additions & 0 deletions dif-recommended/findings-did-ethr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# Findings: did:ethr DIF-recommended DID method

This "findings" document summarizes the process that led to the status
of `did:ethr` as a DIF-recommended DID method.

This process is documented here: <https://github.com/decentralized-identity/did-methods/tree/main/dif-recommended>

**Date of this document:** 15th April 2026

## Overview

**DID method:** `did:ethr`

**DID method specification:** [v1.0](https://github.com/decentralized-identity/ethr-did-resolver/blob/master/doc/did-method-spec.md)

**Open issues (3):** <https://github.com/decentralized-identity/ethr-did-resolver/issues>

**PRs (0):** <https://github.com/decentralized-identity/ethr-did-resolver/pulls>

## W3C Registry

**Yes**, see here: <https://www.w3.org/TR/did-extensions-methods/>

## Method Proposal

**Yes**, see here: <https://github.com/decentralized-identity/did-methods/blob/main/method-proposals/PROPOSAL-did-ethr.md>

## W3C Tests

**Yes**, see here: <https://w3c.github.io/did-test-suite/#M14>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated test results in this PR: w3c/did-test-suite#241


Number of tested implementations of `did:ethr`: **TBD**

### Implementation: <https://github.com/decentralized-identity/ethr-did-resolver/>

**Results:** <https://github.com/w3c/did-test-suite/blob/main/packages/did-core-test-server/suites/implementations/dereferencer-ethr-2021-consensys-mesh.json>

2 passing

## Universal Resolver

**Yes, incorporated into uniresolver directly**, see here:
<https://github.com/decentralized-identity/universal-resolver/blob/1410aff24131f2e0fbc5151a5954a452b45b170d/uni-resolver-web/src/main/resources/application.yml#L73-L80>

**Docker image:**
n/a

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Universal resolver driver image: https://hub.docker.com/r/uport/uni-resolver-driver-did-uport.

It covers multiple DID methods, including did:ethr


**Example query:**
<https://dev.uniresolver.io/#did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736>

## DID Traits

**NOT YET**, see here:
<https://github.com/decentralized-identity/did-traits/tree/main/methods>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A did-traits entry for did:ethr was added in this PR: decentralized-identity/did-traits#69


## Multiple Implementations

**TBD**, see here:
<https://link-to-information-about-implementations/>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See Rust implementation: spruceid/ssi#698
See .net implementation: moisesja/net-did#70

If these don't get merged in due time they will be published as independent libraries.


Also, an independent but non-compliant resolver implementation, using the same infrastructure: https://github.com/energywebfoundation/ew-did-registry/tree/development/packages/did-ethr-resolver


## Deployments

**TBD**, see here:
<https://link-to-information-about-deployments/>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This list of registry contract deployments for various networks may help: https://github.com/decentralized-identity/ethr-did-resolver/blob/master/src/config/deployments.ts


## Standardization Target

**TBD**

## Presentations and Deep Dives

### Initial Presentation

**Date:** Apr 1, 2026 17:00 UTC

[Recording](https://us02web.zoom.us/rec/share/AphrjaZ6ha9zv6Z4sMsc1du9WG6BcyFkq8uCGry-xiruG-o58ggjuvSlNsjD4HFQ.Hq5JIy4LthJL1t4z)

Main topics and questions by audience:

- Drummond: Is this a SCID? Mircea: Yes, initial is SCID, blockchain is witness to verifiable history
- (Participant 2) Topic 2

All questions answered and issues addressed? **Yes**

### Deep Dive 1

**Date:** Apr 15, 2026 17:00 UTC & Apr 22, 2026 17:00 UTC (bis)

[Recording](https://us02web.zoom.us/rec/share/Q3F5d2qM1dhcMTQzzdCYwTjcAtswJBjD-LXejwShZc3DRGzpl-DQAnIKhbJISDQ.gaBolbAIoN6VyZMD)

Main topics and questions by audience (15Apr):

- Tour of [proposal PR](https://github.com/decentralized-identity/ethr-did-resolver/blob/master/doc/did-method-spec.md)
- sidebar: DID update can rotate control to a smart contract w/arbitrary superpowers (multisig, other keys with precompile, ZK, etc)
- sidebar: implicit use makes usage metrics impossible; in uPort days a tiny percentage every updated/rotated off of implicit DID
- sidebar: energy consumption (trivial, other than the eth nodes themselves)
- sidebar: crypto agility: various key types inherent to EVM, including recently added P-256, some additional one available on specific chains (e.g. ZK L2s);
- did DOCUMENT ITSELF can express any key that fits in a JSON string, even if can't be verified onchain
- Christian: Better explanation of how ERCs/EIPs define smart contracts?
- BF: Solidity and ABIs in 90seconds
- Mircea: no, ERC defines (and was accompanied by) reference implementation but people make variants w/ additional functions on private networks; permissionless; see Energy Web example linked from proposal PR
- Slides
- core CRUD mechanics
- only keys and serviceEndpoints; these are NOT profiles, don't add user-generated content! blockchains are append-only!
- registry
- live onchain demo + uniresolver !!!
- Sidebar on multisig
- Jonathan: but multisig rules/logic not encoded in the did doc, right? Mircea: no, EVM just makes any signer (offchain or on-) an opaque address; you have to look up that logic somewhere else (etherscan for known/public contracts for ex.)
- Also arbitrary keys can be added to any DID Doc if it has a registered LD-suite; even CProof2022 !!!

[Recording of part 2]()

Main topics and questions by audience (22Apr):

- slower re-run/summary of [walkthrough interactive demo website](https://mirceanis.xyz/ethr-intro/) seen at the end of deep dive 1 part 1 and preview of [ethr-manager](https://mirceanis.xyz/ethr-manager)
- EVM basics, registry explanation (DIDOwner === `controller`), etherscan of an emitted event (script extracts transaction ID/blockheight from the registry); possible to live-demo at the etherscan/"raw logs" level but didn't prepare for today (it's hard!)
- Slide /#/7: CRUD registry logic diagram 😎
- sidebar on The Graph: [trustless!] eventsourcing overlay for tracking registry events in realtime (lower-latency) or historically
- sidebar on production applications/usecases:
- Vdods: did:ethr is also used in OCI consortium, which is mentioned [here](https://blog.identity.foundation/regulated-messaging-community/) in our write-up about did:webplus usecases
- /#/9: crucially network-scoped/chain-scoped registries
- priv networks often gasless, and usecases often "sponsor gas"\
- /#/11: what is publishable/changeable - no PII/free-form UGC, just verificationMethods and serviceEndpoints
- makki: how does this work on "private chains"? bf: debatable, GDPR still considers verifiable data a publication if it's ever leaked (all chainstate)
- makki: implementation history? mircea: launched 2018, used many times in prod across the eth ecosystem (often in permissioned networks)
- /#/11: privacy guardrails: only serviceEndpoints and keys
- live demo on https://mirceanis.xyz/ethr-manager/ - adding and removing keys, walkthrough of actual calls in metamask confirmation modal
- did plane versus control plane: roll "owner" (`controller`) property to a Gnosis Safe (onchain multisig) live demo
- Q&A
- otto: next steps for did:ethr? roadmap? Mircea: few buckets of changes:
- registry learning new ways to interpret these events (add alsoKnownAs, for example, or DID-Linked Resources entries)
- registry can be used for other kinds of data (the graph uses variants for diff event-tracking registries NOT of did doc events)
- version bump - registries should be versions and can coexist on a given network (querier would need to know which to look in)
- possible features/changes: currently registry is a little trustful, just points to prevDoc transaction
- feature requests being entertained!
- vdods: query params on did resolution? ?versionTime= or ?versionId=?
- mircea: they should be supported, use block number as ?versionId instead of monotonic counter
- mircea: not sure if versionTime is supported now but once was, can be built into specific resolvers easily
- blockheight deterministically timed since The Merge/Eth2.0

All questions answered and issues addressed? **Yes**

### Deep Dive 2

**Date:** Jun 01, 2026 17:00 UTC

[Recording](https://us02web.zoom.us/rec/play/mAKRu0W7Wdh9NKiH7Svw-NPNxVdYxSiyxB7d_Fl8Ej0VQzbr1_ARW1IClERsd4v-TErHqnsBZqO6cT1t.2nzWtfOrsCX3Zzhl)

Main topics and questions by audience:

- live demos
- versionId=blockHeight (more detailed than on first deep dive)
- deactivation event sent to chain and confirmed live
- delegated signing to multisig contract
- expanding an implicit did
- minor versioning/backwards-compat: legacy key expressions (allowed in older implementations), canonicalization in more recent versions
- Q&A
- eike: decision not to store JSON diffs/deltas (like Sidetree), and decision to trust most recent valid event's backlink-walk
- mircea: alternatives were considered, but no business case for more verbose/free-form/delta-based registry in the community at the time ref impl was designed; alternate registry designs are implicitly allowed (that sidestep or double-check the RPC node oracle), but no one has advocated for that more "crawl whole chain and verify every event" for lack of a business case for it
- christian: wait, you mean arbitrary services can be added? i'm going to add an `alsoKnownAs` service to point my did:ethr to the did:cid that controls it!
- jonathan: requirements for recommended: w3c test suite, for example?
- mircea: i need to update the w3c test suite because of minor breaking changes mentioned in the spec; as i said earlier, uniresolver driver update is in the queue on github
- jonathan: well, 60 day window starts today, so don't take too long!

All questions answered and issues addressed? **Yes**

## Pull Request for DIF-recommended status

<https://github.com/decentralized-identity/did-methods/pull/00> **(3 comments)**

Main questions and topics:

- (Participant 1) Topic 1
- (Participant 2) Topic 2

All questions answered and issues addressed? **Yes**