ETH Price: $3,084.20 (+0.67%)
Gas: 20 Gwei

Contract

0xaB528d626EC275E3faD363fF1393A41F581c5897
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer Ownersh...93810292020-01-30 2:59:191541 days ago1580353159IN
ENS: Root
0 ETH0.000057112
Set Controller93810242020-01-30 2:58:411541 days ago1580353121IN
ENS: Root
0 ETH0.000087592
Set Controller93810242020-01-30 2:58:411541 days ago1580353121IN
ENS: Root
0 ETH0.000028782
Transfer Ownersh...93805542020-01-30 1:13:371541 days ago1580346817IN
ENS: Root
0 ETH0.000057112
Set Controller93805522020-01-30 1:13:221541 days ago1580346802IN
ENS: Root
0 ETH0.000087592
0x6080604093805402020-01-30 1:10:531541 days ago1580346653IN
 Create: Root
0 ETH0.001197492

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Root

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-01-30
*/

// File: @ensdomains/ens/contracts/ENS.sol

pragma solidity >=0.4.24;

interface ENS {

    // 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);
}

// File: @ensdomains/root/contracts/Ownable.sol

pragma solidity ^0.5.0;

contract Ownable {

    address public owner;

    modifier onlyOwner {
        require(isOwner(msg.sender));
        _;
    }

    constructor() public {
        owner = msg.sender;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        owner = newOwner;
    }

    function isOwner(address addr) public view returns (bool) {
        return owner == addr;
    }
}

// File: @ensdomains/root/contracts/Controllable.sol

pragma solidity ^0.5.0;


contract Controllable is Ownable {
    mapping(address=>bool) public controllers;

    modifier onlyController {
        require(controllers[msg.sender]);
        _;
    }

    function setController(address controller, bool enabled) public onlyOwner {
        controllers[controller] = enabled;
    }
}

// File: @ensdomains/root/contracts/Root.sol

pragma solidity ^0.5.0;




contract Root is Ownable, Controllable {
    bytes32 constant private ROOT_NODE = bytes32(0);

    bytes4 constant private INTERFACE_META_ID = bytes4(keccak256("supportsInterface(bytes4)"));

    event TLDLocked(bytes32 indexed label);

    ENS public ens;
    mapping(bytes32=>bool) public locked;

    constructor(ENS _ens) public {
        ens = _ens;
    }

    function setSubnodeOwner(bytes32 label, address owner) external onlyController {
        require(!locked[label]);
        ens.setSubnodeOwner(ROOT_NODE, label, owner);
    }

    function setResolver(address resolver) external onlyOwner {
        ens.setResolver(ROOT_NODE, resolver);
    }

    function lock(bytes32 label) external onlyOwner {
        emit TLDLocked(label);
        locked[label] = true;
    }

    function supportsInterface(bytes4 interfaceID) external pure returns (bool) {
        return interfaceID == INTERFACE_META_ID;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"TLDLocked","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"label","type":"bytes32"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516109e43803806109e48339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061090f806100d56000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638cb8ecec116100715780638cb8ecec1461022b5780638da5cb5b14610279578063cbe9e764146102c3578063da8c229e14610309578063e0dba60f14610365578063f2fde38b146103b5576100a9565b806301670ba9146100ae57806301ffc9a7146100dc5780632f54bf6e146101415780633f15457f1461019d5780634e543b26146101e7575b600080fd5b6100da600480360360208110156100c457600080fd5b81019080803590602001909291905050506103f9565b005b610127600480360360208110156100f257600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610467565b604051808215151515815260200191505060405180910390f35b6101836004803603602081101561015757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104e6565b604051808215151515815260200191505060405180910390f35b6101a561053f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610229600480360360208110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610565565b005b6102776004803603604081101561024157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061063e565b005b6102816107b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ef600480360360208110156102d957600080fd5b81019080803590602001909291905050506107d8565b604051808215151515815260200191505060405180910390f35b61034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107f8565b604051808215151515815260200191505060405180910390f35b6103b36004803603604081101561037b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610818565b005b6103f7600480360360208110156103cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b610402336104e6565b61040b57600080fd5b807f1764176cfa565853ba1ded547a830a9f9bff95231ef6fd228b3ddd617577756960405160405180910390a260016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060405180807f737570706f727473496e74657266616365286279746573342900000000000000815250601901905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61056e336104e6565b61057757600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a6000801b836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561062357600080fd5b505af1158015610637573d6000803e3d6000fd5b5050505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661069457600080fd5b6003600083815260200190815260200160002060009054906101000a900460ff16156106bf57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59236000801b84846040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506040513d602081101561079d57600080fd5b8101908080519060200190929190505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b610821336104e6565b61082a57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61088e336104e6565b61089757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a723158200892e4c83cff533d9e4652525f1e30c0a7ec2adf58d296e3df1b85911c930f8264736f6c6343000510003200000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80638cb8ecec116100715780638cb8ecec1461022b5780638da5cb5b14610279578063cbe9e764146102c3578063da8c229e14610309578063e0dba60f14610365578063f2fde38b146103b5576100a9565b806301670ba9146100ae57806301ffc9a7146100dc5780632f54bf6e146101415780633f15457f1461019d5780634e543b26146101e7575b600080fd5b6100da600480360360208110156100c457600080fd5b81019080803590602001909291905050506103f9565b005b610127600480360360208110156100f257600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610467565b604051808215151515815260200191505060405180910390f35b6101836004803603602081101561015757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104e6565b604051808215151515815260200191505060405180910390f35b6101a561053f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610229600480360360208110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610565565b005b6102776004803603604081101561024157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061063e565b005b6102816107b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ef600480360360208110156102d957600080fd5b81019080803590602001909291905050506107d8565b604051808215151515815260200191505060405180910390f35b61034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107f8565b604051808215151515815260200191505060405180910390f35b6103b36004803603604081101561037b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610818565b005b6103f7600480360360208110156103cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b610402336104e6565b61040b57600080fd5b807f1764176cfa565853ba1ded547a830a9f9bff95231ef6fd228b3ddd617577756960405160405180910390a260016003600083815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060405180807f737570706f727473496e74657266616365286279746573342900000000000000815250601901905060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61056e336104e6565b61057757600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a6000801b836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561062357600080fd5b505af1158015610637573d6000803e3d6000fd5b5050505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661069457600080fd5b6003600083815260200190815260200160002060009054906101000a900460ff16156106bf57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59236000801b84846040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b505050506040513d602081101561079d57600080fd5b8101908080519060200190929190505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b610821336104e6565b61082a57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61088e336104e6565b61089757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a723158200892e4c83cff533d9e4652525f1e30c0a7ec2adf58d296e3df1b85911c930f8264736f6c63430005100032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e

-----Decoded View---------------
Arg [0] : _ens (address): 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e


Deployed Bytecode Sourcemap

2675:949:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2675:949:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3360:119:0;;;;;;;;;;;;;;;;;:::i;:::-;;3487:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3487:134:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2087:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2087:97:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2923:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3239:113;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3239:113:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3055:176;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3055:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1801:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2944:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2944:36:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2316:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2316:41:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2461:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2461:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1982:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1982:97:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3360:119;1868:19;1876:10;1868:7;:19::i;:::-;1860:28;;;;;;3434:5;3424:16;;;;;;;;;;3467:4;3451:6;:13;3458:5;3451:13;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3360:119;:::o;3487:134::-;3557:4;2828:38;;;;;;;;;;;;;;;;;;;3581:32;;;:11;:32;;;;3574:39;;3487:134;;;:::o;2087:97::-;2139:4;2172;2163:13;;:5;;;;;;;;;;;:13;;;2156:20;;2087:97;;;:::o;2923:14::-;;;;;;;;;;;;;:::o;3239:113::-;1868:19;1876:10;1868:7;:19::i;:::-;1860:28;;;;;;3308:3;;;;;;;;;;;:15;;;2766:1;2758:10;;3335:8;3308:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3308:36:0;;;;3239:113;:::o;3055:176::-;2409:11;:23;2421:10;2409:23;;;;;;;;;;;;;;;;;;;;;;;;;2401:32;;;;;;3154:6;:13;3161:5;3154:13;;;;;;;;;;;;;;;;;;;;;3153:14;3145:23;;;;;;3179:3;;;;;;;;;;;:19;;;2766:1;2758:10;;3210:5;3217;3179:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3179:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3179:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3179:44:0;;;;;;;;;;;;;;;;;3055:176;;:::o;1801:20::-;;;;;;;;;;;;;:::o;2944:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;2316:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2461:126::-;1868:19;1876:10;1868:7;:19::i;:::-;1860:28;;;;;;2572:7;2546:11;:23;2558:10;2546:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2461:126;;:::o;1982:97::-;1868:19;1876:10;1868:7;:19::i;:::-;1860:28;;;;;;2063:8;2055:5;;:16;;;;;;;;;;;;;;;;;;1982:97;:::o

Swarm Source

bzzr://0892e4c83cff533d9e4652525f1e30c0a7ec2adf58d296e3df1b85911c930f82

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.