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.

Remove some deactivation logic, use a length test to stop you deactivating except by calling deactivate()

+2 -9
+1 -8
src/CowRegistry.sol
··· 17 17 event ControllerUpdated(bytes32 indexed cowHash, address controller); 18 18 event WrappedDIDUpdated(bytes32 indexed cowHash, string wrappedDID); 19 19 20 - function _isDeactivated(bytes32 cowHash) internal view returns (bool) { 21 - return keccak256(bytes(cows[cowHash].wrappedDID)) == keccak256(bytes(DEACTIVATED)); 22 - } 23 - 24 20 function updateWrappedDIDByHash(bytes32 cowHash, string memory wrappedDID) public { 25 - require(!_isDeactivated(cowHash)); 26 21 require(msg.sender == cows[cowHash].controller); 27 - require(keccak256(bytes(wrappedDID)) != keccak256(bytes(DEACTIVATED)), "Use deactivate() to deactivate"); 22 + require(bytes(wrappedDID).length > 5, "Use deactivate() to deactivate"); 28 23 29 24 cows[cowHash].wrappedDID = wrappedDID; 30 25 emit WrappedDIDUpdated(cowHash, wrappedDID); 31 26 } 32 27 33 28 function updateControllerByHash(bytes32 cowHash, address controller) public { 34 - require(!_isDeactivated(cowHash)); 35 29 require(msg.sender == cows[cowHash].controller); 36 30 37 31 cows[cowHash].controller = controller; ··· 67 61 } 68 62 69 63 function deactivate(bytes32 cowHash) external { 70 - require(!_isDeactivated(cowHash)); 71 64 require(msg.sender == cows[cowHash].controller); 72 65 73 66 cows[cowHash].wrappedDID = DEACTIVATED;
+1 -1
test/CowRegistry.t.sol
··· 227 227 vm.prank(controller1); 228 228 registry.deactivate(cowHash); 229 229 230 - vm.prank(address(0)); 230 + vm.prank(controller1); 231 231 vm.expectRevert(); 232 232 registry.updateWrappedDIDByHash(cowHash, plcDID2); 233 233 }