Sepolia Testnet

Contract

0xA66c55a6b76967477af18A03F2f12d52251Dc2C0
Source Code Source Code

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Claim98445982025-12-15 8:19:2460 days ago1765786764IN
0xA66c55a6...2251Dc2C0
0 ETH0.000000140.00110003
Claim98409762025-12-14 20:10:4860 days ago1765743048IN
0xA66c55a6...2251Dc2C0
0 ETH0.000000270.00129192

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AddressSubnameRegistrar

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
No with 200 runs

Other Settings:
prague EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

//SPDX-License-Identifier: MIT
pragma solidity >=0.8.17 <0.9.0;

import "@ensdomains/ens-contracts/registry/ENS.sol";
import {INameWrapper} from "@ensdomains/ens-contracts/wrapper/INameWrapper.sol";

bytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;

/// @title AddressSubnameRegistrar
/// @notice Allows users to claim <their-address>.<parent>.eth subnames
/// @dev Works with both wrapped and unwrapped parent names
contract AddressSubnameRegistrar {
    ENS public immutable ens;
    INameWrapper public immutable nameWrapper;
    bytes32 public immutable parentNode;
    address public immutable defaultResolver;

    event SubnameClaimed(address indexed addr, bytes32 indexed node, address owner);

    error Unauthorized();
    error AlreadyClaimed();

    /// @param _ens The ENS registry address
    /// @param _nameWrapper The NameWrapper address
    /// @param _parentNode The namehash of the parent name (e.g., namehash("ethconfig.eth"))
    /// @param _defaultResolver The default resolver to set for claimed subnames
    constructor(ENS _ens, INameWrapper _nameWrapper, bytes32 _parentNode, address _defaultResolver) {
        ens = _ens;
        nameWrapper = _nameWrapper;
        parentNode = _parentNode;
        defaultResolver = _defaultResolver;
    }

    /// @notice Claim a subname for the caller's address
    /// @return node The ENS node hash of the claimed subname
    function claim() external returns (bytes32) {
        return claimForAddr(msg.sender, msg.sender);
    }

    /// @notice Claim a subname for a specific address
    /// @param addr The address to create the subname for
    /// @param owner The owner of the new subname
    /// @return node The ENS node hash of the claimed subname
    function claimForAddr(address addr, address owner) public returns (bytes32) {
        // Only the address owner can claim their subname
        if (addr != msg.sender && !ens.isApprovedForAll(addr, msg.sender)) {
            revert Unauthorized();
        }

        bytes32 labelHash = sha3HexAddress(addr);
        bytes32 node = keccak256(abi.encodePacked(parentNode, labelHash));

        // Check if already claimed
        address currentOwner = ens.owner(node);
        if (currentOwner != address(0)) {
            // If owned by NameWrapper, check if it's actually wrapped
            if (address(nameWrapper) != address(0) && currentOwner == address(nameWrapper)) {
                if (nameWrapper.ownerOf(uint256(node)) != address(0)) {
                    revert AlreadyClaimed();
                }
            } else {
                // Owned by someone else
                revert AlreadyClaimed();
            }
        }

        // Check if the parent is wrapped (owned by NameWrapper in registry)
        address parentOwner = ens.owner(parentNode);
        if (address(nameWrapper) != address(0) && parentOwner == address(nameWrapper)) {
            // Parent is wrapped - use NameWrapper to create wrapped subname
            _claimWrapped(addr, owner);
        } else {
            // Parent is unwrapped - use ENS registry directly
            _claimUnwrapped(labelHash, owner);
        }

        emit SubnameClaimed(addr, node, owner);
        return node;
    }

    /// @notice Get the node hash for a given address's subname
    /// @param addr The address
    /// @return The ENS node hash
    function node(address addr) public view returns (bytes32) {
        return keccak256(abi.encodePacked(parentNode, sha3HexAddress(addr)));
    }

    /// @notice Get the label (hex address) for a given address
    /// @param addr The address
    /// @return The lowercase hex string (40 characters, no 0x prefix)
    function getLabel(address addr) public pure returns (string memory) {
        bytes memory ret = new bytes(40);
        uint160 addrVal = uint160(addr);
        for (uint256 i = 40; i > 0;) {
            unchecked {
                i--;
                ret[i] = bytes1(uint8(lookup[addrVal & 0xf]));
                addrVal = addrVal >> 4;
                i--;
                ret[i] = bytes1(uint8(lookup[addrVal & 0xf]));
                addrVal = addrVal >> 4;
            }
        }
        return string(ret);
    }

    /// @notice Check if a subname for an address is available
    /// @param addr The address to check
    /// @return True if the subname is available
    function available(address addr) public view returns (bool) {
        bytes32 node_ = node(addr);
        address currentOwner = ens.owner(node_);

        if (currentOwner == address(0)) {
            return true;
        }

        if (address(nameWrapper) != address(0) && currentOwner == address(nameWrapper)) {
            return nameWrapper.ownerOf(uint256(node_)) == address(0);
        }

        return false;
    }

    function _claimWrapped(address addr, address owner) internal {
        // Get parent expiry to set subname expiry
        (,, uint64 parentExpiry) = nameWrapper.getData(uint256(parentNode));

        // Create wrapped subname
        // The label needs to be the actual string, not the hash
        string memory labelStr = getLabel(addr);

        nameWrapper.setSubnodeRecord(
            parentNode,
            labelStr,
            owner,
            defaultResolver,
            0, // TTL
            0, // No fuses burned - owner has full control
            parentExpiry
        );
    }

    function _claimUnwrapped(bytes32 labelHash, address owner) internal {
        ens.setSubnodeRecord(parentNode, labelHash, owner, defaultResolver, 0);
    }

    /// @dev Compute the keccak256 hash of the lowercase hex representation of an address
    function sha3HexAddress(address addr) internal 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)
        }
    }
}

//SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;

interface ENS {
    // Logged when the owner of a node assigns a new owner to a subnode.
    event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);

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

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

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

    // Logged when an operator is added or removed.
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );

    function setRecord(
        bytes32 node,
        address owner,
        address resolver,
        uint64 ttl
    ) external;

    function setSubnodeRecord(
        bytes32 node,
        bytes32 label,
        address owner,
        address resolver,
        uint64 ttl
    ) external;

    function setSubnodeOwner(
        bytes32 node,
        bytes32 label,
        address owner
    ) external returns (bytes32);

    function setResolver(bytes32 node, address resolver) external;

    function setOwner(bytes32 node, address owner) external;

    function setTTL(bytes32 node, uint64 ttl) external;

    function setApprovalForAll(address operator, bool approved) external;

    function owner(bytes32 node) external view returns (address);

    function resolver(bytes32 node) external view returns (address);

    function ttl(bytes32 node) external view returns (uint64);

    function recordExists(bytes32 node) external view returns (bool);

    function isApprovedForAll(
        address owner,
        address operator
    ) external view returns (bool);
}

//SPDX-License-Identifier: MIT
pragma solidity ~0.8.17;

import "../registry/ENS.sol";
import "../ethregistrar/IBaseRegistrar.sol";
import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "./IMetadataService.sol";
import "./INameWrapperUpgrade.sol";

uint32 constant CANNOT_UNWRAP = 1;
uint32 constant CANNOT_BURN_FUSES = 2;
uint32 constant CANNOT_TRANSFER = 4;
uint32 constant CANNOT_SET_RESOLVER = 8;
uint32 constant CANNOT_SET_TTL = 16;
uint32 constant CANNOT_CREATE_SUBDOMAIN = 32;
uint32 constant CANNOT_APPROVE = 64;
//uint16 reserved for parent controlled fuses from bit 17 to bit 32
uint32 constant PARENT_CANNOT_CONTROL = 1 << 16;
uint32 constant IS_DOT_ETH = 1 << 17;
uint32 constant CAN_EXTEND_EXPIRY = 1 << 18;
uint32 constant CAN_DO_EVERYTHING = 0;
uint32 constant PARENT_CONTROLLED_FUSES = 0xFFFF0000;
// all fuses apart from IS_DOT_ETH
uint32 constant USER_SETTABLE_FUSES = 0xFFFDFFFF;

interface INameWrapper is IERC1155 {
    event NameWrapped(
        bytes32 indexed node,
        bytes name,
        address owner,
        uint32 fuses,
        uint64 expiry
    );

    event NameUnwrapped(bytes32 indexed node, address owner);

    event FusesSet(bytes32 indexed node, uint32 fuses);
    event ExpiryExtended(bytes32 indexed node, uint64 expiry);

    function ens() external view returns (ENS);

    function registrar() external view returns (IBaseRegistrar);

    function metadataService() external view returns (IMetadataService);

    function names(bytes32) external view returns (bytes memory);

    function name() external view returns (string memory);

    function upgradeContract() external view returns (INameWrapperUpgrade);

    function supportsInterface(bytes4 interfaceID) external view returns (bool);

    function wrap(
        bytes calldata name,
        address wrappedOwner,
        address resolver
    ) external;

    function wrapETH2LD(
        string calldata label,
        address wrappedOwner,
        uint16 ownerControlledFuses,
        address resolver
    ) external returns (uint64 expires);

    function registerAndWrapETH2LD(
        string calldata label,
        address wrappedOwner,
        uint256 duration,
        address resolver,
        uint16 ownerControlledFuses
    ) external returns (uint256 registrarExpiry);

    function renew(
        uint256 labelHash,
        uint256 duration
    ) external returns (uint256 expires);

    function unwrap(bytes32 node, bytes32 label, address owner) external;

    function unwrapETH2LD(
        bytes32 label,
        address newRegistrant,
        address newController
    ) external;

    function upgrade(bytes calldata name, bytes calldata extraData) external;

    function setFuses(
        bytes32 node,
        uint16 ownerControlledFuses
    ) external returns (uint32 newFuses);

    function setChildFuses(
        bytes32 parentNode,
        bytes32 labelhash,
        uint32 fuses,
        uint64 expiry
    ) external;

    function setSubnodeRecord(
        bytes32 node,
        string calldata label,
        address owner,
        address resolver,
        uint64 ttl,
        uint32 fuses,
        uint64 expiry
    ) external returns (bytes32);

    function setRecord(
        bytes32 node,
        address owner,
        address resolver,
        uint64 ttl
    ) external;

    function setSubnodeOwner(
        bytes32 node,
        string calldata label,
        address newOwner,
        uint32 fuses,
        uint64 expiry
    ) external returns (bytes32);

    function extendExpiry(
        bytes32 node,
        bytes32 labelhash,
        uint64 expiry
    ) external returns (uint64);

    function canModifyName(
        bytes32 node,
        address addr
    ) external view returns (bool);

    function setResolver(bytes32 node, address resolver) external;

    function setTTL(bytes32 node, uint64 ttl) external;

    function ownerOf(uint256 id) external view returns (address owner);

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address);

    function getData(
        uint256 id
    ) external view returns (address, uint32, uint64);

    function setMetadataService(IMetadataService _metadataService) external;

    function uri(uint256 tokenId) external view returns (string memory);

    function setUpgradeContract(INameWrapperUpgrade _upgradeAddress) external;

    function allFusesBurned(
        bytes32 node,
        uint32 fuseMask
    ) external view returns (bool);

    function isWrapped(bytes32) external view returns (bool);

    function isWrapped(bytes32, bytes32) external view returns (bool);
}

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "../registry/ENS.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";

interface IBaseRegistrar is IERC721 {
    event ControllerAdded(address indexed controller);
    event ControllerRemoved(address indexed controller);
    event NameMigrated(
        uint256 indexed id,
        address indexed owner,
        uint256 expires
    );
    event NameRegistered(
        uint256 indexed id,
        address indexed owner,
        uint256 expires
    );
    event NameRenewed(uint256 indexed id, uint256 expires);

    // Authorises a controller, who can register and renew domains.
    function addController(address controller) external;

    // Revoke controller permission for an address.
    function removeController(address controller) external;

    // Set the resolver for the TLD this registrar manages.
    function setResolver(address resolver) external;

    // Returns the expiration timestamp of the specified label hash.
    function nameExpires(uint256 id) external view returns (uint256);

    // Returns true if the specified name is available for registration.
    function available(uint256 id) external view returns (bool);

    /// @dev Register a name.
    function register(
        uint256 id,
        address owner,
        uint256 duration
    ) external returns (uint256);

    function renew(uint256 id, uint256 duration) external returns (uint256);

    /// @dev Reclaim ownership of a name in ENS, if you own it in the registrar.
    function reclaim(uint256 id, address owner) external;
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(
        address[] calldata accounts,
        uint256[] calldata ids
    ) external view returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

File 6 of 9 : IMetadataService.sol
//SPDX-License-Identifier: MIT
pragma solidity ~0.8.17;

interface IMetadataService {
    function uri(uint256) external view returns (string memory);
}

File 7 of 9 : INameWrapperUpgrade.sol
//SPDX-License-Identifier: MIT
pragma solidity ~0.8.17;

interface INameWrapperUpgrade {
    function wrapFromUpgrade(
        bytes calldata name,
        address wrappedOwner,
        uint32 fuses,
        uint64 expiry,
        address approved,
        bytes calldata extraData
    ) external;
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
     * understand this adds an external call which potentially creates a reentrancy vulnerability.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Settings
{
  "remappings": [
    "forge-std/=node_modules/forge-std/src/",
    "@ensdomains/ens-contracts/=node_modules/@ensdomains/ens-contracts/contracts/",
    "@unruggable/gateways/=node_modules/@unruggable/gateways/contracts/",
    "@openzeppelin/contracts-v5/=node_modules/@openzeppelin/contracts-v5/",
    "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
    "clones-with-immutable-args/=node_modules/clones-with-immutable-args/",
    "@ensdomains/buffer/contracts/Buffer.sol=node_modules/@ensdomains/buffer/contracts/Buffer.sol",
    "hardhat/=node_modules/hardhat/"
  ],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "prague",
  "viaIR": false
}

Contract ABI

API
[{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"},{"internalType":"contract INameWrapper","name":"_nameWrapper","type":"address"},{"internalType":"bytes32","name":"_parentNode","type":"bytes32"},{"internalType":"address","name":"_defaultResolver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyClaimed","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"SubnameClaimed","type":"event"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"defaultResolver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getLabel","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nameWrapper","outputs":[{"internalType":"contract INameWrapper","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"parentNode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]

610100604052348015610010575f5ffd5b50604051611a10380380611a10833981810160405281019061003291906101e6565b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508160c081815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250505050505061024a565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010c826100e3565b9050919050565b5f61011d82610102565b9050919050565b61012d81610113565b8114610137575f5ffd5b50565b5f8151905061014881610124565b92915050565b5f61015882610102565b9050919050565b6101688161014e565b8114610172575f5ffd5b50565b5f815190506101838161015f565b92915050565b5f819050919050565b61019b81610189565b81146101a5575f5ffd5b50565b5f815190506101b681610192565b92915050565b6101c581610102565b81146101cf575f5ffd5b50565b5f815190506101e0816101bc565b92915050565b5f5f5f5f608085870312156101fe576101fd6100df565b5b5f61020b8782880161013a565b945050602061021c87828801610175565b935050604061022d878288016101a8565b925050606061023e878288016101d2565b91505092959194509250565b60805160a05160c05160e0516116f261031e5f395f8181610c7201528181610ee60152610fd201525f818161078a01528181610ac201528181610cbb01528181610d1301528181610df901528181610ec30152610faf01525f81816102ea0152818161032a01528181610396015281816108ba015281816108fa0152818161096601528181610b5701528181610b9701528181610c9601528181610dbd0152610e8701525f81816101fb0152818161064e015281816106aa015281816107d601528181610a860152610f7301526116f25ff3fe608060405234801561000f575f5ffd5b5060043610610091575f3560e01c80634e71d92d116100645780634e71d92d14610143578063828eab0e14610161578063a8e5fbc01461017f578063bffbe61c1461019d578063f3068a00146101cd57610091565b806310098ad51461009557806328a249b0146100c55780633f15457f146100f55780634709bf4b14610113575b5f5ffd5b6100af60048036038101906100aa91906110a1565b6101eb565b6040516100bc91906110e6565b60405180910390f35b6100df60048036038101906100da91906110a1565b610459565b6040516100ec919061116f565b60405180910390f35b6100fd61064c565b60405161010a91906111ea565b60405180910390f35b61012d60048036038101906101289190611203565b610670565b60405161013a9190611259565b60405180910390f35b61014b610c60565b6040516101589190611259565b60405180910390f35b610169610c70565b6040516101769190611281565b60405180910390f35b610187610c94565b60405161019491906112ba565b60405180910390f35b6101b760048036038101906101b291906110a1565b610cb8565b6040516101c49190611259565b60405180910390f35b6101d5610d11565b6040516101e29190611259565b60405180910390f35b5f5f6101f683610cb8565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016102529190611259565b602060405180830381865afa15801561026d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029191906112e7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102d157600192505050610454565b5f73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161415801561037857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561044e575f73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e845f1c6040518263ffffffff1660e01b81526004016103ef919061132a565b602060405180830381865afa15801561040a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e91906112e7565b73ffffffffffffffffffffffffffffffffffffffff161492505050610454565b5f925050505b919050565b60605f602867ffffffffffffffff81111561047757610476611343565b5b6040519080825280601f01601f1916602001820160405280156104a95781602001600182028036833780820191505090505b5090505f8390505f602890505b5f811115610641578080600190039150507f30313233343536373839616263646566000000000000000000000000000000005f1b600f831673ffffffffffffffffffffffffffffffffffffffff166020811061051557610514611370565b5b1a60f81b60f81c60f81b83828151811061053257610531611370565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060048273ffffffffffffffffffffffffffffffffffffffff16901c91508080600190039150507f30313233343536373839616263646566000000000000000000000000000000005f1b600f831673ffffffffffffffffffffffffffffffffffffffff16602081106105d4576105d3611370565b5b1a60f81b60f81c60f81b8382815181106105f1576105f0611370565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060048273ffffffffffffffffffffffffffffffffffffffff16901c91506104b6565b508192505050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561074457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e985e9c584336040518363ffffffff1660e01b815260040161070392919061139d565b602060405180830381865afa15801561071e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074291906113ee565b155b1561077b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61078584610d35565b90505f7f0000000000000000000000000000000000000000000000000000000000000000826040516020016107bb929190611439565b6040516020818303038152906040528051906020012090505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161082d9190611259565b602060405180830381865afa158015610848573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086c91906112e7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a83575f73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161415801561094857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610a50575f73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e845f1c6040518263ffffffff1660e01b81526004016109bf919061132a565b602060405180830381865afa1580156109da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe91906112e7565b73ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a82565b6040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166302571be37f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610afd9190611259565b602060405180830381865afa158015610b18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3c91906112e7565b90505f73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614158015610be557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610bf957610bf48787610dba565b610c04565b610c038487610f71565b5b828773ffffffffffffffffffffffffffffffffffffffff167f1b2af9453f54ccc027b7454c98ebdf2e7bc4b762f1a1c5dd221d1affdb9fe03e88604051610c4b9190611281565b60405180910390a38294505050505092915050565b5f610c6b3333610670565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f0000000000000000000000000000000000000000000000000000000000000000610ce383610d35565b604051602001610cf4929190611439565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60285b5f811115610dae576001810390507f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010830492506001810390507f3031323334353637383961626364656600000000000000000000000000000000600f84161a8153601083049250610d39565b5060285f209050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630178fe3f7f00000000000000000000000000000000000000000000000000000000000000005f1c6040518263ffffffff1660e01b8152600401610e36919061132a565b606060405180830381865afa158015610e51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7591906114da565b925050505f610e8384610459565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166324c1af447f000000000000000000000000000000000000000000000000000000000000000083867f00000000000000000000000000000000000000000000000000000000000000005f5f896040518863ffffffff1660e01b8152600401610f2a97969594939291906115a2565b6020604051808303815f875af1158015610f46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6a9190611640565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ef2c7f07f000000000000000000000000000000000000000000000000000000000000000084847f00000000000000000000000000000000000000000000000000000000000000005f6040518663ffffffff1660e01b815260040161101295949392919061166b565b5f604051808303815f87803b158015611029575f5ffd5b505af115801561103b573d5f5f3e3d5ffd5b505050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61107082611047565b9050919050565b61108081611066565b811461108a575f5ffd5b50565b5f8135905061109b81611077565b92915050565b5f602082840312156110b6576110b5611043565b5b5f6110c38482850161108d565b91505092915050565b5f8115159050919050565b6110e0816110cc565b82525050565b5f6020820190506110f95f8301846110d7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611141826110ff565b61114b8185611109565b935061115b818560208601611119565b61116481611127565b840191505092915050565b5f6020820190508181035f8301526111878184611137565b905092915050565b5f819050919050565b5f6111b26111ad6111a884611047565b61118f565b611047565b9050919050565b5f6111c382611198565b9050919050565b5f6111d4826111b9565b9050919050565b6111e4816111ca565b82525050565b5f6020820190506111fd5f8301846111db565b92915050565b5f5f6040838503121561121957611218611043565b5b5f6112268582860161108d565b92505060206112378582860161108d565b9150509250929050565b5f819050919050565b61125381611241565b82525050565b5f60208201905061126c5f83018461124a565b92915050565b61127b81611066565b82525050565b5f6020820190506112945f830184611272565b92915050565b5f6112a4826111b9565b9050919050565b6112b48161129a565b82525050565b5f6020820190506112cd5f8301846112ab565b92915050565b5f815190506112e181611077565b92915050565b5f602082840312156112fc576112fb611043565b5b5f611309848285016112d3565b91505092915050565b5f819050919050565b61132481611312565b82525050565b5f60208201905061133d5f83018461131b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506113b05f830185611272565b6113bd6020830184611272565b9392505050565b6113cd816110cc565b81146113d7575f5ffd5b50565b5f815190506113e8816113c4565b92915050565b5f6020828403121561140357611402611043565b5b5f611410848285016113da565b91505092915050565b5f819050919050565b61143361142e82611241565b611419565b82525050565b5f6114448285611422565b6020820191506114548284611422565b6020820191508190509392505050565b5f63ffffffff82169050919050565b61147c81611464565b8114611486575f5ffd5b50565b5f8151905061149781611473565b92915050565b5f67ffffffffffffffff82169050919050565b6114b98161149d565b81146114c3575f5ffd5b50565b5f815190506114d4816114b0565b92915050565b5f5f5f606084860312156114f1576114f0611043565b5b5f6114fe868287016112d3565b935050602061150f86828701611489565b9250506040611520868287016114c6565b9150509250925092565b5f819050919050565b5f61154d6115486115438461152a565b61118f565b61149d565b9050919050565b61155d81611533565b82525050565b5f61157d6115786115738461152a565b61118f565b611464565b9050919050565b61158d81611563565b82525050565b61159c8161149d565b82525050565b5f60e0820190506115b55f83018a61124a565b81810360208301526115c78189611137565b90506115d66040830188611272565b6115e36060830187611272565b6115f06080830186611554565b6115fd60a0830185611584565b61160a60c0830184611593565b98975050505050505050565b61161f81611241565b8114611629575f5ffd5b50565b5f8151905061163a81611616565b92915050565b5f6020828403121561165557611654611043565b5b5f6116628482850161162c565b91505092915050565b5f60a08201905061167e5f83018861124a565b61168b602083018761124a565b6116986040830186611272565b6116a56060830185611272565b6116b26080830184611554565b969550505050505056fea26469706673582212209ef91ade4d8caae40e0c80953a084406cfcf0f2f15d357852335eacca0e5eb1664736f6c634300081e003300000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce86a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e00000000000000000000000024e05a384f0dc65ce33b3639734e5003cccdc1be

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610091575f3560e01c80634e71d92d116100645780634e71d92d14610143578063828eab0e14610161578063a8e5fbc01461017f578063bffbe61c1461019d578063f3068a00146101cd57610091565b806310098ad51461009557806328a249b0146100c55780633f15457f146100f55780634709bf4b14610113575b5f5ffd5b6100af60048036038101906100aa91906110a1565b6101eb565b6040516100bc91906110e6565b60405180910390f35b6100df60048036038101906100da91906110a1565b610459565b6040516100ec919061116f565b60405180910390f35b6100fd61064c565b60405161010a91906111ea565b60405180910390f35b61012d60048036038101906101289190611203565b610670565b60405161013a9190611259565b60405180910390f35b61014b610c60565b6040516101589190611259565b60405180910390f35b610169610c70565b6040516101769190611281565b60405180910390f35b610187610c94565b60405161019491906112ba565b60405180910390f35b6101b760048036038101906101b291906110a1565b610cb8565b6040516101c49190611259565b60405180910390f35b6101d5610d11565b6040516101e29190611259565b60405180910390f35b5f5f6101f683610cb8565b90505f7f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e73ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016102529190611259565b602060405180830381865afa15801561026d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029191906112e7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102d157600192505050610454565b5f73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff161415801561037857507f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561044e575f73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff16636352211e845f1c6040518263ffffffff1660e01b81526004016103ef919061132a565b602060405180830381865afa15801561040a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042e91906112e7565b73ffffffffffffffffffffffffffffffffffffffff161492505050610454565b5f925050505b919050565b60605f602867ffffffffffffffff81111561047757610476611343565b5b6040519080825280601f01601f1916602001820160405280156104a95781602001600182028036833780820191505090505b5090505f8390505f602890505b5f811115610641578080600190039150507f30313233343536373839616263646566000000000000000000000000000000005f1b600f831673ffffffffffffffffffffffffffffffffffffffff166020811061051557610514611370565b5b1a60f81b60f81c60f81b83828151811061053257610531611370565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060048273ffffffffffffffffffffffffffffffffffffffff16901c91508080600190039150507f30313233343536373839616263646566000000000000000000000000000000005f1b600f831673ffffffffffffffffffffffffffffffffffffffff16602081106105d4576105d3611370565b5b1a60f81b60f81c60f81b8382815181106105f1576105f0611370565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060048273ffffffffffffffffffffffffffffffffffffffff16901c91506104b6565b508192505050919050565b7f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e81565b5f3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561074457507f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e73ffffffffffffffffffffffffffffffffffffffff1663e985e9c584336040518363ffffffff1660e01b815260040161070392919061139d565b602060405180830381865afa15801561071e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074291906113ee565b155b1561077b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61078584610d35565b90505f7f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e826040516020016107bb929190611439565b6040516020818303038152906040528051906020012090505f7f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e73ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161082d9190611259565b602060405180830381865afa158015610848573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086c91906112e7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a83575f73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff161415801561094857507f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610a50575f73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff16636352211e845f1c6040518263ffffffff1660e01b81526004016109bf919061132a565b602060405180830381865afa1580156109da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fe91906112e7565b73ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a82565b6040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f7f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e73ffffffffffffffffffffffffffffffffffffffff166302571be37f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e6040518263ffffffff1660e01b8152600401610afd9190611259565b602060405180830381865afa158015610b18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3c91906112e7565b90505f73ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff1614158015610be557507f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610bf957610bf48787610dba565b610c04565b610c038487610f71565b5b828773ffffffffffffffffffffffffffffffffffffffff167f1b2af9453f54ccc027b7454c98ebdf2e7bc4b762f1a1c5dd221d1affdb9fe03e88604051610c4b9190611281565b60405180910390a38294505050505092915050565b5f610c6b3333610670565b905090565b7f00000000000000000000000024e05a384f0dc65ce33b3639734e5003cccdc1be81565b7f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce881565b5f7f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e610ce383610d35565b604051602001610cf4929190611439565b604051602081830303815290604052805190602001209050919050565b7f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e81565b5f60285b5f811115610dae576001810390507f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010830492506001810390507f3031323334353637383961626364656600000000000000000000000000000000600f84161a8153601083049250610d39565b5060285f209050919050565b5f7f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff16630178fe3f7f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e5f1c6040518263ffffffff1660e01b8152600401610e36919061132a565b606060405180830381865afa158015610e51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7591906114da565b925050505f610e8384610459565b90507f0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce873ffffffffffffffffffffffffffffffffffffffff166324c1af447f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e83867f00000000000000000000000024e05a384f0dc65ce33b3639734e5003cccdc1be5f5f896040518863ffffffff1660e01b8152600401610f2a97969594939291906115a2565b6020604051808303815f875af1158015610f46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6a9190611640565b5050505050565b7f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e73ffffffffffffffffffffffffffffffffffffffff16635ef2c7f07f6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e84847f00000000000000000000000024e05a384f0dc65ce33b3639734e5003cccdc1be5f6040518663ffffffff1660e01b815260040161101295949392919061166b565b5f604051808303815f87803b158015611029575f5ffd5b505af115801561103b573d5f5f3e3d5ffd5b505050505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61107082611047565b9050919050565b61108081611066565b811461108a575f5ffd5b50565b5f8135905061109b81611077565b92915050565b5f602082840312156110b6576110b5611043565b5b5f6110c38482850161108d565b91505092915050565b5f8115159050919050565b6110e0816110cc565b82525050565b5f6020820190506110f95f8301846110d7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611141826110ff565b61114b8185611109565b935061115b818560208601611119565b61116481611127565b840191505092915050565b5f6020820190508181035f8301526111878184611137565b905092915050565b5f819050919050565b5f6111b26111ad6111a884611047565b61118f565b611047565b9050919050565b5f6111c382611198565b9050919050565b5f6111d4826111b9565b9050919050565b6111e4816111ca565b82525050565b5f6020820190506111fd5f8301846111db565b92915050565b5f5f6040838503121561121957611218611043565b5b5f6112268582860161108d565b92505060206112378582860161108d565b9150509250929050565b5f819050919050565b61125381611241565b82525050565b5f60208201905061126c5f83018461124a565b92915050565b61127b81611066565b82525050565b5f6020820190506112945f830184611272565b92915050565b5f6112a4826111b9565b9050919050565b6112b48161129a565b82525050565b5f6020820190506112cd5f8301846112ab565b92915050565b5f815190506112e181611077565b92915050565b5f602082840312156112fc576112fb611043565b5b5f611309848285016112d3565b91505092915050565b5f819050919050565b61132481611312565b82525050565b5f60208201905061133d5f83018461131b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506113b05f830185611272565b6113bd6020830184611272565b9392505050565b6113cd816110cc565b81146113d7575f5ffd5b50565b5f815190506113e8816113c4565b92915050565b5f6020828403121561140357611402611043565b5b5f611410848285016113da565b91505092915050565b5f819050919050565b61143361142e82611241565b611419565b82525050565b5f6114448285611422565b6020820191506114548284611422565b6020820191508190509392505050565b5f63ffffffff82169050919050565b61147c81611464565b8114611486575f5ffd5b50565b5f8151905061149781611473565b92915050565b5f67ffffffffffffffff82169050919050565b6114b98161149d565b81146114c3575f5ffd5b50565b5f815190506114d4816114b0565b92915050565b5f5f5f606084860312156114f1576114f0611043565b5b5f6114fe868287016112d3565b935050602061150f86828701611489565b9250506040611520868287016114c6565b9150509250925092565b5f819050919050565b5f61154d6115486115438461152a565b61118f565b61149d565b9050919050565b61155d81611533565b82525050565b5f61157d6115786115738461152a565b61118f565b611464565b9050919050565b61158d81611563565b82525050565b61159c8161149d565b82525050565b5f60e0820190506115b55f83018a61124a565b81810360208301526115c78189611137565b90506115d66040830188611272565b6115e36060830187611272565b6115f06080830186611554565b6115fd60a0830185611584565b61160a60c0830184611593565b98975050505050505050565b61161f81611241565b8114611629575f5ffd5b50565b5f8151905061163a81611616565b92915050565b5f6020828403121561165557611654611043565b5b5f6116628482850161162c565b91505092915050565b5f60a08201905061167e5f83018861124a565b61168b602083018761124a565b6116986040830186611272565b6116a56060830185611272565b6116b26080830184611554565b969550505050505056fea26469706673582212209ef91ade4d8caae40e0c80953a084406cfcf0f2f15d357852335eacca0e5eb1664736f6c634300081e0033

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

00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce86a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e00000000000000000000000024e05a384f0dc65ce33b3639734e5003cccdc1be

-----Decoded View---------------
Arg [0] : _ens (address): 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Arg [1] : _nameWrapper (address): 0x0635513f179D50A207757E05759CbD106d7dFcE8
Arg [2] : _parentNode (bytes32): 0x6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e
Arg [3] : _defaultResolver (address): 0x24e05a384f0Dc65cE33B3639734E5003CcCDc1BE

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e
Arg [1] : 0000000000000000000000000635513f179d50a207757e05759cbd106d7dfce8
Arg [2] : 6a0bbb836c9bf46c725aa4890f1b44047d12f100ec6b9865fdbbed047666ed2e
Arg [3] : 00000000000000000000000024e05a384f0dc65ce33b3639734e5003cccdc1be


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