More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Loading...
Loading
Contract Name:
FIFSResolvingRegistrar
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.4.24; import "@aragon/os/contracts/lib/ens/AbstractENS.sol"; import "./ens/IPublicResolver.sol"; import "./IFIFSResolvingRegistrar.sol"; /** * A registrar that allocates subdomains and sets resolvers to the first person to claim them. * * Adapted from ENS' FIFSRegistrar: * https://github.com/ethereum/ens/blob/master/contracts/FIFSRegistrar.sol */ contract FIFSResolvingRegistrar is IFIFSResolvingRegistrar { bytes32 public rootNode; AbstractENS internal ens; IPublicResolver internal defaultResolver; bytes4 private constant ADDR_INTERFACE_ID = 0x3b3b57de; event ClaimSubdomain(bytes32 indexed subnode, address indexed owner, address indexed resolver); /** * Constructor. * @param _ensAddr The address of the ENS registry. * @param _defaultResolver The address of the default resolver to use for subdomains. * @param _node The node that this registrar administers. */ constructor(AbstractENS _ensAddr, IPublicResolver _defaultResolver, bytes32 _node) public { ens = _ensAddr; defaultResolver = _defaultResolver; rootNode = _node; } /** * Register a subdomain with the default resolver if it hasn't been claimed yet. * @param _subnode The hash of the label to register. * @param _owner The address of the new owner. */ function register(bytes32 _subnode, address _owner) external { registerWithResolver(_subnode, _owner, defaultResolver); } /** * Register a subdomain if it hasn't been claimed yet. * @param _subnode The hash of the label to register. * @param _owner The address of the new owner. * @param _resolver The address of the resolver. * If the resolver supports the address interface, the subdomain's address will * be set to the new owner. */ function registerWithResolver(bytes32 _subnode, address _owner, IPublicResolver _resolver) public { bytes32 node = keccak256(rootNode, _subnode); address currentOwner = ens.owner(node); require(currentOwner == address(0)); ens.setSubnodeOwner(rootNode, _subnode, address(this)); ens.setResolver(node, _resolver); if (_resolver.supportsInterface(ADDR_INTERFACE_ID)) { _resolver.setAddr(node, _owner); } // Give ownership to the claimer ens.setOwner(node, _owner); emit ClaimSubdomain(_subnode, _owner, address(_resolver)); } }
// See https://github.com/ensdomains/ens/blob/7e377df83f/contracts/AbstractENS.sol pragma solidity ^0.4.15; interface AbstractENS { function owner(bytes32 _node) public constant returns (address); function resolver(bytes32 _node) public constant returns (address); function ttl(bytes32 _node) public constant returns (uint64); function setOwner(bytes32 _node, address _owner) public; function setSubnodeOwner(bytes32 _node, bytes32 label, address _owner) public; function setResolver(bytes32 _node, address _resolver) public; function setTTL(bytes32 _node, uint64 _ttl) public; // 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); }
pragma solidity ^0.4.0; interface IPublicResolver { function supportsInterface(bytes4 interfaceID) constant returns (bool); function addr(bytes32 node) constant returns (address ret); function setAddr(bytes32 node, address addr); function hash(bytes32 node) constant returns (bytes32 ret); function setHash(bytes32 node, bytes32 hash); }
pragma solidity 0.4.24; import "./ens/IPublicResolver.sol"; interface IFIFSResolvingRegistrar { function register(bytes32 _subnode, address _owner) external; function registerWithResolver(bytes32 _subnode, address _owner, IPublicResolver _resolver) public; }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_subnode","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_subnode","type":"bytes32"},{"name":"_owner","type":"address"},{"name":"_resolver","type":"address"}],"name":"registerWithResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rootNode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_ensAddr","type":"address"},{"name":"_defaultResolver","type":"address"},{"name":"_node","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"subnode","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"resolver","type":"address"}],"name":"ClaimSubdomain","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516060806105ef83398101604090815281516020830151919092015160018054600160a060020a03948516600160a060020a0319918216179091556002805494909316931692909217905560005561057f806100706000396000f3006080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a9811461005b578063f858fc0b1461008e578063faff50a8146100c5575b600080fd5b34801561006757600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff602435166100ec565b005b34801561009a57600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff60243581169060443516610116565b3480156100d157600080fd5b506100da61054d565b60408051918252519081900360200190f35b600254610112908390839073ffffffffffffffffffffffffffffffffffffffff16610116565b5050565b60008054604080519182526020808301879052815192839003820183206001547f02571be300000000000000000000000000000000000000000000000000000000855260048501829052925190949373ffffffffffffffffffffffffffffffffffffffff909316926302571be392602480830193919282900301818787803b1580156101a157600080fd5b505af11580156101b5573d6000803e3d6000fd5b505050506040513d60208110156101cb57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116156101f057600080fd5b60015460008054604080517f06ab59230000000000000000000000000000000000000000000000000000000081526004810192909252602482018990523060448301525173ffffffffffffffffffffffffffffffffffffffff909316926306ab59239260648084019391929182900301818387803b15801561027157600080fd5b505af1158015610285573d6000803e3d6000fd5b5050600154604080517f1896f70a0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff88811660248301529151919092169350631896f70a9250604480830192600092919082900301818387803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b5050604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f3b3b57de000000000000000000000000000000000000000000000000000000006004820152905173ffffffffffffffffffffffffffffffffffffffff871693506301ffc9a7925060248083019260209291908290030181600087803b1580156103aa57600080fd5b505af11580156103be573d6000803e3d6000fd5b505050506040513d60208110156103d457600080fd5b50511561046c57604080517fd5fa2b000000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff868116602483015291519185169163d5fa2b009160448082019260009290919082900301818387803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050505b600154604080517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff878116602483015291519190921691635b0fc9c391604480830192600092919082900301818387803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff80871693508716915087907fe27a5a369e0d2c5056ccfcbd5f83f145f43350142d42aaf46ff9a9e461d543df90600090a45050505050565b600054815600a165627a7a72305820dde468816802a83e6e70692ba51c6f095c5710a84ecdb601b5ac001740eaaaeb00290000000000000000000000003c70a0190d09f34519e6e218364451add21b7d4b0000000000000000000000009d9f6ed265ef82f3c129292b171705e44d69b03f7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86
Deployed Bytecode
0x6080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a9811461005b578063f858fc0b1461008e578063faff50a8146100c5575b600080fd5b34801561006757600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff602435166100ec565b005b34801561009a57600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff60243581169060443516610116565b3480156100d157600080fd5b506100da61054d565b60408051918252519081900360200190f35b600254610112908390839073ffffffffffffffffffffffffffffffffffffffff16610116565b5050565b60008054604080519182526020808301879052815192839003820183206001547f02571be300000000000000000000000000000000000000000000000000000000855260048501829052925190949373ffffffffffffffffffffffffffffffffffffffff909316926302571be392602480830193919282900301818787803b1580156101a157600080fd5b505af11580156101b5573d6000803e3d6000fd5b505050506040513d60208110156101cb57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116156101f057600080fd5b60015460008054604080517f06ab59230000000000000000000000000000000000000000000000000000000081526004810192909252602482018990523060448301525173ffffffffffffffffffffffffffffffffffffffff909316926306ab59239260648084019391929182900301818387803b15801561027157600080fd5b505af1158015610285573d6000803e3d6000fd5b5050600154604080517f1896f70a0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff88811660248301529151919092169350631896f70a9250604480830192600092919082900301818387803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b5050604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f3b3b57de000000000000000000000000000000000000000000000000000000006004820152905173ffffffffffffffffffffffffffffffffffffffff871693506301ffc9a7925060248083019260209291908290030181600087803b1580156103aa57600080fd5b505af11580156103be573d6000803e3d6000fd5b505050506040513d60208110156103d457600080fd5b50511561046c57604080517fd5fa2b000000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff868116602483015291519185169163d5fa2b009160448082019260009290919082900301818387803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050505b600154604080517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff878116602483015291519190921691635b0fc9c391604480830192600092919082900301818387803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff80871693508716915087907fe27a5a369e0d2c5056ccfcbd5f83f145f43350142d42aaf46ff9a9e461d543df90600090a45050505050565b600054815600a165627a7a72305820dde468816802a83e6e70692ba51c6f095c5710a84ecdb601b5ac001740eaaaeb0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003c70a0190d09f34519e6e218364451add21b7d4b0000000000000000000000009d9f6ed265ef82f3c129292b171705e44d69b03f7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86
-----Decoded View---------------
Arg [0] : _ensAddr (address): 0x3C70A0190D09F34519e6E218364451ADD21b7d4b
Arg [1] : _defaultResolver (address): 0x9d9f6Ed265eF82f3C129292b171705E44d69B03f
Arg [2] : _node (bytes32): 0x7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c70a0190d09f34519e6e218364451add21b7d4b
Arg [1] : 0000000000000000000000009d9f6ed265ef82f3c129292b171705e44d69b03f
Arg [2] : 7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.