Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 49 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Contract | 15935113 | 660 days ago | IN | 0 ETH | 0.0066948 | ||||
Add Contract | 15935072 | 660 days ago | IN | 0 ETH | 0.01027217 | ||||
Update Contract | 15000024 | 802 days ago | IN | 0 ETH | 0.00072321 | ||||
Update Contract | 14999984 | 802 days ago | IN | 0 ETH | 0.00051038 | ||||
Update Contract | 14999947 | 802 days ago | IN | 0 ETH | 0.00070406 | ||||
Update Contract | 14999919 | 802 days ago | IN | 0 ETH | 0.00072011 | ||||
Update Contract | 14979930 | 805 days ago | IN | 0 ETH | 0.00320655 | ||||
Update Contract | 14979911 | 805 days ago | IN | 0 ETH | 0.00447435 | ||||
Update Contract | 14979891 | 805 days ago | IN | 0 ETH | 0.00295757 | ||||
Update Contract | 14979882 | 805 days ago | IN | 0 ETH | 0.00312656 | ||||
Update Contract | 14979860 | 805 days ago | IN | 0 ETH | 0.00415428 | ||||
Update Contract | 14979840 | 805 days ago | IN | 0 ETH | 0.00671549 | ||||
Update Contract | 14979789 | 805 days ago | IN | 0 ETH | 0.00224086 | ||||
Update Contract | 14979782 | 805 days ago | IN | 0 ETH | 0.00221773 | ||||
Update Contract | 14961804 | 808 days ago | IN | 0 ETH | 0.00195223 | ||||
Add Contract | 14958276 | 809 days ago | IN | 0 ETH | 0.00329282 | ||||
Update Contract | 14958269 | 809 days ago | IN | 0 ETH | 0.00140818 | ||||
Update Contract | 14958258 | 809 days ago | IN | 0 ETH | 0.00164848 | ||||
Add Contract | 14957276 | 809 days ago | IN | 0 ETH | 0.00821655 | ||||
Add Contract | 14957236 | 809 days ago | IN | 0 ETH | 0.00519173 | ||||
Add Contract | 14932579 | 813 days ago | IN | 0 ETH | 0.00527191 | ||||
Add Contract | 14792070 | 836 days ago | IN | 0 ETH | 0.01009236 | ||||
Update Contract | 14527497 | 878 days ago | IN | 0 ETH | 0.0035152 | ||||
Update Contract | 14527470 | 878 days ago | IN | 0 ETH | 0.00315225 | ||||
Update Contract | 14524163 | 878 days ago | IN | 0 ETH | 0.00238551 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ContractRegistry
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 // Docgen-SOLC: 0.8.0 pragma solidity ^0.8.0; import "../interfaces/IACLRegistry.sol"; import "../interfaces/IContractRegistry.sol"; /** * @dev This Contract holds reference to all our contracts. Every contract A that needs to interact with another contract B calls this contract * to ask for the address of B. * This allows us to update addresses in one central point and reduces constructing and management overhead. */ contract ContractRegistry is IContractRegistry { struct Contract { address contractAddress; bytes32 version; } /* ========== STATE VARIABLES ========== */ IACLRegistry public aclRegistry; mapping(bytes32 => Contract) public contracts; bytes32[] public contractNames; /* ========== EVENTS ========== */ event ContractAdded(bytes32 _name, address _address, bytes32 _version); event ContractUpdated(bytes32 _name, address _address, bytes32 _version); event ContractDeleted(bytes32 _name); /* ========== CONSTRUCTOR ========== */ constructor(IACLRegistry _aclRegistry) { aclRegistry = _aclRegistry; contracts[keccak256("ACLRegistry")] = Contract({contractAddress: address(_aclRegistry), version: keccak256("1")}); contractNames.push(keccak256("ACLRegistry")); } /* ========== VIEW FUNCTIONS ========== */ function getContractNames() external view returns (bytes32[] memory) { return contractNames; } function getContract(bytes32 _name) external view override returns (address) { return contracts[_name].contractAddress; } /* ========== MUTATIVE FUNCTIONS ========== */ function addContract( bytes32 _name, address _address, bytes32 _version ) external { aclRegistry.requireRole(keccak256("DAO"), msg.sender); require(contracts[_name].contractAddress == address(0), "contract already exists"); contracts[_name] = Contract({contractAddress: _address, version: _version}); contractNames.push(_name); emit ContractAdded(_name, _address, _version); } function updateContract( bytes32 _name, address _newAddress, bytes32 _version ) external { aclRegistry.requireRole(keccak256("DAO"), msg.sender); require(contracts[_name].contractAddress != address(0), "contract doesnt exist"); contracts[_name] = Contract({contractAddress: _newAddress, version: _version}); emit ContractUpdated(_name, _newAddress, _version); } function deleteContract(bytes32 _name, uint256 _contractIndex) external { aclRegistry.requireRole(keccak256("DAO"), msg.sender); require(contracts[_name].contractAddress != address(0), "contract doesnt exist"); require(contractNames[_contractIndex] == _name, "this is not the contract you are looking for"); delete contracts[_name]; delete contractNames[_contractIndex]; emit ContractDeleted(_name); } }
// SPDX-License-Identifier: GPL-3.0 // Docgen-SOLC: 0.8.0 pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IACLRegistry { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns `true` if `account` has been granted `permission`. */ function hasPermission(bytes32 permission, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; function setRoleAdmin(bytes32 role, bytes32 adminRole) external; function grantPermission(bytes32 permission, address account) external; function revokePermission(bytes32 permission) external; function requireApprovedContractOrEOA(address account) external view; function requireRole(bytes32 role, address account) external view; function requirePermission(bytes32 permission, address account) external view; function isRoleAdmin(bytes32 role, address account) external view; }
// SPDX-License-Identifier: GPL-3.0 // Docgen-SOLC: 0.8.0 pragma solidity ^0.8.0; /** * @dev External interface of ContractRegistry. */ interface IContractRegistry { function getContract(bytes32 _name) external view returns (address); }
{ "evmVersion": "istanbul", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1000 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IACLRegistry","name":"_aclRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_name","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_version","type":"bytes32"}],"name":"ContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_name","type":"bytes32"}],"name":"ContractDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_name","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_version","type":"bytes32"}],"name":"ContractUpdated","type":"event"},{"inputs":[],"name":"aclRegistry","outputs":[{"internalType":"contract IACLRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"bytes32","name":"_version","type":"bytes32"}],"name":"addContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractNames","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"contracts","outputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes32","name":"version","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"},{"internalType":"uint256","name":"_contractIndex","type":"uint256"}],"name":"deleteContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"}],"name":"getContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractNames","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_name","type":"bytes32"},{"internalType":"address","name":"_newAddress","type":"address"},{"internalType":"bytes32","name":"_version","type":"bytes32"}],"name":"updateContract","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610a19380380610a1983398101604081905261002f91610138565b600080546001600160a01b039283166001600160a01b031991821681178355604080518082019091529081527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660208083019182527f15fa0125f52e5705da1148bfcf00974823c4381bee4314203ede255f9477b73e80865260019182905292517f7361e8ccf7a27163a98e050d746a5c73d23616ea599eb9af9e4a86e96a9dfc0880549190971694169390931790945592517f7361e8ccf7a27163a98e050d746a5c73d23616ea599eb9af9e4a86e96a9dfc09556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0155610166565b600060208284031215610149578081fd5b81516001600160a01b038116811461015f578182fd5b9392505050565b6108a4806101756000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063d5a161091161005b578063d5a16109146100f5578063e16c7d9814610108578063ec56a3731461011b578063fe3c458e1461013c57610088565b806334d40a8f1461008d57806337df1e9d146100a25780633ca6bb92146100c05780639160380e146100e0575b600080fd5b6100a061009b366004610690565b61014f565b005b6100aa6102a4565b6040516100b79190610720565b60405180910390f35b6100d36100ce366004610678565b6102fc565b6040516100b79190610764565b6100e861031d565b6040516100b791906106f3565b6100a06101033660046106d2565b61032c565b6100e8610116366004610678565b6104c7565b61012e610129366004610678565b6104e2565b6040516100b7929190610707565b6100a061014a366004610690565b610507565b60005460405163d09a20c560e01b81526001600160a01b039091169063d09a20c5906101a1907fd0a4ad96d49edb1c33461cebc6fb2609190f32c904e3c3f5877edb4488dee91e90339060040161076d565b60006040518083038186803b1580156101b957600080fd5b505afa1580156101cd573d6000803e3d6000fd5b5050506000848152600160205260409020546001600160a01b0316151590506102115760405162461bcd60e51b8152600401610208906107da565b60405180910390fd5b6040805180820182526001600160a01b038481168252602080830185815260008881526001928390528590209351845473ffffffffffffffffffffffffffffffffffffffff191693169290921783559051910155517fb69768dcac5758cdbac4aa0c3113c765359474832ce059d53f5e799e0922db6f9061029790859085908590610784565b60405180910390a1505050565b606060028054806020026020016040519081016040528092919081815260200182805480156102f257602002820191906000526020600020905b8154815260200190600101908083116102de575b5050505050905090565b6002818154811061030c57600080fd5b600091825260209091200154905081565b6000546001600160a01b031681565b60005460405163d09a20c560e01b81526001600160a01b039091169063d09a20c59061037e907fd0a4ad96d49edb1c33461cebc6fb2609190f32c904e3c3f5877edb4488dee91e90339060040161076d565b60006040518083038186803b15801561039657600080fd5b505afa1580156103aa573d6000803e3d6000fd5b5050506000838152600160205260409020546001600160a01b0316151590506103e55760405162461bcd60e51b8152600401610208906107da565b816002828154811061040757634e487b7160e01b600052603260045260246000fd5b90600052602060002001541461042f5760405162461bcd60e51b815260040161020890610811565b60008281526001602081905260408220805473ffffffffffffffffffffffffffffffffffffffff191681550155600280548290811061047e57634e487b7160e01b600052603260045260246000fd5b90600052602060002001600090557ffcb9b89d9fdad6183290641024092e3a078212303eda7df8d64648902cd7600b826040516104bb9190610764565b60405180910390a15050565b6000908152600160205260409020546001600160a01b031690565b600160208190526000918252604090912080549101546001600160a01b039091169082565b60005460405163d09a20c560e01b81526001600160a01b039091169063d09a20c590610559907fd0a4ad96d49edb1c33461cebc6fb2609190f32c904e3c3f5877edb4488dee91e90339060040161076d565b60006040518083038186803b15801561057157600080fd5b505afa158015610585573d6000803e3d6000fd5b5050506000848152600160205260409020546001600160a01b03161590506105bf5760405162461bcd60e51b8152600401610208906107a3565b6040805180820182526001600160a01b038481168252602080830185815260008881526001928390528581209451855473ffffffffffffffffffffffffffffffffffffffff19169416939093178455519281019290925560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01849055517f41f0868602f01af184ca25746dd5d2fff355679ad1861385cf8bd3f6d3da8a579061029790859085908590610784565b600060208284031215610689578081fd5b5035919050565b6000806000606084860312156106a4578182fd5b8335925060208401356001600160a01b03811681146106c1578283fd5b929592945050506040919091013590565b600080604083850312156106e4578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156107585783518352928401929184019160010161073c565b50909695505050505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03919091166020830152604082015260600190565b60208082526017908201527f636f6e747261637420616c726561647920657869737473000000000000000000604082015260600190565b60208082526015908201527f636f6e747261637420646f65736e742065786973740000000000000000000000604082015260600190565b6020808252602c908201527f74686973206973206e6f742074686520636f6e747261637420796f752061726560408201527f206c6f6f6b696e6720666f72000000000000000000000000000000000000000060608201526080019056fea26469706673582212207a46c9c56f0eeb6008131185a5ecd8868d6322dabe875534530d46cd42418efc64736f6c634300080000330000000000000000000000008a41aaa4b467ea545dddc5759ce3d35984f093f4
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063d5a161091161005b578063d5a16109146100f5578063e16c7d9814610108578063ec56a3731461011b578063fe3c458e1461013c57610088565b806334d40a8f1461008d57806337df1e9d146100a25780633ca6bb92146100c05780639160380e146100e0575b600080fd5b6100a061009b366004610690565b61014f565b005b6100aa6102a4565b6040516100b79190610720565b60405180910390f35b6100d36100ce366004610678565b6102fc565b6040516100b79190610764565b6100e861031d565b6040516100b791906106f3565b6100a06101033660046106d2565b61032c565b6100e8610116366004610678565b6104c7565b61012e610129366004610678565b6104e2565b6040516100b7929190610707565b6100a061014a366004610690565b610507565b60005460405163d09a20c560e01b81526001600160a01b039091169063d09a20c5906101a1907fd0a4ad96d49edb1c33461cebc6fb2609190f32c904e3c3f5877edb4488dee91e90339060040161076d565b60006040518083038186803b1580156101b957600080fd5b505afa1580156101cd573d6000803e3d6000fd5b5050506000848152600160205260409020546001600160a01b0316151590506102115760405162461bcd60e51b8152600401610208906107da565b60405180910390fd5b6040805180820182526001600160a01b038481168252602080830185815260008881526001928390528590209351845473ffffffffffffffffffffffffffffffffffffffff191693169290921783559051910155517fb69768dcac5758cdbac4aa0c3113c765359474832ce059d53f5e799e0922db6f9061029790859085908590610784565b60405180910390a1505050565b606060028054806020026020016040519081016040528092919081815260200182805480156102f257602002820191906000526020600020905b8154815260200190600101908083116102de575b5050505050905090565b6002818154811061030c57600080fd5b600091825260209091200154905081565b6000546001600160a01b031681565b60005460405163d09a20c560e01b81526001600160a01b039091169063d09a20c59061037e907fd0a4ad96d49edb1c33461cebc6fb2609190f32c904e3c3f5877edb4488dee91e90339060040161076d565b60006040518083038186803b15801561039657600080fd5b505afa1580156103aa573d6000803e3d6000fd5b5050506000838152600160205260409020546001600160a01b0316151590506103e55760405162461bcd60e51b8152600401610208906107da565b816002828154811061040757634e487b7160e01b600052603260045260246000fd5b90600052602060002001541461042f5760405162461bcd60e51b815260040161020890610811565b60008281526001602081905260408220805473ffffffffffffffffffffffffffffffffffffffff191681550155600280548290811061047e57634e487b7160e01b600052603260045260246000fd5b90600052602060002001600090557ffcb9b89d9fdad6183290641024092e3a078212303eda7df8d64648902cd7600b826040516104bb9190610764565b60405180910390a15050565b6000908152600160205260409020546001600160a01b031690565b600160208190526000918252604090912080549101546001600160a01b039091169082565b60005460405163d09a20c560e01b81526001600160a01b039091169063d09a20c590610559907fd0a4ad96d49edb1c33461cebc6fb2609190f32c904e3c3f5877edb4488dee91e90339060040161076d565b60006040518083038186803b15801561057157600080fd5b505afa158015610585573d6000803e3d6000fd5b5050506000848152600160205260409020546001600160a01b03161590506105bf5760405162461bcd60e51b8152600401610208906107a3565b6040805180820182526001600160a01b038481168252602080830185815260008881526001928390528581209451855473ffffffffffffffffffffffffffffffffffffffff19169416939093178455519281019290925560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01849055517f41f0868602f01af184ca25746dd5d2fff355679ad1861385cf8bd3f6d3da8a579061029790859085908590610784565b600060208284031215610689578081fd5b5035919050565b6000806000606084860312156106a4578182fd5b8335925060208401356001600160a01b03811681146106c1578283fd5b929592945050506040919091013590565b600080604083850312156106e4578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156107585783518352928401929184019160010161073c565b50909695505050505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03919091166020830152604082015260600190565b60208082526017908201527f636f6e747261637420616c726561647920657869737473000000000000000000604082015260600190565b60208082526015908201527f636f6e747261637420646f65736e742065786973740000000000000000000000604082015260600190565b6020808252602c908201527f74686973206973206e6f742074686520636f6e747261637420796f752061726560408201527f206c6f6f6b696e6720666f72000000000000000000000000000000000000000060608201526080019056fea26469706673582212207a46c9c56f0eeb6008131185a5ecd8868d6322dabe875534530d46cd42418efc64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008a41aaa4b467ea545dddc5759ce3d35984f093f4
-----Decoded View---------------
Arg [0] : _aclRegistry (address): 0x8A41aAa4B467ea545DDDc5759cE3D35984F093f4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008a41aaa4b467ea545dddc5759ce3d35984f093f4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.