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.

move empty check

+2 -2
+1 -1
README.md
··· 163 163 164 164 ## 9. Reference Implementation 165 165 166 - Deployed on Sepolia testnet: [`0xE75B156D97cd47a09939837411b0D9D7b64c3CF2`](https://sepolia.etherscan.io/address/0xE75B156D97cd47a09939837411b0D9D7b64c3CF2) 166 + Deployed on Sepolia testnet: [`0xfca809F35369b6A5F47f52226893Ae1B55eE281b`](https://sepolia.etherscan.io/address/0xfca809F35369b6A5F47f52226893Ae1B55eE281b) 167 167 168 168 **Contract functions (`CowRegistry.sol`):** 169 169 - `calculateCowHash(controller, wrappedDID)` — derive the registry key for a did:cow ID
+1 -1
src/CowRegistry.sol
··· 58 58 Cow storage cow = cows[cowHash]; 59 59 if (cow.deactivated) revert AlreadyDeactivated(); 60 60 if (!cow.initialized) { 61 + if (bytes(_wrappedDID).length == 0) revert EmptyWrappedDID(); 61 62 cow.initialized = true; 62 63 cow.controller = _controller; 63 64 cow.wrappedDID = _wrappedDID; ··· 122 123 /// @param _controller The initial controller address. 123 124 /// @param _wrappedDID The initial wrapped DID, without the leading "did:" prefix. 124 125 function initializeCow(address _controller, string memory _wrappedDID) external { 125 - if (bytes(_wrappedDID).length == 0) revert EmptyWrappedDID(); 126 126 _ensureCowInitialized(_controller, _wrappedDID); 127 127 } 128 128