Contract 0x608964f5a70a287c8f9f7dab0dcd0d32d1ff92ce 10

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x684b96050c52754bd11424b357828265ad555df174e2dbcbe0e1430cd78c538cSet Name677523542023-09-02 20:23:4122 days 12 hrs ago FNS Namegroot.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.003274518
0x6ecd9e307da36049af6a91016548b435a54d88330ddf73bd54eda7773e0f70d7Set Name677177112023-09-01 22:19:1723 days 10 hrs ago FNS Namebidloperv.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.004031776
0xc2e594785156e7f0d2ab2c877d9a2f375ee01dc2a9ea91bbfa9d2892db05d332Set Name675987892023-08-30 4:08:3426 days 4 hrs ago FNS Namedokkodo.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.012908164548
0x28f90a3b9b1bbf1ebded243566b24ddc06cd70948f2a34358adead7ee9b24171Set Name673994382023-08-25 8:18:3231 days 39 mins ago FNS Namefmulti.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.007382986088
0xe042765992c8e6214e2ab82e54799b78f0fda696ba6f045aabaf42eda8b2f568Set Name673762702023-08-24 16:51:2931 days 16 hrs ago FNS Namevahidgh.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.023338164917
0x6b18cd417a95366af8d6dc7e30bfebf90a2374bf0c886a52dfaf3ec63fd1d295Set Name673233602023-08-23 7:11:5533 days 1 hr ago FNS Nameftmshiller.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.004718091478
0xf19c43c2b3d188c0bac6adf2e693496a69c1424f14cc56dab7341e5c89e11f0fSet Name673114212023-08-22 23:05:4333 days 9 hrs ago FNS Namedogedosh.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.072287274441
0x8ad8b90bc149dd7d58d4d789f1ea48754cd218ba35b68570a9023b7f31513ad9Set Name670551382023-08-16 15:26:0239 days 17 hrs ago FNS Nameego97516.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.0040095
0x60d9c76113aea29717f5509296d104b8fdca007d33541504c9daacaf7a2c072dSet Name670171032023-08-15 18:00:5340 days 14 hrs ago0x65e81c8ad644cfe286677bd51a3e630afe12aed8 IN  Fantom Domains: Reverse Registrar0 FTM0.00733403
0x828676945076b05fc3619dd3b5f4aa4b8ab062e04ded1673f6468d16d3d234b8Set Name670170992023-08-15 18:00:4240 days 14 hrs ago0x65e81c8ad644cfe286677bd51a3e630afe12aed8 IN  Fantom Domains: Reverse Registrar0 FTM0.045090562424
0xd832cfd4792a1761032bdf3c2f6c60b30778b77d3c7bc491773bfee589a92c61Set Name670170922023-08-15 18:00:2840 days 14 hrs ago0x65e81c8ad644cfe286677bd51a3e630afe12aed8 IN  Fantom Domains: Reverse Registrar0 FTM0.081115401253
0xc60800302ac33c325925e4369fc4b16929340e9f09bf655b34990838ec2ab6bdSet Name668798852023-08-11 18:37:0644 days 14 hrs ago FNS Namedoubleyouw3.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.008220899248
0x400ebb63f7188a544daefbd05a30e464e512067231e7eb939c04ef7d6f43f625Set Name668072962023-08-09 20:00:5146 days 12 hrs ago FNS Namedomains.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.00133644
0x3c68983bddbe91770353bca20b12fc3ec6cfbddacddd212c20f8f984e7d3c81dSet Name666298012023-08-05 0:04:0551 days 8 hrs ago FNS Namejacktheoiler.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.004103528187
0x49d211c439550f671bc15ba54ce259196395b687c2e8a38b743567cae10c4220Set Name666297642023-08-05 0:02:3751 days 8 hrs ago FNS Namejacktheoiler.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.008100212643
0xd485d2eec56425cae3ecdf3445b4a5edf4755c0345b2625073533892d017c6f5Set Name665511422023-08-02 15:26:0053 days 17 hrs ago0x5c146cd18fa53914580573c9b9604588529406ca IN  Fantom Domains: Reverse Registrar0 FTM0.005435733
0xf54d703d173a4501c1fff8b0852c832733761f6d0b381600638876bc69f74610Set Name665511192023-08-02 15:24:5853 days 17 hrs ago0x5c146cd18fa53914580573c9b9604588529406ca IN  Fantom Domains: Reverse Registrar0 FTM0.006118215
0x4b21635765d2102344ecb62add5dfb7baa1e7d00d5373c7d22ddab90517f6ec0Set Name664044172023-07-29 2:59:1958 days 5 hrs ago FNS Namedudesahn.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.013227911219
0x1dd22d4e665331abf56e2d7bfc4fbec61a6f0b46e3586f30a5e391b06ad7c3eeSet Name664043652023-07-29 2:57:1758 days 6 hrs ago FNS Namedudesahn.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.010484140932
0xec45ddf36ae3eca9a3cb2580ce78c5d9c1aec8340621711549597a41e916ba66Set Name663515062023-07-27 11:46:4759 days 21 hrs ago FNS Namemaxflowo2.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.08578190883
0x90f931e31e422b217fbe67a6c719b2d14c9278866b29e8439e22046535f360d2Set Name662884752023-07-25 15:21:3061 days 17 hrs ago FNS Namezirama.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.336289233079
0x40caf856de6d148158171f19e26362eeb042e6ea7b0ad7d72165b407ccda240dSet Name662860832023-07-25 13:39:4061 days 19 hrs ago FNS Namearich.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.186362901474
0x0daabec6ef323638692b1965ae0c04e03add5e71f41b05f55fdca00f5cdf3d18Set Name655495192023-07-10 22:40:3476 days 10 hrs ago FNS Nameyougetnothing.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.413475719256
0x7bacfdaaa8deed6cd9164a70ca602d96edbb409815924fdea9532b0aec12723aSet Name651802682023-07-05 21:18:3881 days 11 hrs ago FNS Namescreamsh.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.006289259998
0xd53245504e27bde890eca47869ea93808a2ffaf123aadee26f58c052b24c43d9Set Name651014022023-07-04 3:02:3483 days 5 hrs ago FNS Nameydeployooor.ftm  IN  Fantom Domains: Reverse Registrar0 FTM0.006734670917
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xf1991dc872a68c6ba1635f3a290e44fc5c7b68f00a2c9dbed1fe7b0bbf5af369442080612022-08-04 12:57:07416 days 20 hrs ago Fantom Domain: Deployer  Contract Creation0 FTM
[ Download CSV Export 
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 "./FNS.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 {
    FNS public fns;
    NameResolver public defaultResolver;

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

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

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

    modifier authorised(address addr) {
        require(
            addr == msg.sender ||
                controllers[msg.sender] ||
                fns.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 FNS record associated with the
     *      calling account.
     * @param owner The address to set as the owner of the reverse record in FNS.
     * @return The FNS 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 FNS 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 FNS.
     * @return The FNS 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 FNS record associated with the
     *      calling account.
     * @param owner The address to set as the owner of the reverse record in FNS.
     * @param resolver The address of the resolver to set; 0 to leave unchanged.
     * @return The FNS 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 FNS 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 FNS.
     * @param resolver The address of the resolver to set; 0 to leave unchanged.
     * @return The FNS 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 FNS 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 FNS 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 FNS 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 FNS 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);
        fns.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 FNS 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 = fns.resolver(node);
        bool shouldUpdateResolver = (resolver != address(0x0) &&
            resolver != currentResolver);
        address newResolver = shouldUpdateResolver ? resolver : currentResolver;

        fns.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 : FNS.sol
pragma solidity >=0.8.4;

interface FNS {

    // 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 FNS","name":"fnsAddr","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":"fns","outputs":[{"internalType":"contract FNS","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"}]

60806040523480156200001157600080fd5b50604051620017c3380380620017c383398101604081905262000034916200022a565b6200003f336200019b565b600280546001600160a01b038481166001600160a01b0319928316811790935560038054918516919092161790556040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004820152600091906302571be39060240160206040518083038186803b158015620000c657600080fd5b505afa158015620000db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001019190620001eb565b90506001600160a01b038116156200019257604051630f41a04d60e11b81523360048201526001600160a01b03821690631e83409a90602401602060405180830381600087803b1580156200015557600080fd5b505af11580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000190919062000211565b505b50505062000281565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620001fd578081fd5b81516200020a8162000268565b9392505050565b60006020828403121562000223578081fd5b5051919050565b600080604083850312156200023d578081fd5b82516200024a8162000268565b60208401519092506200025d8162000268565b809150509250929050565b6001600160a01b03811681146200027e57600080fd5b50565b61153280620002916000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063c47f002711610066578063c47f002714610201578063da8c229e14610214578063e0dba60f14610247578063f2fde38b1461025a57600080fd5b80638da5cb5b146101b0578063b382e4c5146101ce578063bffbe61c146101ee57600080fd5b80634709bf4b116100c85780634709bf4b1461013b578063715018a61461014e578063828eab0e146101585780638d9522b81461019d57600080fd5b80630ccc4a7f146100ef5780630f5a5466146101155780631e83409a14610128575b600080fd5b6101026100fd3660046112e6565b61026d565b6040519081526020015b60405180910390f35b6101026101233660046112ae565b61042c565b610102610136366004611276565b610440565b6101026101493660046112ae565b610454565b61015661060e565b005b6003546101789073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6101026101ab366004611330565b61069b565b60005473ffffffffffffffffffffffffffffffffffffffff16610178565b6002546101789073ffffffffffffffffffffffffffffffffffffffff1681565b6101026101fc366004611276565b6109f3565b61010261020f3660046113f1565b610a4e565b610237610222366004611276565b60016020526000908152604090205460ff1681565b604051901515815260200161010c565b610156610255366004611390565b610b0b565b610156610268366004611276565b610c16565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806102a357503360009081526001602052604090205460ff165b8061035257506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035291906113bd565b80610361575061036181610d46565b610418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b610423858585610e06565b95945050505050565b6000610439338484610e06565b9392505050565b600061044e33836000610e06565b92915050565b60008273ffffffffffffffffffffffffffffffffffffffff811633148061048a57503360009081526001602052604090205460ff165b8061053957506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053991906113bd565b80610548575061054881610d46565b6105fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a40161040f565b61060684846000610e06565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b61069960006110a0565b565b60008373ffffffffffffffffffffffffffffffffffffffff81163314806106d157503360009081526001602052604090205460ff165b8061078057506002546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301523360248301529091169063e985e9c59060440160206040518083038186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078091906113bd565b8061078f575061078f81610d46565b610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f43616c6c6572206973206e6f74206120636f6e74726f6c6c6572206f7220617560448201527f74686f72697365642062792061646472657373206f722074686520616464726560648201527f737320697473656c660000000000000000000000000000000000000000000000608482015260a40161040f565b60035460009061086a908790309073ffffffffffffffffffffffffffffffffffffffff16610e06565b6003546040517f7737221300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906377372213906108c39084908890600401611424565b600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505060025473ffffffffffffffffffffffffffffffffffffffff1691506306ab592390507f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e261093f89611115565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015273ffffffffffffffffffffffffffffffffffffffff88166044820152606401602060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e991906113d9565b5095945050505050565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2610a1f83611115565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b6003546000908190610a79903390309073ffffffffffffffffffffffffffffffffffffffff16610e06565b6003546040517f7737221300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690637737221390610ad29084908790600401611424565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b509295945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b73ffffffffffffffffffffffffffffffffffffffff821660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf87910160405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040f565b73ffffffffffffffffffffffffffffffffffffffff8116610d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040f565b610d43816110a0565b50565b60008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa925050508015610ddc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610dd991810190611292565b60015b610de857506000919050565b73ffffffffffffffffffffffffffffffffffffffff16331492915050565b600080610e1285611115565b604080517f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26020820152908101829052909150600090606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101206002547f0178b8bf0000000000000000000000000000000000000000000000000000000083526004830182905290925060009173ffffffffffffffffffffffffffffffffffffffff90911690630178b8bf9060240160206040518083038186803b158015610eef57600080fd5b505afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190611292565b9050600073ffffffffffffffffffffffffffffffffffffffff861615801590610f7c57508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b9050600081610f8b5782610f8d565b865b6002546040517f5ef2c7f00000000000000000000000000000000000000000000000000000000081527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b81166044830152808416606483015260006084830152929350911690635ef2c7f09060a401600060405180830381600087803b15801561103857600080fd5b505af115801561104c573d6000803e3d6000fd5b505060405186925073ffffffffffffffffffffffffffffffffffffffff8c1691507f6ada868dd3058cf77a48a74489fd7963688e5464b2b0fa957ace976243270e9290600090a35091979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060285b80156111c5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a815360108304925061111a565b50506028600020919050565b600082601f8301126111e1578081fd5b813567ffffffffffffffff808211156111fc576111fc61149d565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156112425761124261149d565b8160405283815286602085880101111561125a578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611287578081fd5b8135610439816114cc565b6000602082840312156112a3578081fd5b8151610439816114cc565b600080604083850312156112c0578081fd5b82356112cb816114cc565b915060208301356112db816114cc565b809150509250929050565b6000806000606084860312156112fa578081fd5b8335611305816114cc565b92506020840135611315816114cc565b91506040840135611325816114cc565b809150509250925092565b600080600060608486031215611344578283fd5b833561134f816114cc565b9250602084013561135f816114cc565b9150604084013567ffffffffffffffff81111561137a578182fd5b611386868287016111d1565b9150509250925092565b600080604083850312156113a2578182fd5b82356113ad816114cc565b915060208301356112db816114ee565b6000602082840312156113ce578081fd5b8151610439816114ee565b6000602082840312156113ea578081fd5b5051919050565b600060208284031215611402578081fd5b813567ffffffffffffffff811115611418578182fd5b610606848285016111d1565b828152600060206040818401528351806040850152825b818110156114575785810183015185820160600152820161143b565b818111156114685783606083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201606001949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610d4357600080fd5b8015158114610d4357600080fdfea2646970667358221220c1796ddfbb4f35e0617bc0bff62eacb29decea9f2bdd3ace6ba45abe5e1a7da664736f6c63430008040033000000000000000000000000a6770e2036fea13045aec56bef7e85f45938e42800000000000000000000000045a52764c741c8deb51cd3c864652bb25eab95ed

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

000000000000000000000000a6770e2036fea13045aec56bef7e85f45938e42800000000000000000000000045a52764c741c8deb51cd3c864652bb25eab95ed

-----Decoded View---------------
Arg [0] : fnsAddr (address): 0xa6770e2036fea13045aec56bef7e85f45938e428
Arg [1] : resolverAddr (address): 0x45a52764c741c8deb51cd3c864652bb25eab95ed

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a6770e2036fea13045aec56bef7e85f45938e428
Arg [1] : 00000000000000000000000045a52764c741c8deb51cd3c864652bb25eab95ed


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.