@@ -10,32 +10,37 @@ import "@openzeppelin/contracts/metatx/ERC2771Context.sol";
1010import { IContractMetadataRegistry } from "./interfaces/IContractMetadataRegistry.sol " ;
1111
1212contract ContractMetadataRegistry is IContractMetadataRegistry , ERC2771Context , Multicall , AccessControlEnumerable {
13+
14+ /// @dev Only accounts with OPERATOR_ROLE can register metadata for contracts.
1315 bytes32 public constant OPERATOR_ROLE = keccak256 ("OPERATOR_ROLE " );
1416
1517 /*///////////////////////////////////////////////////////////////
16- State variables
18+ Mappings
1719 //////////////////////////////////////////////////////////////*/
1820
1921 /// @dev contract address deployed => metadata uri
2022 mapping (address => string ) public getMetadataUri;
2123
2224 /*///////////////////////////////////////////////////////////////
23- Constructor + modifiers
25+ Constructor
2426 //////////////////////////////////////////////////////////////*/
2527
2628 constructor (address _trustedForwarder ) ERC2771Context (_trustedForwarder) {
2729 _setupRole (DEFAULT_ADMIN_ROLE, _msgSender ());
2830 }
2931
3032 /*///////////////////////////////////////////////////////////////
31- External methods
33+ External functions
3234 //////////////////////////////////////////////////////////////*/
3335
36+ /// @dev Records `metadataUri` as metadata for the contract at `contractAddress`.
3437 function registerMetadata (address contractAddress , string memory metadataUri ) external {
35- require (hasRole (OPERATOR_ROLE, _msgSender ()), "not operator. " );
38+ require (hasRole (OPERATOR_ROLE, _msgSender ()), "Not operator. " );
3639 require (bytes (metadataUri).length > 0 , "No metadata " );
3740 require (bytes (getMetadataUri[contractAddress]).length == 0 , "Metadata already registered " );
41+
3842 getMetadataUri[contractAddress] = metadataUri;
43+
3944 emit MetadataRegistered (contractAddress, metadataUri);
4045 }
4146
0 commit comments