Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60606040 | 5254587 | 2361 days ago | IN | 0 ETH | 0.00475265 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ENSSubdomainRegistrar
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-14 */ //File: contracts/lib/ens/AbstractENS.sol pragma solidity ^0.4.15; interface AbstractENS { function owner(bytes32 _node) constant returns (address); function resolver(bytes32 _node) constant returns (address); function ttl(bytes32 _node) constant returns (uint64); function setOwner(bytes32 _node, address _owner); function setSubnodeOwner(bytes32 _node, bytes32 label, address _owner); function setResolver(bytes32 _node, address _resolver); function setTTL(bytes32 _node, uint64 _ttl); // 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); } //File: contracts/lib/ens/PublicResolver.sol pragma solidity ^0.4.0; /** * A simple resolver anyone can use; only allows the owner of a node to set its * address. */ contract PublicResolver { bytes4 constant INTERFACE_META_ID = 0x01ffc9a7; bytes4 constant ADDR_INTERFACE_ID = 0x3b3b57de; bytes4 constant CONTENT_INTERFACE_ID = 0xd8389dc5; bytes4 constant NAME_INTERFACE_ID = 0x691f3431; bytes4 constant ABI_INTERFACE_ID = 0x2203ab56; bytes4 constant PUBKEY_INTERFACE_ID = 0xc8690233; bytes4 constant TEXT_INTERFACE_ID = 0x59d1d43c; event AddrChanged(bytes32 indexed node, address a); event ContentChanged(bytes32 indexed node, bytes32 hash); event NameChanged(bytes32 indexed node, string name); event ABIChanged(bytes32 indexed node, uint256 indexed contentType); event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y); event TextChanged(bytes32 indexed node, string indexed indexedKey, string key); struct PublicKey { bytes32 x; bytes32 y; } struct Record { address addr; bytes32 content; string name; PublicKey pubkey; mapping(string=>string) text; mapping(uint256=>bytes) abis; } AbstractENS ens; mapping(bytes32=>Record) records; modifier only_owner(bytes32 node) { if (ens.owner(node) != msg.sender) throw; _; } /** * Constructor. * @param ensAddr The ENS registrar contract. */ function PublicResolver(AbstractENS ensAddr) { ens = ensAddr; } /** * Returns true if the resolver implements the interface specified by the provided hash. * @param interfaceID The ID of the interface to check for. * @return True if the contract implements the requested interface. */ function supportsInterface(bytes4 interfaceID) constant returns (bool) { return interfaceID == ADDR_INTERFACE_ID || interfaceID == CONTENT_INTERFACE_ID || interfaceID == NAME_INTERFACE_ID || interfaceID == ABI_INTERFACE_ID || interfaceID == PUBKEY_INTERFACE_ID || interfaceID == TEXT_INTERFACE_ID || interfaceID == INTERFACE_META_ID; } /** * Returns the address associated with an ENS node. * @param node The ENS node to query. * @return The associated address. */ function addr(bytes32 node) constant returns (address ret) { ret = records[node].addr; } /** * Sets the address associated with an ENS node. * May only be called by the owner of that node in the ENS registry. * @param node The node to update. * @param addr The address to set. */ function setAddr(bytes32 node, address addr) only_owner(node) { records[node].addr = addr; AddrChanged(node, addr); } /** * Returns the content hash associated with an ENS node. * Note that this resource type is not standardized, and will likely change * in future to a resource type based on multihash. * @param node The ENS node to query. * @return The associated content hash. */ function content(bytes32 node) constant returns (bytes32 ret) { ret = records[node].content; } /** * Sets the content hash associated with an ENS node. * May only be called by the owner of that node in the ENS registry. * Note that this resource type is not standardized, and will likely change * in future to a resource type based on multihash. * @param node The node to update. * @param hash The content hash to set */ function setContent(bytes32 node, bytes32 hash) only_owner(node) { records[node].content = hash; ContentChanged(node, hash); } /** * Returns the name associated with an ENS node, for reverse records. * Defined in EIP181. * @param node The ENS node to query. * @return The associated name. */ function name(bytes32 node) constant returns (string ret) { ret = records[node].name; } /** * Sets the name associated with an ENS node, for reverse records. * May only be called by the owner of that node in the ENS registry. * @param node The node to update. * @param name The name to set. */ function setName(bytes32 node, string name) only_owner(node) { records[node].name = name; NameChanged(node, name); } /** * Returns the ABI associated with an ENS node. * Defined in EIP205. * @param node The ENS node to query * @param contentTypes A bitwise OR of the ABI formats accepted by the caller. * @return contentType The content type of the return value * @return data The ABI data */ function ABI(bytes32 node, uint256 contentTypes) constant returns (uint256 contentType, bytes data) { var record = records[node]; for(contentType = 1; contentType <= contentTypes; contentType <<= 1) { if ((contentType & contentTypes) != 0 && record.abis[contentType].length > 0) { data = record.abis[contentType]; return; } } contentType = 0; } /** * Sets the ABI associated with an ENS node. * Nodes may have one ABI of each content type. To remove an ABI, set it to * the empty string. * @param node The node to update. * @param contentType The content type of the ABI * @param data The ABI data. */ function setABI(bytes32 node, uint256 contentType, bytes data) only_owner(node) { // Content types must be powers of 2 if (((contentType - 1) & contentType) != 0) throw; records[node].abis[contentType] = data; ABIChanged(node, contentType); } /** * Returns the SECP256k1 public key associated with an ENS node. * Defined in EIP 619. * @param node The ENS node to query * @return x, y the X and Y coordinates of the curve point for the public key. */ function pubkey(bytes32 node) constant returns (bytes32 x, bytes32 y) { return (records[node].pubkey.x, records[node].pubkey.y); } /** * Sets the SECP256k1 public key associated with an ENS node. * @param node The ENS node to query * @param x the X coordinate of the curve point for the public key. * @param y the Y coordinate of the curve point for the public key. */ function setPubkey(bytes32 node, bytes32 x, bytes32 y) only_owner(node) { records[node].pubkey = PublicKey(x, y); PubkeyChanged(node, x, y); } /** * Returns the text data associated with an ENS node and key. * @param node The ENS node to query. * @param key The text data key to query. * @return The associated text data. */ function text(bytes32 node, string key) constant returns (string ret) { ret = records[node].text[key]; } /** * Sets the text data associated with an ENS node and key. * May only be called by the owner of that node in the ENS registry. * @param node The node to update. * @param key The key to set. * @param value The text data value to set. */ function setText(bytes32 node, string key, string value) only_owner(node) { records[node].text[key] = value; TextChanged(node, key, key); } } //File: contracts/ens/ENSConstants.sol pragma solidity ^0.4.18; contract ENSConstants { bytes32 constant public ENS_ROOT = bytes32(0); bytes32 constant public ETH_TLD_LABEL = keccak256("eth"); bytes32 constant public ETH_TLD_NODE = keccak256(ENS_ROOT, ETH_TLD_LABEL); bytes32 constant public PUBLIC_RESOLVER_LABEL = keccak256("resolver"); bytes32 constant public PUBLIC_RESOLVER_NODE = keccak256(ETH_TLD_NODE, PUBLIC_RESOLVER_LABEL); } //File: contracts/acl/IACL.sol pragma solidity ^0.4.18; interface IACL { function initialize(address permissionsCreator) public; function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool); } //File: contracts/kernel/IKernel.sol pragma solidity ^0.4.18; interface IKernel { event SetApp(bytes32 indexed namespace, bytes32 indexed name, bytes32 indexed id, address app); function acl() public view returns (IACL); function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool); function setApp(bytes32 namespace, bytes32 name, address app) public returns (bytes32 id); function getApp(bytes32 id) public view returns (address); } //File: contracts/apps/AppStorage.sol pragma solidity ^0.4.18; contract AppStorage { IKernel public kernel; bytes32 public appId; address internal pinnedCode; // used by Proxy Pinned uint256 internal initializationBlock; // used by Initializable uint256[95] private storageOffset; // forces App storage to start at after 100 slots uint256 private offset; } //File: contracts/common/Initializable.sol pragma solidity ^0.4.18; contract Initializable is AppStorage { modifier onlyInit { require(initializationBlock == 0); _; } /** * @return Block number in which the contract was initialized */ function getInitializationBlock() public view returns (uint256) { return initializationBlock; } /** * @dev Function to be called by top level contract after initialization has finished. */ function initialized() internal onlyInit { initializationBlock = getBlockNumber(); } /** * @dev Returns the current block number. * Using a function rather than `block.number` allows us to easily mock the block number in * tests. */ function getBlockNumber() internal view returns (uint256) { return block.number; } } //File: contracts/evmscript/IEVMScriptExecutor.sol pragma solidity ^0.4.18; interface IEVMScriptExecutor { function execScript(bytes script, bytes input, address[] blacklist) external returns (bytes); } //File: contracts/evmscript/IEVMScriptRegistry.sol pragma solidity 0.4.18; contract EVMScriptRegistryConstants { bytes32 constant public EVMSCRIPT_REGISTRY_APP_ID = keccak256("evmreg.aragonpm.eth"); bytes32 constant public EVMSCRIPT_REGISTRY_APP = keccak256(keccak256("app"), EVMSCRIPT_REGISTRY_APP_ID); } interface IEVMScriptRegistry { function addScriptExecutor(address executor) external returns (uint id); function disableScriptExecutor(uint256 executorId) external; function getScriptExecutor(bytes script) public view returns (address); } //File: contracts/evmscript/ScriptHelpers.sol pragma solidity 0.4.18; library ScriptHelpers { // To test with JS and compare with actual encoder. Maintaining for reference. // t = function() { return IEVMScriptExecutor.at('0x4bcdd59d6c77774ee7317fc1095f69ec84421e49').contract.execScript.getData(...[].slice.call(arguments)).slice(10).match(/.{1,64}/g) } // run = function() { return ScriptHelpers.new().then(sh => { sh.abiEncode.call(...[].slice.call(arguments)).then(a => console.log(a.slice(2).match(/.{1,64}/g)) ) }) } // This is truly not beautiful but lets no daydream to the day solidity gets reflection features function abiEncode(bytes _a, bytes _b, address[] _c) public pure returns (bytes d) { return encode(_a, _b, _c); } function encode(bytes memory _a, bytes memory _b, address[] memory _c) internal pure returns (bytes memory d) { // A is positioned after the 3 position words uint256 aPosition = 0x60; uint256 bPosition = aPosition + 32 * abiLength(_a); uint256 cPosition = bPosition + 32 * abiLength(_b); uint256 length = cPosition + 32 * abiLength(_c); d = new bytes(length); assembly { // Store positions mstore(add(d, 0x20), aPosition) mstore(add(d, 0x40), bPosition) mstore(add(d, 0x60), cPosition) } // Copy memory to correct position copy(d, getPtr(_a), aPosition, _a.length); copy(d, getPtr(_b), bPosition, _b.length); copy(d, getPtr(_c), cPosition, _c.length * 32); // 1 word per address } function abiLength(bytes memory _a) internal pure returns (uint256) { // 1 for length + // memory words + 1 if not divisible for 32 to offset word return 1 + (_a.length / 32) + (_a.length % 32 > 0 ? 1 : 0); } function abiLength(address[] _a) internal pure returns (uint256) { // 1 for length + 1 per item return 1 + _a.length; } function copy(bytes _d, uint256 _src, uint256 _pos, uint256 _length) internal pure { uint dest; assembly { dest := add(add(_d, 0x20), _pos) } memcpy(dest, _src, _length + 32); } function getPtr(bytes memory _x) internal pure returns (uint256 ptr) { assembly { ptr := _x } } function getPtr(address[] memory _x) internal pure returns (uint256 ptr) { assembly { ptr := _x } } function getSpecId(bytes _script) internal pure returns (uint32) { return uint32At(_script, 0); } function uint256At(bytes _data, uint256 _location) internal pure returns (uint256 result) { assembly { result := mload(add(_data, add(0x20, _location))) } } function addressAt(bytes _data, uint256 _location) internal pure returns (address result) { uint256 word = uint256At(_data, _location); assembly { result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000) } } function uint32At(bytes _data, uint256 _location) internal pure returns (uint32 result) { uint256 word = uint256At(_data, _location); assembly { result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000) } } function locationOf(bytes _data, uint256 _location) internal pure returns (uint256 result) { assembly { result := add(_data, add(0x20, _location)) } } function toBytes(bytes4 _sig) internal pure returns (bytes) { bytes memory payload = new bytes(4); payload[0] = bytes1(_sig); payload[1] = bytes1(_sig << 8); payload[2] = bytes1(_sig << 16); payload[3] = bytes1(_sig << 24); return payload; } function memcpy(uint _dest, uint _src, uint _len) public pure { uint256 src = _src; uint256 dest = _dest; uint256 len = _len; // Copy word-length chunks while possible for (; len >= 32; len -= 32) { assembly { mstore(dest, mload(src)) } dest += 32; src += 32; } // Copy remaining bytes uint mask = 256 ** (32 - len) - 1; assembly { let srcpart := and(mload(src), not(mask)) let destpart := and(mload(dest), mask) mstore(dest, or(destpart, srcpart)) } } } //File: contracts/evmscript/EVMScriptRunner.sol pragma solidity ^0.4.18; contract EVMScriptRunner is AppStorage, EVMScriptRegistryConstants { using ScriptHelpers for bytes; function runScript(bytes _script, bytes _input, address[] _blacklist) protectState internal returns (bytes output) { // TODO: Too much data flying around, maybe extracting spec id here is cheaper address executorAddr = getExecutor(_script); require(executorAddr != address(0)); bytes memory calldataArgs = _script.encode(_input, _blacklist); bytes4 sig = IEVMScriptExecutor(0).execScript.selector; require(executorAddr.delegatecall(sig, calldataArgs)); return returnedDataDecoded(); } function getExecutor(bytes _script) public view returns (IEVMScriptExecutor) { return IEVMScriptExecutor(getExecutorRegistry().getScriptExecutor(_script)); } // TODO: Internal function getExecutorRegistry() internal view returns (IEVMScriptRegistry) { address registryAddr = kernel.getApp(EVMSCRIPT_REGISTRY_APP); return IEVMScriptRegistry(registryAddr); } /** * @dev copies and returns last's call data. Needs to ABI decode first */ function returnedDataDecoded() internal view returns (bytes ret) { assembly { let size := returndatasize switch size case 0 {} default { ret := mload(0x40) // free mem ptr get mstore(0x40, add(ret, add(size, 0x20))) // free mem ptr set returndatacopy(ret, 0x20, sub(size, 0x20)) // copy return data } } return ret; } modifier protectState { address preKernel = kernel; bytes32 preAppId = appId; _; // exec require(kernel == preKernel); require(appId == preAppId); } } //File: contracts/acl/ACLSyntaxSugar.sol pragma solidity 0.4.18; contract ACLSyntaxSugar { function arr() internal pure returns (uint256[] r) {} function arr(bytes32 _a) internal pure returns (uint256[] r) { return arr(uint256(_a)); } function arr(bytes32 _a, bytes32 _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a) internal pure returns (uint256[] r) { return arr(uint256(_a)); } function arr(address _a, address _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a, uint256 _b, uint256 _c) internal pure returns (uint256[] r) { return arr(uint256(_a), _b, _c); } function arr(address _a, uint256 _b) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b)); } function arr(address _a, address _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), _c, _d, _e); } function arr(address _a, address _b, address _c) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), uint256(_c)); } function arr(address _a, address _b, uint256 _c) internal pure returns (uint256[] r) { return arr(uint256(_a), uint256(_b), uint256(_c)); } function arr(uint256 _a) internal pure returns (uint256[] r) { r = new uint256[](1); r[0] = _a; } function arr(uint256 _a, uint256 _b) internal pure returns (uint256[] r) { r = new uint256[](2); r[0] = _a; r[1] = _b; } function arr(uint256 _a, uint256 _b, uint256 _c) internal pure returns (uint256[] r) { r = new uint256[](3); r[0] = _a; r[1] = _b; r[2] = _c; } function arr(uint256 _a, uint256 _b, uint256 _c, uint256 _d) internal pure returns (uint256[] r) { r = new uint256[](4); r[0] = _a; r[1] = _b; r[2] = _c; r[3] = _d; } function arr(uint256 _a, uint256 _b, uint256 _c, uint256 _d, uint256 _e) internal pure returns (uint256[] r) { r = new uint256[](5); r[0] = _a; r[1] = _b; r[2] = _c; r[3] = _d; r[4] = _e; } } contract ACLHelpers { function decodeParamOp(uint256 _x) internal pure returns (uint8 b) { return uint8(_x >> (8 * 30)); } function decodeParamId(uint256 _x) internal pure returns (uint8 b) { return uint8(_x >> (8 * 31)); } function decodeParamsList(uint256 _x) internal pure returns (uint32 a, uint32 b, uint32 c) { a = uint32(_x); b = uint32(_x >> (8 * 4)); c = uint32(_x >> (8 * 8)); } } //File: contracts/apps/AragonApp.sol pragma solidity ^0.4.18; contract AragonApp is AppStorage, Initializable, ACLSyntaxSugar, EVMScriptRunner { modifier auth(bytes32 _role) { require(canPerform(msg.sender, _role, new uint256[](0))); _; } modifier authP(bytes32 _role, uint256[] params) { require(canPerform(msg.sender, _role, params)); _; } function canPerform(address _sender, bytes32 _role, uint256[] params) public view returns (bool) { bytes memory how; // no need to init memory as it is never used if (params.length > 0) { uint256 byteLength = params.length * 32; assembly { how := params // forced casting mstore(how, byteLength) } } return address(kernel) == 0 || kernel.hasPermission(_sender, address(this), _role, how); } } //File: contracts/ens/ENSSubdomainRegistrar.sol pragma solidity 0.4.18; contract ENSSubdomainRegistrar is AragonApp, ENSConstants { bytes32 constant public CREATE_NAME_ROLE = bytes32(1); bytes32 constant public DELETE_NAME_ROLE = bytes32(2); bytes32 constant public POINT_ROOTNODE_ROLE = bytes32(3); AbstractENS public ens; bytes32 public rootNode; event NewName(bytes32 indexed node, bytes32 indexed label); event DeleteName(bytes32 indexed node, bytes32 indexed label); function initialize(AbstractENS _ens, bytes32 _rootNode) onlyInit public { initialized(); // We need ownership to create subnodes require(_ens.owner(_rootNode) == address(this)); ens = _ens; rootNode = _rootNode; } function createName(bytes32 _label, address _owner) auth(CREATE_NAME_ROLE) external returns (bytes32 node) { return _createName(_label, _owner); } function createNameAndPoint(bytes32 _label, address _target) auth(CREATE_NAME_ROLE) external returns (bytes32 node) { node = _createName(_label, this); _pointToResolverAndResolve(node, _target); } function deleteName(bytes32 _label) auth(DELETE_NAME_ROLE) external { bytes32 node = keccak256(rootNode, _label); address currentOwner = ens.owner(node); require(currentOwner != address(0)); // fail if deleting unset name if (currentOwner != address(this)) { // needs to reclaim ownership so it can set resolver ens.setSubnodeOwner(rootNode, _label, this); } ens.setResolver(node, address(0)); // remove resolver so it ends resolving ens.setOwner(node, address(0)); DeleteName(node, _label); } function pointRootNode(address _target) auth(POINT_ROOTNODE_ROLE) external { _pointToResolverAndResolve(rootNode, _target); } function _createName(bytes32 _label, address _owner) internal returns (bytes32 node) { node = keccak256(rootNode, _label); require(ens.owner(node) == address(0)); // avoid name reset ens.setSubnodeOwner(rootNode, _label, _owner); NewName(node, _label); } function _pointToResolverAndResolve(bytes32 _node, address _target) internal { address publicResolver = getAddr(PUBLIC_RESOLVER_NODE); ens.setResolver(_node, publicResolver); PublicResolver(publicResolver).setAddr(_node, _target); } function getAddr(bytes32 node) internal view returns (address) { address resolver = ens.resolver(node); return PublicResolver(resolver).addr(node); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"POINT_ROOTNODE_ROLE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PUBLIC_RESOLVER_NODE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EVMSCRIPT_REGISTRY_APP_ID","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_label","type":"bytes32"},{"name":"_target","type":"address"}],"name":"createNameAndPoint","outputs":[{"name":"node","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_label","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"createName","outputs":[{"name":"node","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"appId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInitializationBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETH_TLD_LABEL","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EVMSCRIPT_REGISTRY_APP","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sender","type":"address"},{"name":"_role","type":"bytes32"},{"name":"params","type":"uint256[]"}],"name":"canPerform","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ENS_ROOT","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DELETE_NAME_ROLE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ens","type":"address"},{"name":"_rootNode","type":"bytes32"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PUBLIC_RESOLVER_LABEL","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kernel","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"pointRootNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_label","type":"bytes32"}],"name":"deleteName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_script","type":"bytes"}],"name":"getExecutor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rootNode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETH_TLD_NODE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CREATE_NAME_ROLE","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"label","type":"bytes32"}],"name":"NewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"label","type":"bytes32"}],"name":"DeleteName","type":"event"}]
Contract Creation Code
6060604052341561000f57600080fd5b6110c68061001e6000396000f30060606040526004361061010e5763ffffffff60e060020a600035041663307482cf81146101135780633f15457f146101385780633f82e2c61461016757806360b1e0571461017a57806365b0bc851461018d5780636b62cb1b146101af57806380afdea8146101d15780638b3dd749146101e45780639b227a97146101f75780639b3fdf4c1461020a578063a1658fad1461021d578063a9bf1c9f14610294578063bdbf7d4c146102a7578063be13f47c146102ba578063c84b1ce7146102de578063d4aae0c4146102f1578063db60693114610304578063dc371e5414610323578063f92a79ff14610339578063faff50a81461038a578063fdee38a91461039d578063fef47e38146103b0575b600080fd5b341561011e57600080fd5b6101266103c3565b60405190815260200160405180910390f35b341561014357600080fd5b61014b6103c8565b604051600160a060020a03909116815260200160405180910390f35b341561017257600080fd5b6101266103d7565b341561018557600080fd5b610126610455565b341561019857600080fd5b610126600435600160a060020a0360243516610489565b34156101ba57600080fd5b610126600435600160a060020a03602435166104de565b34156101dc57600080fd5b610126610527565b34156101ef57600080fd5b61012661052d565b341561020257600080fd5b610126610533565b341561021557600080fd5b610126610550565b341561022857600080fd5b61028060048035600160a060020a03169060248035919060649060443590810190830135806020808202016040519081016040528093929190818152602001838360200280828437509496506105cc95505050505050565b604051901515815260200160405180910390f35b341561029f57600080fd5b61012661070a565b34156102b257600080fd5b61012661070f565b34156102c557600080fd5b6102dc600160a060020a0360043516602435610714565b005b34156102e957600080fd5b6101266107e5565b34156102fc57600080fd5b61014b610819565b341561030f57600080fd5b6102dc600160a060020a0360043516610828565b341561032e57600080fd5b6102dc60043561086e565b341561034457600080fd5b61014b60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610aec95505050505050565b341561039557600080fd5b610126610bc8565b34156103a857600080fd5b610126610bce565b34156103bb57600080fd5b610126610c04565b600381565b606454600160a060020a031681565b600060405160eb60020a620cae8d028152600301604051809103902060405191825260208201526040908101905180910390206040517f7265736f6c76657200000000000000000000000000000000000000000000000081526008016040518091039020604051918252602082015260409081019051809103902081565b6040517f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b600060016104b63382846040518059106104a05750595b90808252806020026020018201604052506105cc565b15156104c157600080fd5b6104cb8430610c09565b91506104d78284610d5d565b5092915050565b6000600161050a3382846040518059106104a057505990808252806020026020018201604052506105cc565b151561051557600080fd5b61051f8484610c09565b949350505050565b60015481565b60035490565b60405160eb60020a620cae8d028152600301604051809103902081565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b60006105d6611088565b600080845111156105ef57835160200290508391508082525b600054600160a060020a03161580610700575060008054600160a060020a03169063fdef91069088903090899087906040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b8381101561069657808201518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156106e457600080fd5b6102c65a03f115156106f557600080fd5b505050604051805190505b9695505050505050565b600081565b600281565b6003541561072157600080fd5b610729610ebd565b30600160a060020a031682600160a060020a03166302571be38360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561078257600080fd5b6102c65a03f1151561079357600080fd5b50505060405180519050600160a060020a03161415156107b257600080fd5b6064805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155606555565b6040517f7265736f6c7665720000000000000000000000000000000000000000000000008152600801604051809103902081565b600054600160a060020a031681565b6003610853338260006040518059106104a057505990808252806020026020018201604052506105cc565b151561085e57600080fd5b61086a60655483610d5d565b5050565b600080600261089b3382846040518059106104a057505990808252806020026020018201604052506105cc565b15156108a657600080fd5b60655484604051918252602082015260409081019051908190039020606454909350600160a060020a03166302571be38460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561091657600080fd5b6102c65a03f1151561092757600080fd5b5050506040518051925050600160a060020a038216151561094757600080fd5b30600160a060020a031682600160a060020a03161415156109dd57606454606554600160a060020a03909116906306ab592390863060405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401600060405180830381600087803b15156109c857600080fd5b6102c65a03f115156109d957600080fd5b5050505b606454600160a060020a0316631896f70a84600060405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610a3557600080fd5b6102c65a03f11515610a4657600080fd5b5050606454600160a060020a03169050635b0fc9c384600060405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610aa257600080fd5b6102c65a03f11515610ab357600080fd5b508591508490507f49a4cd9bb38e10e402c44a680c5e13f710666ed683cb9cbbc131f7dc9f8b9d6060405160405180910390a350505050565b6000610af6610ed7565b600160a060020a03166304bf2a7f836000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b5d578082015183820152602001610b45565b50505050905090810190601f168015610b8a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515610ba857600080fd5b6102c65a03f11515610bb957600080fd5b50505060405180519392505050565b60655481565b600060405160eb60020a620cae8d0281526003016040518091039020604051918252602082015260409081019051809103902081565b600181565b600060655483604051918252602082015260409081019051908190039020606454909150600090600160a060020a03166302571be383836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c7d57600080fd5b6102c65a03f11515610c8e57600080fd5b50505060405180519050600160a060020a0316141515610cad57600080fd5b606454606554600160a060020a03909116906306ab592390858560405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401600060405180830381600087803b1515610d1357600080fd5b6102c65a03f11515610d2457600080fd5b508491508290507f8f858576a6066f5ecb4d2f49d40fac9db317ff8d5f7610d58b616b657d7044cf60405160405180910390a392915050565b6000610de18160405160eb60020a620cae8d028152600301604051809103902060405191825260208201526040908101905180910390206040517f7265736f6c766572000000000000000000000000000000000000000000000000815260080160405180910390206040519182526020820152604090810190518091039020610fa3565b606454909150600160a060020a0316631896f70a848360405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610e3b57600080fd5b6102c65a03f11515610e4c57600080fd5b50505080600160a060020a031663d5fa2b00848460405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610ea457600080fd5b6102c65a03f11515610eb557600080fd5b505050505050565b60035415610eca57600080fd5b610ed2611084565b600355565b600080548190600160a060020a03166342c71f1d6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ba857600080fd5b6064546000908190600160a060020a0316630178b8bf84836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ff857600080fd5b6102c65a03f1151561100957600080fd5b5050506040518051915050600160a060020a038116633b3b57de8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561106357600080fd5b6102c65a03f1151561107457600080fd5b5050506040518051949350505050565b4390565b602060405190810160405260008152905600a165627a7a723058207961894415363ad3f851a9bafa8bdd03868a99660c59308ecacab5a5fa867d540029
Deployed Bytecode
0x60606040526004361061010e5763ffffffff60e060020a600035041663307482cf81146101135780633f15457f146101385780633f82e2c61461016757806360b1e0571461017a57806365b0bc851461018d5780636b62cb1b146101af57806380afdea8146101d15780638b3dd749146101e45780639b227a97146101f75780639b3fdf4c1461020a578063a1658fad1461021d578063a9bf1c9f14610294578063bdbf7d4c146102a7578063be13f47c146102ba578063c84b1ce7146102de578063d4aae0c4146102f1578063db60693114610304578063dc371e5414610323578063f92a79ff14610339578063faff50a81461038a578063fdee38a91461039d578063fef47e38146103b0575b600080fd5b341561011e57600080fd5b6101266103c3565b60405190815260200160405180910390f35b341561014357600080fd5b61014b6103c8565b604051600160a060020a03909116815260200160405180910390f35b341561017257600080fd5b6101266103d7565b341561018557600080fd5b610126610455565b341561019857600080fd5b610126600435600160a060020a0360243516610489565b34156101ba57600080fd5b610126600435600160a060020a03602435166104de565b34156101dc57600080fd5b610126610527565b34156101ef57600080fd5b61012661052d565b341561020257600080fd5b610126610533565b341561021557600080fd5b610126610550565b341561022857600080fd5b61028060048035600160a060020a03169060248035919060649060443590810190830135806020808202016040519081016040528093929190818152602001838360200280828437509496506105cc95505050505050565b604051901515815260200160405180910390f35b341561029f57600080fd5b61012661070a565b34156102b257600080fd5b61012661070f565b34156102c557600080fd5b6102dc600160a060020a0360043516602435610714565b005b34156102e957600080fd5b6101266107e5565b34156102fc57600080fd5b61014b610819565b341561030f57600080fd5b6102dc600160a060020a0360043516610828565b341561032e57600080fd5b6102dc60043561086e565b341561034457600080fd5b61014b60046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610aec95505050505050565b341561039557600080fd5b610126610bc8565b34156103a857600080fd5b610126610bce565b34156103bb57600080fd5b610126610c04565b600381565b606454600160a060020a031681565b600060405160eb60020a620cae8d028152600301604051809103902060405191825260208201526040908101905180910390206040517f7265736f6c76657200000000000000000000000000000000000000000000000081526008016040518091039020604051918252602082015260409081019051809103902081565b6040517f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152601301604051809103902081565b600060016104b63382846040518059106104a05750595b90808252806020026020018201604052506105cc565b15156104c157600080fd5b6104cb8430610c09565b91506104d78284610d5d565b5092915050565b6000600161050a3382846040518059106104a057505990808252806020026020018201604052506105cc565b151561051557600080fd5b61051f8484610c09565b949350505050565b60015481565b60035490565b60405160eb60020a620cae8d028152600301604051809103902081565b6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902081565b60006105d6611088565b600080845111156105ef57835160200290508391508082525b600054600160a060020a03161580610700575060008054600160a060020a03169063fdef91069088903090899087906040516020015260405160e060020a63ffffffff8716028152600160a060020a0380861660048301908152908516602483015260448201849052608060648301908152909160840183818151815260200191508051906020019080838360005b8381101561069657808201518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156106e457600080fd5b6102c65a03f115156106f557600080fd5b505050604051805190505b9695505050505050565b600081565b600281565b6003541561072157600080fd5b610729610ebd565b30600160a060020a031682600160a060020a03166302571be38360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561078257600080fd5b6102c65a03f1151561079357600080fd5b50505060405180519050600160a060020a03161415156107b257600080fd5b6064805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039390931692909217909155606555565b6040517f7265736f6c7665720000000000000000000000000000000000000000000000008152600801604051809103902081565b600054600160a060020a031681565b6003610853338260006040518059106104a057505990808252806020026020018201604052506105cc565b151561085e57600080fd5b61086a60655483610d5d565b5050565b600080600261089b3382846040518059106104a057505990808252806020026020018201604052506105cc565b15156108a657600080fd5b60655484604051918252602082015260409081019051908190039020606454909350600160a060020a03166302571be38460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561091657600080fd5b6102c65a03f1151561092757600080fd5b5050506040518051925050600160a060020a038216151561094757600080fd5b30600160a060020a031682600160a060020a03161415156109dd57606454606554600160a060020a03909116906306ab592390863060405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401600060405180830381600087803b15156109c857600080fd5b6102c65a03f115156109d957600080fd5b5050505b606454600160a060020a0316631896f70a84600060405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610a3557600080fd5b6102c65a03f11515610a4657600080fd5b5050606454600160a060020a03169050635b0fc9c384600060405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610aa257600080fd5b6102c65a03f11515610ab357600080fd5b508591508490507f49a4cd9bb38e10e402c44a680c5e13f710666ed683cb9cbbc131f7dc9f8b9d6060405160405180910390a350505050565b6000610af6610ed7565b600160a060020a03166304bf2a7f836000604051602001526040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b5d578082015183820152602001610b45565b50505050905090810190601f168015610b8a5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515610ba857600080fd5b6102c65a03f11515610bb957600080fd5b50505060405180519392505050565b60655481565b600060405160eb60020a620cae8d0281526003016040518091039020604051918252602082015260409081019051809103902081565b600181565b600060655483604051918252602082015260409081019051908190039020606454909150600090600160a060020a03166302571be383836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610c7d57600080fd5b6102c65a03f11515610c8e57600080fd5b50505060405180519050600160a060020a0316141515610cad57600080fd5b606454606554600160a060020a03909116906306ab592390858560405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401600060405180830381600087803b1515610d1357600080fd5b6102c65a03f11515610d2457600080fd5b508491508290507f8f858576a6066f5ecb4d2f49d40fac9db317ff8d5f7610d58b616b657d7044cf60405160405180910390a392915050565b6000610de18160405160eb60020a620cae8d028152600301604051809103902060405191825260208201526040908101905180910390206040517f7265736f6c766572000000000000000000000000000000000000000000000000815260080160405180910390206040519182526020820152604090810190518091039020610fa3565b606454909150600160a060020a0316631896f70a848360405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610e3b57600080fd5b6102c65a03f11515610e4c57600080fd5b50505080600160a060020a031663d5fa2b00848460405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515610ea457600080fd5b6102c65a03f11515610eb557600080fd5b505050505050565b60035415610eca57600080fd5b610ed2611084565b600355565b600080548190600160a060020a03166342c71f1d6040517f6170700000000000000000000000000000000000000000000000000000000000815260030160405180910390206040517f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081526013016040518091039020604051918252602082015260409081019051809103902060006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ba857600080fd5b6064546000908190600160a060020a0316630178b8bf84836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ff857600080fd5b6102c65a03f1151561100957600080fd5b5050506040518051915050600160a060020a038116633b3b57de8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561106357600080fd5b6102c65a03f1151561107457600080fd5b5050506040518051949350505050565b4390565b602060405190810160405260008152905600a165627a7a723058207961894415363ad3f851a9bafa8bdd03868a99660c59308ecacab5a5fa867d540029
Swarm Source
bzzr://7961894415363ad3f851a9bafa8bdd03868a99660c59308ecacab5a5fa867d54
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.