MATIC Price: $0.506965 (+1.77%)
Gas: 30.1 GWei
 

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 MATIC

MATIC Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Register396535602023-02-24 10:45:07504 days ago1677235507IN
0xB1b9fB93...a66e54822
0 MATIC0.02360085198.25657817
Register396522172023-02-24 9:54:19504 days ago1677232459IN
0xB1b9fB93...a66e54822
0 MATIC0.01766353148.39565536
Register396518882023-02-24 9:42:09504 days ago1677231729IN
0xB1b9fB93...a66e54822
0 MATIC0.01578278132.58168676
Register396490182023-02-24 7:49:38504 days ago1677224978IN
0xB1b9fB93...a66e54822
0 MATIC0.01609308135.18826104
Register186178592021-09-01 8:18:071045 days ago1630484287IN
0xB1b9fB93...a66e54822
0 MATIC0.0119042100
0x60806040186178532021-09-01 8:17:471045 days ago1630484267IN
 Create: FIFSResolvingRegistrar
0 MATIC0.0423489100

Parent Transaction Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FIFSResolvingRegistrar

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 4 : FIFSResolvingRegistrar.sol
pragma solidity 0.4.24;

import "@aragon/os/contracts/lib/ens/AbstractENS.sol";
import "./ens/IPublicResolver.sol";
import "./IFIFSResolvingRegistrar.sol";


/**
 * A registrar that allocates subdomains and sets resolvers to the first person to claim them.
 *
 * Adapted from ENS' FIFSRegistrar:
 *   https://github.com/ethereum/ens/blob/master/contracts/FIFSRegistrar.sol
 */
contract FIFSResolvingRegistrar is IFIFSResolvingRegistrar {
    bytes32 public rootNode;
    AbstractENS internal ens;
    IPublicResolver internal defaultResolver;

    bytes4 private constant ADDR_INTERFACE_ID = 0x3b3b57de;

    event ClaimSubdomain(bytes32 indexed subnode, address indexed owner, address indexed resolver);

    /**
     * Constructor.
     * @param _ensAddr The address of the ENS registry.
     * @param _defaultResolver The address of the default resolver to use for subdomains.
     * @param _node The node that this registrar administers.
     */
    constructor(AbstractENS _ensAddr, IPublicResolver _defaultResolver, bytes32 _node)
        public
    {
        ens = _ensAddr;
        defaultResolver = _defaultResolver;
        rootNode = _node;
    }

    /**
     * Register a subdomain with the default resolver if it hasn't been claimed yet.
     * @param _subnode The hash of the label to register.
     * @param _owner The address of the new owner.
     */
    function register(bytes32 _subnode, address _owner) external {
        registerWithResolver(_subnode, _owner, defaultResolver);
    }

    /**
     * Register a subdomain if it hasn't been claimed yet.
     * @param _subnode The hash of the label to register.
     * @param _owner The address of the new owner.
     * @param _resolver The address of the resolver.
     *                  If the resolver supports the address interface, the subdomain's address will
     *                  be set to the new owner.
     */
    function registerWithResolver(bytes32 _subnode, address _owner, IPublicResolver _resolver) public {
        bytes32 node = keccak256(rootNode, _subnode);
        address currentOwner = ens.owner(node);
        require(currentOwner == address(0));

        ens.setSubnodeOwner(rootNode, _subnode, address(this));
        ens.setResolver(node, _resolver);
        if (_resolver.supportsInterface(ADDR_INTERFACE_ID)) {
            _resolver.setAddr(node, _owner);
        }

        // Give ownership to the claimer
        ens.setOwner(node, _owner);

        emit ClaimSubdomain(_subnode, _owner, address(_resolver));
    }
}

File 2 of 4 : AbstractENS.sol
// See https://github.com/ensdomains/ens/blob/7e377df83f/contracts/AbstractENS.sol

pragma solidity ^0.4.15;


interface AbstractENS {
    function owner(bytes32 _node) public constant returns (address);
    function resolver(bytes32 _node) public constant returns (address);
    function ttl(bytes32 _node) public constant returns (uint64);
    function setOwner(bytes32 _node, address _owner) public;
    function setSubnodeOwner(bytes32 _node, bytes32 label, address _owner) public;
    function setResolver(bytes32 _node, address _resolver) public;
    function setTTL(bytes32 _node, uint64 _ttl) public;

    // Logged when the owner of a node assigns a new owner to a subnode.
    event NewOwner(bytes32 indexed _node, bytes32 indexed _label, address _owner);

    // Logged when the owner of a node transfers ownership to a new account.
    event Transfer(bytes32 indexed _node, address _owner);

    // Logged when the resolver for a node changes.
    event NewResolver(bytes32 indexed _node, address _resolver);

    // Logged when the TTL of a node changes
    event NewTTL(bytes32 indexed _node, uint64 _ttl);
}

File 3 of 4 : IPublicResolver.sol
pragma solidity ^0.4.0;


interface IPublicResolver {
    function supportsInterface(bytes4 interfaceID) constant returns (bool);
    function addr(bytes32 node) constant returns (address ret);
    function setAddr(bytes32 node, address addr);
    function hash(bytes32 node) constant returns (bytes32 ret);
    function setHash(bytes32 node, bytes32 hash);
}

File 4 of 4 : IFIFSResolvingRegistrar.sol
pragma solidity 0.4.24;

import "./ens/IPublicResolver.sol";


interface IFIFSResolvingRegistrar {
    function register(bytes32 _subnode, address _owner) external;
    function registerWithResolver(bytes32 _subnode, address _owner, IPublicResolver _resolver) public;
}

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

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_subnode","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_subnode","type":"bytes32"},{"name":"_owner","type":"address"},{"name":"_resolver","type":"address"}],"name":"registerWithResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rootNode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_ensAddr","type":"address"},{"name":"_defaultResolver","type":"address"},{"name":"_node","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"subnode","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"resolver","type":"address"}],"name":"ClaimSubdomain","type":"event"}]

608060405234801561001057600080fd5b506040516060806105ef83398101604090815281516020830151919092015160018054600160a060020a03948516600160a060020a0319918216179091556002805494909316931692909217905560005561057f806100706000396000f3006080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a9811461005b578063f858fc0b1461008e578063faff50a8146100c5575b600080fd5b34801561006757600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff602435166100ec565b005b34801561009a57600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff60243581169060443516610116565b3480156100d157600080fd5b506100da61054d565b60408051918252519081900360200190f35b600254610112908390839073ffffffffffffffffffffffffffffffffffffffff16610116565b5050565b60008054604080519182526020808301879052815192839003820183206001547f02571be300000000000000000000000000000000000000000000000000000000855260048501829052925190949373ffffffffffffffffffffffffffffffffffffffff909316926302571be392602480830193919282900301818787803b1580156101a157600080fd5b505af11580156101b5573d6000803e3d6000fd5b505050506040513d60208110156101cb57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116156101f057600080fd5b60015460008054604080517f06ab59230000000000000000000000000000000000000000000000000000000081526004810192909252602482018990523060448301525173ffffffffffffffffffffffffffffffffffffffff909316926306ab59239260648084019391929182900301818387803b15801561027157600080fd5b505af1158015610285573d6000803e3d6000fd5b5050600154604080517f1896f70a0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff88811660248301529151919092169350631896f70a9250604480830192600092919082900301818387803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b5050604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f3b3b57de000000000000000000000000000000000000000000000000000000006004820152905173ffffffffffffffffffffffffffffffffffffffff871693506301ffc9a7925060248083019260209291908290030181600087803b1580156103aa57600080fd5b505af11580156103be573d6000803e3d6000fd5b505050506040513d60208110156103d457600080fd5b50511561046c57604080517fd5fa2b000000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff868116602483015291519185169163d5fa2b009160448082019260009290919082900301818387803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050505b600154604080517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff878116602483015291519190921691635b0fc9c391604480830192600092919082900301818387803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff80871693508716915087907fe27a5a369e0d2c5056ccfcbd5f83f145f43350142d42aaf46ff9a9e461d543df90600090a45050505050565b600054815600a165627a7a72305820dde468816802a83e6e70692ba51c6f095c5710a84ecdb601b5ac001740eaaaeb00290000000000000000000000003c70a0190d09f34519e6e218364451add21b7d4b0000000000000000000000009d9f6ed265ef82f3c129292b171705e44d69b03f7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86

Deployed Bytecode

0x6080604052600436106100565763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a9811461005b578063f858fc0b1461008e578063faff50a8146100c5575b600080fd5b34801561006757600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff602435166100ec565b005b34801561009a57600080fd5b5061008c60043573ffffffffffffffffffffffffffffffffffffffff60243581169060443516610116565b3480156100d157600080fd5b506100da61054d565b60408051918252519081900360200190f35b600254610112908390839073ffffffffffffffffffffffffffffffffffffffff16610116565b5050565b60008054604080519182526020808301879052815192839003820183206001547f02571be300000000000000000000000000000000000000000000000000000000855260048501829052925190949373ffffffffffffffffffffffffffffffffffffffff909316926302571be392602480830193919282900301818787803b1580156101a157600080fd5b505af11580156101b5573d6000803e3d6000fd5b505050506040513d60208110156101cb57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116156101f057600080fd5b60015460008054604080517f06ab59230000000000000000000000000000000000000000000000000000000081526004810192909252602482018990523060448301525173ffffffffffffffffffffffffffffffffffffffff909316926306ab59239260648084019391929182900301818387803b15801561027157600080fd5b505af1158015610285573d6000803e3d6000fd5b5050600154604080517f1896f70a0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff88811660248301529151919092169350631896f70a9250604480830192600092919082900301818387803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b5050604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f3b3b57de000000000000000000000000000000000000000000000000000000006004820152905173ffffffffffffffffffffffffffffffffffffffff871693506301ffc9a7925060248083019260209291908290030181600087803b1580156103aa57600080fd5b505af11580156103be573d6000803e3d6000fd5b505050506040513d60208110156103d457600080fd5b50511561046c57604080517fd5fa2b000000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff868116602483015291519185169163d5fa2b009160448082019260009290919082900301818387803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050505b600154604080517f5b0fc9c30000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff878116602483015291519190921691635b0fc9c391604480830192600092919082900301818387803b1580156104e757600080fd5b505af11580156104fb573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff80871693508716915087907fe27a5a369e0d2c5056ccfcbd5f83f145f43350142d42aaf46ff9a9e461d543df90600090a45050505050565b600054815600a165627a7a72305820dde468816802a83e6e70692ba51c6f095c5710a84ecdb601b5ac001740eaaaeb0029

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

0000000000000000000000003c70a0190d09f34519e6e218364451add21b7d4b0000000000000000000000009d9f6ed265ef82f3c129292b171705e44d69b03f7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86

-----Decoded View---------------
Arg [0] : _ensAddr (address): 0x3C70A0190D09F34519e6E218364451ADD21b7d4b
Arg [1] : _defaultResolver (address): 0x9d9f6Ed265eF82f3C129292b171705E44d69B03f
Arg [2] : _node (bytes32): 0x7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c70a0190d09f34519e6e218364451add21b7d4b
Arg [1] : 0000000000000000000000009d9f6ed265ef82f3c129292b171705e44d69b03f
Arg [2] : 7e74a86b6e146964fb965db04dc2590516da77f720bb6759337bf5632415fd86


Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.