did:cow, a proposal for an ID resolution method with most of the convenience of did:plc/did:web and the robustness of a public blockchain
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

clarity

+9 -16
+9 -16
README.md
··· 94 94 The did:cow registry contract performs the following steps: 95 95 96 96 - If no on-chain record exists, resolve the wrapped DID from the identifier directly. 97 - - If an on-chain record exists, prepend `did:` to the returned wrapped DID value and resolve that. 97 + - If an on-chain record exists, return the wrapped DID value. 98 98 - If the record exists but has been deactivated, return deactivated status. 99 99 100 100 Resolve the wrapped DID as per that DID system's resolution method. 101 + 102 + `initial_wrapped_did` should omit the initial "`did:`". 101 103 102 104 ### 6.3 Update 103 105 ··· 109 111 110 112 ### 6.4 Deactivate 111 113 112 - Call `deactivate(initial_controller_address, initial_wrapped_did)` from the current controller to permanently deactivate a did:cow ID. If the did:cow ID has not been registered on-chain yet, it will be registered automatically in the same transaction. 114 + Call `deactivate` / `deactivateByHash` from the current controller to permanently deactivate a did:cow ID. 115 + 116 + If the did:cow ID has not been registered on-chain yet, it will be registered automatically in the same transaction. 117 + The `initial_controller_address` should omit the initial "`did:`". 113 118 114 119 After deactivation, `resolve` returns an empty string and the DID cannot be reactivated. 115 120 ··· 245 250 } 246 251 ``` 247 252 248 - ## 11. Comparison 249 - 250 - | Feature | did:cow | did:key | did:web | did:plc | 251 - |---------|---------|---------|---------|---------| 252 - | Rotation Support | ✓ | ✗ | ✓ | ✓ | 253 - | Zero-cost Creation | ✓ | ✓ | ✓ | ✓ | 254 - | Zero-cost Updates | ✗ | ✓ | ✓ | ✓ | 255 - | Decentralized | ✓ | ✓ | ✗ | ✗ | 256 - | Blockchain Required | Ethereum | None | None | None | 257 - | Rotation Authority | Ethereum | N/A | DNS | PLC Directory | 258 - | Censorship Resistant | ✓ | ✓ | ✗ | ✗ | 259 - 260 - ## 12. Philosophical Considerations 253 + ## 11. Philosophical Considerations 261 254 262 255 DIDs are intended to be permanent identifiers. Using a wrapper implies that the wrapped DID is not in fact a permanent identifier. 263 256 264 257 We consider this to illuminate a problem with the existing DIDs, rather than with this proposal. A permanent wrapper is required because users cannot be sufficiently confident in the permanence of their existing options. 265 258 266 - ## 13. References 259 + ## 12. References 267 260 268 261 - [DID Core Specification](https://www.w3.org/TR/did-core/) 269 262 - [DID Method Rubric](https://w3c.github.io/did-rubric/)