Contract Overview
Balance:
0 CRO
CRO Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x935990c8298328482e74959f65dcc82659d421039ac9ffb1862ed4cf31d6dd0f | Set Subnode Owne... | 4322757 | 207 days 21 hrs ago | Cronos ID: Deployer | IN | 0x7f4c61116729d5b27e5f180062fdfbf32e9283e5 | 0 CRO | 0.251626566617 | |
0x66477bcab8985861df543e3b8d2b4c8b183f523060e04eac87e892f32be34b3f | Set Owner | 4322731 | 207 days 21 hrs ago | Cronos ID: Deployer | IN | 0x7f4c61116729d5b27e5f180062fdfbf32e9283e5 | 0 CRO | 0.160058764945 | |
0x5a794c654622800bf45bace0ea0af7f11ef4e99fe9bd023150bd8dff70fc02b7 | 0x60806040 | 4322726 | 207 days 21 hrs ago | Cronos ID: Deployer | IN | Create: CROIDRegistry | 0 CRO | 3.616925714035 |
[ Download CSV Export ]
Contract Name:
CROIDRegistry
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.8.4; import "./CROID.sol"; /** * The CROID registry contract. */ contract CROIDRegistry is CROID { struct Record { address owner; address resolver; uint64 ttl; } mapping(bytes32 => Record) records; mapping(address => mapping(address => bool)) operators; // Permits modifications only by the owner of the specified node. modifier authorised(bytes32 node) { address _owner = records[node].owner; require(_owner == msg.sender || operators[_owner][msg.sender]); _; } /** * @dev Constructs a new CROID registry. */ constructor() { records[0x0].owner = msg.sender; } /** * @dev Sets the record for a node. * @param node The node to update. * @param _owner The address of the new owner. * @param _resolver The address of the resolver. * @param _ttl The TTL in seconds. */ function setRecord( bytes32 node, address _owner, address _resolver, uint64 _ttl ) external virtual override { setOwner(node, _owner); _setResolverAndTTL(node, _resolver, _ttl); } /** * @dev Sets the record for a subnode. * @param node The parent node. * @param label The hash of the label specifying the subnode. * @param _owner The address of the new owner. * @param _resolver The address of the resolver. * @param _ttl The TTL in seconds. */ function setSubnodeRecord( bytes32 node, bytes32 label, address _owner, address _resolver, uint64 _ttl ) external virtual override { bytes32 subnode = setSubnodeOwner(node, label, _owner); _setResolverAndTTL(subnode, _resolver, _ttl); } /** * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node. * @param node The node to transfer ownership of. * @param _owner The address of the new owner. */ function setOwner(bytes32 node, address _owner) public virtual override authorised(node) { _setOwner(node, _owner); emit Transfer(node, _owner); } /** * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node. * @param node The parent node. * @param label The hash of the label specifying the subnode. * @param _owner The address of the new owner. */ function setSubnodeOwner( bytes32 node, bytes32 label, address _owner ) public virtual override authorised(node) returns (bytes32) { bytes32 subnode = keccak256(abi.encodePacked(node, label)); _setOwner(subnode, _owner); emit NewOwner(node, label, _owner); return subnode; } /** * @dev Sets the resolver address for the specified node. * @param node The node to update. * @param _resolver The address of the resolver. */ function setResolver(bytes32 node, address _resolver) public virtual override authorised(node) { emit NewResolver(node, _resolver); records[node].resolver = _resolver; } /** * @dev Sets the TTL for the specified node. * @param node The node to update. * @param _ttl The TTL in seconds. */ function setTTL(bytes32 node, uint64 _ttl) public virtual override authorised(node) { emit NewTTL(node, _ttl); records[node].ttl = _ttl; } /** * @dev Enable or disable approval for a third party ("operator") to manage * all of `msg.sender`'s CROID records. Emits the ApprovalForAll event. * @param operator Address to add to the set of authorized operators. * @param approved True if the operator is approved, false to revoke approval. */ function setApprovalForAll(address operator, bool approved) external virtual override { operators[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } /** * @dev Returns the address that owns the specified node. * @param node The specified node. * @return address of the owner. */ function owner(bytes32 node) public view virtual override returns (address) { address addr = records[node].owner; if (addr == address(this)) { return address(0x0); } return addr; } /** * @dev Returns the address of the resolver for the specified node. * @param node The specified node. * @return address of the resolver. */ function resolver(bytes32 node) public view virtual override returns (address) { return records[node].resolver; } /** * @dev Returns the TTL of a node, and any records associated with it. * @param node The specified node. * @return ttl of the node. */ function ttl(bytes32 node) public view virtual override returns (uint64) { return records[node].ttl; } /** * @dev Returns whether a record has been imported to the registry. * @param node The specified node. * @return Bool if record exists */ function recordExists(bytes32 node) public view virtual override returns (bool) { return records[node].owner != address(0x0); } /** * @dev Query if an address is an authorized operator for another address. * @param _owner The address that owns the records. * @param _operator The address that acts on behalf of the owner. * @return True if `operator` is an approved operator for `owner`, false otherwise. */ function isApprovedForAll(address _owner, address _operator) external view virtual override returns (bool) { return operators[_owner][_operator]; } function _setOwner(bytes32 node, address _owner) internal virtual { address addr = _owner; if (addr == address(0x0)) { addr = address(this); } records[node].owner = addr; } function _setResolverAndTTL( bytes32 node, address _resolver, uint64 _ttl ) internal { if (_resolver != records[node].resolver) { records[node].resolver = _resolver; emit NewResolver(node, _resolver); } if (_ttl != records[node].ttl) { records[node].ttl = _ttl; emit NewTTL(node, _ttl); } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.8.4; interface CROID { // Logged when the owner of a node assigns a new owner to a subnode. event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner); // Logged when the owner of a node transfers ownership to a new account. event Transfer(bytes32 indexed node, address owner); // Logged when the resolver for a node changes. event NewResolver(bytes32 indexed node, address resolver); // Logged when the TTL of a node changes event NewTTL(bytes32 indexed node, uint64 ttl); // Logged when an operator is added or removed. event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); function setRecord( bytes32 node, address owner, address resolver, uint64 ttl ) external; function setSubnodeRecord( bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl ) external; function setSubnodeOwner( bytes32 node, bytes32 label, address owner ) external returns (bytes32); function setResolver(bytes32 node, address resolver) external; function setOwner(bytes32 node, address owner) external; function setTTL(bytes32 node, uint64 ttl) external; function setApprovalForAll(address operator, bool approved) external; function owner(bytes32 node) external view returns (address); function resolver(bytes32 node) external view returns (address); function ttl(bytes32 node) external view returns (uint64); function recordExists(bytes32 node) external view returns (bool); function isApprovedForAll(address owner, address operator) external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"resolver","type":"address"}],"name":"NewResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"NewTTL","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"recordExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_resolver","type":"address"},{"internalType":"uint64","name":"_ttl","type":"uint64"}],"name":"setRecord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"_resolver","type":"address"}],"name":"setResolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"_owner","type":"address"}],"name":"setSubnodeOwner","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_resolver","type":"address"},{"internalType":"uint64","name":"_ttl","type":"uint64"}],"name":"setSubnodeRecord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint64","name":"_ttl","type":"uint64"}],"name":"setTTL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"ttl","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb580546001600160a01b03191633179055610be6806100596000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80635b0fc9c311610081578063cf4088231161005b578063cf4088231461022f578063e985e9c514610242578063f79fe5381461029b57600080fd5b80635b0fc9c3146101f65780635ef2c7f014610209578063a22cb4651461021c57600080fd5b806314ab9038116100b257806314ab90381461017057806316a25cbd146101855780631896f70a146101e357600080fd5b80630178b8bf146100d957806302571be31461013c57806306ab59231461014f575b600080fd5b6101126100e73660046109c8565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61011261014a3660046109c8565b6102d3565b61016261015d366004610a0a565b61030e565b604051908152602001610133565b61018361017e366004610a57565b610405565b005b6101ca6101933660046109c8565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b60405167ffffffffffffffff9091168152602001610133565b6101836101f1366004610a83565b610517565b610183610204366004610a83565b610628565b610183610217366004610aa6565b6106f1565b61018361022a366004610afd565b610713565b61018361023d366004610b39565b6107aa565b61028b610250366004610b86565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610133565b61028b6102a93660046109c8565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b60008181526020819052604081205473ffffffffffffffffffffffffffffffffffffffff163081036103085750600092915050565b92915050565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff1633811480610373575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61037c57600080fd5b604080516020808201899052818301889052825180830384018152606090920190925280519101206103ae81866107c5565b60405173ffffffffffffffffffffffffffffffffffffffff86168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061046a575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61047357600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061057c575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61058557600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a2505060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff163381148061068d575073ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604080832033845290915290205460ff165b61069657600080fd5b6106a084846107c5565b60405173ffffffffffffffffffffffffffffffffffffffff8416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b60006106fe86868661030e565b905061070b818484610839565b505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6107b48484610628565b6107bf848383610839565b50505050565b8073ffffffffffffffffffffffffffffffffffffffff81166107e45750305b60009283526020839052604090922080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9093169290921790915550565b60008381526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff8381169116146108f1576000838152602081815260409182902060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff8281167401000000000000000000000000000000000000000090920416146109c3576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a25b505050565b6000602082840312156109da57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a0557600080fd5b919050565b600080600060608486031215610a1f57600080fd5b8335925060208401359150610a36604085016109e1565b90509250925092565b803567ffffffffffffffff81168114610a0557600080fd5b60008060408385031215610a6a57600080fd5b82359150610a7a60208401610a3f565b90509250929050565b60008060408385031215610a9657600080fd5b82359150610a7a602084016109e1565b600080600080600060a08688031215610abe57600080fd5b8535945060208601359350610ad5604087016109e1565b9250610ae3606087016109e1565b9150610af160808701610a3f565b90509295509295909350565b60008060408385031215610b1057600080fd5b610b19836109e1565b915060208301358015158114610b2e57600080fd5b809150509250929050565b60008060008060808587031215610b4f57600080fd5b84359350610b5f602086016109e1565b9250610b6d604086016109e1565b9150610b7b60608601610a3f565b905092959194509250565b60008060408385031215610b9957600080fd5b610ba2836109e1565b9150610a7a602084016109e156fea264697066735822122091f35efda7eef535c5b65442cd77b741331788ced8690226e1fed8f33c4b5a1a64736f6c634300080d0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.