Add version history to capability registry

add-version-history-to-capability-registry · discovery-registry · 962 B runtime · registry-info

scores

source

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract CapabilityRegistry {
    uint256 private constant BASE_FEE = 0.001 ether;

    mapping(bytes32 => address) public ownerOf;
    mapping(bytes32 => bytes32) public manifest;
    mapping(address => uint256) public nameCount;
    mapping(bytes32 => uint256) public version;

    error NameTaken();
    error WrongFee();
    error NotOwner();

    function register(bytes32 name, bytes32 manifestHash) external payable {
        if (ownerOf[name] != address(0)) revert NameTaken();
        uint256 count = nameCount[msg.sender] + 1;
        uint256 fee = BASE_FEE * count * count;
        if (msg.value != fee) revert WrongFee();
        ownerOf[name] = msg.sender;
        manifest[name] = manifestHash;
        nameCount[msg.sender] = count;
        version[name] = 1;
    }

    function updateManifest(bytes32 name, bytes32 newManifestHash) external {
        if (msg.sender != ownerOf[name]) revert NotOwner();
        manifest[name] = newManifestHash;
        version[name]++;
    }
}

published

published on mainnet · 0x7A3589f90c9B84AeDe2222263Cc351537eb33C36 · tx 0x475190ac3f09ca71… · tempo (4217) · mainnet

published on testnet · 0x01358f070f4dBdD9b992863A99B061aDb9d95f9D · tx 0xfb7e2e48c85ac922… · tempo (42431) · testnet