ETH Price: $2,802.91 (+2.99%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Name162528242022-12-24 6:32:47774 days ago1671863567IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0007208911.34778425
Set Name157237892022-10-11 8:51:23848 days ago1665478283IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0028354323.65501189
Set Name157083002022-10-09 4:58:23850 days ago1665291503IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0029741124.79465034
Set Name156801722022-10-05 6:39:59854 days ago1664951999IN
0xf7318AC3...b5A3aa1DA
0 ETH0.000849757.08774779
Set Name156243942022-09-27 11:28:47862 days ago1664278127IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0012055510.05347219
Set Name156243522022-09-27 11:20:23862 days ago1664277623IN
0xf7318AC3...b5A3aa1DA
0 ETH0.000951417.9357026
Set Name155307692022-09-14 3:39:32875 days ago1663126772IN
0xf7318AC3...b5A3aa1DA
0 ETH0.000493954.11845138
Set Name151658472022-07-18 9:35:42933 days ago1658136942IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0018795915.67295931
Set Name151464432022-07-15 9:27:55936 days ago1657877275IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0014902712.40432064
Set Name148099712022-05-20 8:14:21992 days ago1653034461IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0016851814.05465194
Set Name147791972022-05-15 9:39:32997 days ago1652607572IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013187911
Set Name147782962022-05-15 6:06:20997 days ago1652594780IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0043216636.04692985
Set Name147767162022-05-15 0:04:35998 days ago1652573075IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0020045616.72000023
Set Name147758812022-05-14 21:06:19998 days ago1652562379IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0033933628.29552801
Set Name147750262022-05-14 17:55:14998 days ago1652550914IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0037977131.67980159
Set Name147750042022-05-14 17:50:08998 days ago1652550608IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0030264825.24135472
Set Name147690352022-05-13 18:40:42999 days ago1652467242IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0032887854.17835697
Set Name147411482022-05-09 7:33:421003 days ago1652081622IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0035329929.46863325
Set Name147396082022-05-09 1:46:351004 days ago1652060795IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013189211
Set Name147396082022-05-09 1:46:351004 days ago1652060795IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013189211
Set Name147396082022-05-09 1:46:351004 days ago1652060795IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013191811
Set Name147396082022-05-09 1:46:351004 days ago1652060795IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013193111
Set Name147396082022-05-09 1:46:351004 days ago1652060795IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013187911
Set Name147395992022-05-09 1:45:331004 days ago1652060733IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013307711.1
Set Name147395992022-05-09 1:45:331004 days ago1652060733IN
0xf7318AC3...b5A3aa1DA
0 ETH0.0013307711.100001
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReverseRegistrar

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 5 : ReverseRegistrar.sol
pragma solidity >=0.8.4;

import "./HI.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "../root/Controllable.sol";

abstract contract NameResolver {
    function setName(bytes32 node, string memory name) public virtual;
}

bytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;

bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;

// namehash('addr.reverse')

contract ReverseRegistrar is Ownable, Controllable {
    HI public hi ;
    NameResolver public defaultResolver;

    event ReverseClaimed(address indexed addr, bytes32 indexed node);

    /**
     * @dev Constructor
     * @param hiAddr The address of the HI registry.
     * @param resolverAddr The address of the default reverse resolver.
     */
    constructor(HI hiAddr, NameResolver resolverAddr) {
        hi = hiAddr;
        defaultResolver = resolverAddr;

        // Assign ownership of the reverse record to our deployer
        ReverseRegistrar oldRegistrar = ReverseRegistrar(
            hi.owner(ADDR_REVERSE_NODE)
        );
        if (address(oldRegistrar) != address(0x0)) {
            oldRegistrar.claim(msg.sender);
        }
    }

    modifier authorised(address addr) {
        require(
            addr == msg.sender ||
                controllers[msg.sender] ||
                hi.isApprovedForAll(addr, msg.sender) ||
                ownsContract(addr),
            "Caller is not a controller or authorised by address or the address itself"
        );
        _;
    }

    /**
     * @dev Transfers ownership of the reverse HI record associated with the
     *      calling account.
     * @param owner The address to set as the owner of the reverse record in HI.
     * @return The HI node hash of the reverse record.
     */
    function claim(address owner) public returns (bytes32) {
        return _claimWithResolver(msg.sender, owner, address(0x0));
    }

    /**
     * @dev Transfers ownership of the reverse HI record associated with the
     *      calling account.
     * @param addr The reverse record to set
     * @param owner The address to set as the owner of the reverse record in HI.
     * @return The HI node hash of the reverse record.
     */
    function claimForAddr(address addr, address owner)
        public
        authorised(addr)
        returns (bytes32)
    {
        return _claimWithResolver(addr, owner, address(0x0));
    }

    /**
     * @dev Transfers ownership of the reverse HI record associated with the
     *      calling account.
     * @param owner The address to set as the owner of the reverse record in HI.
     * @param resolver The address of the resolver to set; 0 to leave unchanged.
     * @return The HI node hash of the reverse record.
     */
    function claimWithResolver(address owner, address resolver)
        public
        returns (bytes32)
    {
        return _claimWithResolver(msg.sender, owner, resolver);
    }

    /**
     * @dev Transfers ownership of the reverse HI record specified with the
     *      address provided
     * @param addr The reverse record to set
     * @param owner The address to set as the owner of the reverse record in HI.
     * @param resolver The address of the resolver to set; 0 to leave unchanged.
     * @return The HI node hash of the reverse record.
     */
    function claimWithResolverForAddr(
        address addr,
        address owner,
        address resolver
    ) public authorised(addr) returns (bytes32) {
        return _claimWithResolver(addr, owner, resolver);
    }

    /**
     * @dev Sets the `name()` record for the reverse HI record associated with
     * the calling account. First updates the resolver to the default reverse
     * resolver if necessary.
     * @param name The name to set for this address.
     * @return The HI node hash of the reverse record.
     */
    function setName(string memory name) public returns (bytes32) {
        bytes32 node = _claimWithResolver(
            msg.sender,
            address(this),
            address(defaultResolver)
        );
        defaultResolver.setName(node, name);
        return node;
    }

    /**
     * @dev Sets the `name()` record for the reverse HI record associated with
     * the account provided. First updates the resolver to the default reverse
     * resolver if necessary.
     * Only callable by controllers and authorised users
     * @param addr The reverse record to set
     * @param owner The owner of the reverse node
     * @param name The name to set for this address.
     * @return The HI node hash of the reverse record.
     */
    function setNameForAddr(
        address addr,
        address owner,
        string memory name
    ) public authorised(addr) returns (bytes32) {
        bytes32 node = _claimWithResolver(
            addr,
            address(this),
            address(defaultResolver)
        );
        defaultResolver.setName(node, name);
        hi.setSubnodeOwner(ADDR_REVERSE_NODE, sha3HexAddress(addr), owner);
        return node;
    }

    /**
     * @dev Returns the node hash for a given account's reverse records.
     * @param addr The address to hash
     * @return The HI node hash.
     */
    function node(address addr) public pure returns (bytes32) {
        return
            keccak256(
                abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr))
            );
    }

    /**
     * @dev An optimised function to compute the sha3 of the lower-case
     *      hexadecimal representation of an Ethereum address.
     * @param addr The address to hash
     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the
     *         input address.
     */
    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {
        assembly {
            for {
                let i := 40
            } gt(i, 0) {

            } {
                i := sub(i, 1)
                mstore8(i, byte(and(addr, 0xf), lookup))
                addr := div(addr, 0x10)
                i := sub(i, 1)
                mstore8(i, byte(and(addr, 0xf), lookup))
                addr := div(addr, 0x10)
            }

            ret := keccak256(0, 40)
        }
    }

    /* Internal functions */

    function _claimWithResolver(
        address addr,
        address owner,
        address resolver
    ) internal returns (bytes32) {
        bytes32 label = sha3HexAddress(addr);
        bytes32 node = keccak256(abi.encodePacked(ADDR_REVERSE_NODE, label));
        address currentResolver = hi.resolver(node);
        bool shouldUpdateResolver = (resolver != address(0x0) &&
            resolver != currentResolver);
        address newResolver = shouldUpdateResolver ? resolver : currentResolver;

        hi.setSubnodeRecord(ADDR_REVERSE_NODE, label, owner, newResolver, 0);

        emit ReverseClaimed(addr, node);

        return node;
    }

    function ownsContract(address addr) internal view returns (bool) {
        try Ownable(addr).owner() returns (address owner) {
            return owner == msg.sender;
        } catch {
            return false;
        }
    }
}

File 2 of 5 : HI.sol
pragma solidity >=0.8.4;

interface HI {

    // 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 virtual;
    function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external virtual;
    function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external virtual returns(bytes32);
    function setResolver(bytes32 node, address resolver) external virtual;
    function setOwner(bytes32 node, address owner) external virtual;
    function setTTL(bytes32 node, uint64 ttl) external virtual;
    function setApprovalForAll(address operator, bool approved) external virtual;
    function owner(bytes32 node) external virtual view returns (address);
    function resolver(bytes32 node) external virtual view returns (address);
    function ttl(bytes32 node) external virtual view returns (uint64);
    function recordExists(bytes32 node) external virtual view returns (bool);
    function isApprovedForAll(address owner, address operator) external virtual view returns (bool);
}

File 3 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 5 : Controllable.sol
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/access/Ownable.sol";

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

    event ControllerChanged(address indexed controller, bool enabled);

    modifier onlyController {
        require(
            controllers[msg.sender],
            "Controllable: Caller is not a controller"
        );
        _;
    }

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

File 5 of 5 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract HI","name":"hiAddr","type":"address"},{"internalType":"contract NameResolver","name":"resolverAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"ReverseClaimed","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"claim","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"claimForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimWithResolver","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"claimWithResolverForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultResolver","outputs":[{"internalType":"contract NameResolver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hi","outputs":[{"internalType":"contract HI","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"setName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"name","type":"string"}],"name":"setNameForAddr","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620017c3380380620017c383398101604081905262000034916200022a565b6200003f336200019b565b600280546001600160a01b038481166001600160a01b0319928316811790935560038054918516919092161790556040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004820152600091906302571be39060240160206040518083038186803b158015620000c657600080fd5b505afa158015620000db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001019190620001eb565b90506001600160a01b038116156200019257604051630f41a04d60e11b81523360048201526001600160a01b03821690631e83409a90602401602060405180830381600087803b1580156200015557600080fd5b505af11580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000190919062000211565b505b50505062000281565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620001fd578081fd5b81516200020a8162000268565b9392505050565b60006020828403121562000223578081fd5b5051919050565b600080604083850312156200023d578081fd5b82516200024a8162000268565b60208401519092506200025d8162000268565b809150509250929050565b6001600160a01b03811681146200027e57600080fd5b50565b61153280620002916000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063c47f002711610066578063c47f002714610201578063da8c229e14610214578063e0dba60f14610247578063f2fde38b1461025a57600080fd5b80638da5cb5b146101b0578063a99dca3f146101ce578063bffbe61c146101ee57600080fd5b80634709bf4b116100c85780634709bf4b1461013b578063715018a61461014e578063828eab0e146101585780638d9522b81461019d57600080fd5b80630ccc4a7f146100ef5780630f5a5466146101155780631e83409a14610128575b600080fd5b6101026100fd3660046112e6565b61026d565b6040519081526020015b60405180910390f35b6101026101233660046112ae565b61042c565b610102610136366004611276565b610440565b6101026101493660046112ae565b610454565b61015661060e565b005b6003546101789073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6101026101ab366004611330565b61069b565b60005473ffffffffffffffffffffffffffffffffffffffff16610178565b6002546101789073ffffffffffffffffffffffffffffffffffffffff1681565b6101026101fc366004611276565b6109f3565b61010261020f3660046113f1565b610a4e565b610237610222366004611276565b60016020526000908152604090205460ff1681565b604051901515815260200161010c565b610156610255366004611390565b610b0b565b610156610268366004611276565b610c16565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806102a357503360009081526001602052604090205460ff165b8061035257506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035291906113bd565b80610361575061036181610d46565b610418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b610423858585610e06565b95945050505050565b6000610439338484610e06565b9392505050565b600061044e33836000610e06565b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff811633148061048a57503360009081526001602052604090205460ff165b8061053957506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053991906113bd565b80610548575061054881610d46565b6105fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a40161040f565b61060684846000610e06565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b61069960006110a0565b565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806106d157503360009081526001602052604090205460ff165b8061078057506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078091906113bd565b8061078f575061078f81610d46565b610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a40161040f565b60035460009061086a908790309073ffffffffffffffffffffffffffffffffffffffff16610e06565b6003546040517f7737221300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906377372213906108c39084908890600401611424565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505060025473ffffffffffffffffffffffffffffffffffffffff1691506306ab592390507f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e261093f89611115565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015273ffffffffffffffffffffffffffffffffffffffff88166044820152606401602060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e991906113d9565b5095945050505050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2610a1f83611115565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6003546000908190610a79903390309073ffffffffffffffffffffffffffffffffffffffff16610e06565b6003546040517f7737221300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690637737221390610ad29084908790600401611424565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b509295945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b73ffffffffffffffffffffffffffffffffffffffff8116610d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040f565b610d43816110a0565b50565b60008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa925050508015610ddc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610dd991810190611292565b60015b610de857506000919050565b73ffffffffffffffffffffffffffffffffffffffff16331492915050565b600080610e1285611115565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26020820152908101829052909150600090606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101206002547f0178b8bf0000000000000000000000000000000000000000000000000000000083526004830182905290925060009173ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf9060240160206040518083038186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190611292565b9050600073ffffffffffffffffffffffffffffffffffffffff861615801590610f7c57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b9050600081610f8b5782610f8d565b865b6002546040517f5ef2c7f00000000000000000000000000000000000000000000000000000000081527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b81166044830152808416606483015260006084830152929350911690635ef2c7f09060a401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b505060405186925073ffffffffffffffffffffffffffffffffffffffff8c1691507f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e9290600090a35091979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060285b80156111c5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a815360108304925061111a565b50506028600020919050565b600082601f8301126111e1578081fd5b813567ffffffffffffffff808211156111fc576111fc61149d565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156112425761124261149d565b8160405283815286602085880101111561125a578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611287578081fd5b8135610439816114cc565b6000602082840312156112a3578081fd5b8151610439816114cc565b600080604083850312156112c0578081fd5b82356112cb816114cc565b915060208301356112db816114cc565b809150509250929050565b6000806000606084860312156112fa578081fd5b8335611305816114cc565b92506020840135611315816114cc565b91506040840135611325816114cc565b809150509250925092565b600080600060608486031215611344578283fd5b833561134f816114cc565b9250602084013561135f816114cc565b9150604084013567ffffffffffffffff81111561137a578182fd5b611386868287016111d1565b9150509250925092565b600080604083850312156113a2578182fd5b82356113ad816114cc565b915060208301356112db816114ee565b6000602082840312156113ce578081fd5b8151610439816114ee565b6000602082840312156113ea578081fd5b5051919050565b600060208284031215611402578081fd5b813567ffffffffffffffff811115611418578182fd5b610606848285016111d1565b828152600060206040818401528351806040850152825b818110156114575785810183015185820160600152820161143b565b818111156114685783606083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201606001949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610d4357600080fd5b8015158114610d4357600080fdfea26469706673582212200a0793513f239562bea3e63b3425f52564f3dd346addcd693e45c7cd8ce1056764736f6c63430008040033000000000000000000000000843b1f2f2d41828a68e8ef0c4c2c04713837f05c00000000000000000000000013041c1f80743d36453ffb9ff83efcf31ed3071e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063c47f002711610066578063c47f002714610201578063da8c229e14610214578063e0dba60f14610247578063f2fde38b1461025a57600080fd5b80638da5cb5b146101b0578063a99dca3f146101ce578063bffbe61c146101ee57600080fd5b80634709bf4b116100c85780634709bf4b1461013b578063715018a61461014e578063828eab0e146101585780638d9522b81461019d57600080fd5b80630ccc4a7f146100ef5780630f5a5466146101155780631e83409a14610128575b600080fd5b6101026100fd3660046112e6565b61026d565b6040519081526020015b60405180910390f35b6101026101233660046112ae565b61042c565b610102610136366004611276565b610440565b6101026101493660046112ae565b610454565b61015661060e565b005b6003546101789073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6101026101ab366004611330565b61069b565b60005473ffffffffffffffffffffffffffffffffffffffff16610178565b6002546101789073ffffffffffffffffffffffffffffffffffffffff1681565b6101026101fc366004611276565b6109f3565b61010261020f3660046113f1565b610a4e565b610237610222366004611276565b60016020526000908152604090205460ff1681565b604051901515815260200161010c565b610156610255366004611390565b610b0b565b610156610268366004611276565b610c16565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806102a357503360009081526001602052604090205460ff165b8061035257506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035291906113bd565b80610361575061036181610d46565b610418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b610423858585610e06565b95945050505050565b6000610439338484610e06565b9392505050565b600061044e33836000610e06565b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff811633148061048a57503360009081526001602052604090205460ff165b8061053957506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053991906113bd565b80610548575061054881610d46565b6105fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a40161040f565b61060684846000610e06565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b61069960006110a0565b565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806106d157503360009081526001602052604090205460ff165b8061078057506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078091906113bd565b8061078f575061078f81610d46565b610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a40161040f565b60035460009061086a908790309073ffffffffffffffffffffffffffffffffffffffff16610e06565b6003546040517f7737221300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906377372213906108c39084908890600401611424565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505060025473ffffffffffffffffffffffffffffffffffffffff1691506306ab592390507f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e261093f89611115565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015273ffffffffffffffffffffffffffffffffffffffff88166044820152606401602060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e991906113d9565b5095945050505050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2610a1f83611115565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6003546000908190610a79903390309073ffffffffffffffffffffffffffffffffffffffff16610e06565b6003546040517f7737221300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690637737221390610ad29084908790600401611424565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b509295945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b73ffffffffffffffffffffffffffffffffffffffff8116610d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040f565b610d43816110a0565b50565b60008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa925050508015610ddc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610dd991810190611292565b60015b610de857506000919050565b73ffffffffffffffffffffffffffffffffffffffff16331492915050565b600080610e1285611115565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26020820152908101829052909150600090606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101206002547f0178b8bf0000000000000000000000000000000000000000000000000000000083526004830182905290925060009173ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf9060240160206040518083038186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190611292565b9050600073ffffffffffffffffffffffffffffffffffffffff861615801590610f7c57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b9050600081610f8b5782610f8d565b865b6002546040517f5ef2c7f00000000000000000000000000000000000000000000000000000000081527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b81166044830152808416606483015260006084830152929350911690635ef2c7f09060a401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b505060405186925073ffffffffffffffffffffffffffffffffffffffff8c1691507f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e9290600090a35091979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060285b80156111c5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a815360108304925061111a565b50506028600020919050565b600082601f8301126111e1578081fd5b813567ffffffffffffffff808211156111fc576111fc61149d565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156112425761124261149d565b8160405283815286602085880101111561125a578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611287578081fd5b8135610439816114cc565b6000602082840312156112a3578081fd5b8151610439816114cc565b600080604083850312156112c0578081fd5b82356112cb816114cc565b915060208301356112db816114cc565b809150509250929050565b6000806000606084860312156112fa578081fd5b8335611305816114cc565b92506020840135611315816114cc565b91506040840135611325816114cc565b809150509250925092565b600080600060608486031215611344578283fd5b833561134f816114cc565b9250602084013561135f816114cc565b9150604084013567ffffffffffffffff81111561137a578182fd5b611386868287016111d1565b9150509250925092565b600080604083850312156113a2578182fd5b82356113ad816114cc565b915060208301356112db816114ee565b6000602082840312156113ce578081fd5b8151610439816114ee565b6000602082840312156113ea578081fd5b5051919050565b600060208284031215611402578081fd5b813567ffffffffffffffff811115611418578182fd5b610606848285016111d1565b828152600060206040818401528351806040850152825b818110156114575785810183015185820160600152820161143b565b818111156114685783606083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201606001949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610d4357600080fd5b8015158114610d4357600080fdfea26469706673582212200a0793513f239562bea3e63b3425f52564f3dd346addcd693e45c7cd8ce1056764736f6c63430008040033

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

000000000000000000000000843b1f2f2d41828a68e8ef0c4c2c04713837f05c00000000000000000000000013041c1f80743d36453ffb9ff83efcf31ed3071e

-----Decoded View---------------
Arg [0] : hiAddr (address): 0x843b1f2f2D41828A68E8eF0C4C2C04713837F05C
Arg [1] : resolverAddr (address): 0x13041C1F80743d36453FfB9fF83eFcF31ed3071e

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000843b1f2f2d41828a68e8ef0c4c2c04713837f05c
Arg [1] : 00000000000000000000000013041c1f80743d36453ffb9ff83efcf31ed3071e


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
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.