-
Notifications
You must be signed in to change notification settings - Fork 20
Mark did ethr as dif recommended #104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
35fd191
d2232d8
5953a3a
72bd959
b709c37
a801b3e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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> | ||
|
|
||
| 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 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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> | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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/> | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See Rust implementation: spruceid/ssi#698 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/> | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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** | ||
There was a problem hiding this comment.
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