More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 460 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Subnode | 20104775 | 231 days ago | IN | 0 ETH | 0.00064985 | ||||
Claim Subnode | 20044480 | 239 days ago | IN | 0 ETH | 0.00088894 | ||||
Claim Subnode | 19953228 | 252 days ago | IN | 0 ETH | 0.00049715 | ||||
Claim Subnode | 19835454 | 268 days ago | IN | 0 ETH | 0.00058922 | ||||
Claim Subnode | 19755354 | 280 days ago | IN | 0 ETH | 0.00091154 | ||||
Claim Subnode | 19728231 | 283 days ago | IN | 0 ETH | 0.00114177 | ||||
Claim Subnode | 19691478 | 289 days ago | IN | 0 ETH | 0.00135891 | ||||
Claim Subnode | 19680152 | 290 days ago | IN | 0 ETH | 0.00107889 | ||||
Claim Subnode | 19678138 | 290 days ago | IN | 0 ETH | 0.00131054 | ||||
Claim Subnode | 19431984 | 325 days ago | IN | 0 ETH | 0.00302453 | ||||
Claim Subnode | 19274809 | 347 days ago | IN | 0 ETH | 0.00363492 | ||||
Claim Subnode | 19212948 | 356 days ago | IN | 0 ETH | 0.00497939 | ||||
Claim Subnode | 19178892 | 361 days ago | IN | 0 ETH | 0.005624 | ||||
Claim Subnode | 19047733 | 379 days ago | IN | 0 ETH | 0.00181402 | ||||
Claim Subnode | 18909444 | 398 days ago | IN | 0 ETH | 0.00125212 | ||||
Claim Subnode | 18756372 | 420 days ago | IN | 0 ETH | 0.00313772 | ||||
Claim Subnode | 18732544 | 423 days ago | IN | 0 ETH | 0.00453406 | ||||
Claim Subnode | 18706682 | 427 days ago | IN | 0 ETH | 0.0069445 | ||||
Claim Subnode | 18702827 | 427 days ago | IN | 0 ETH | 0.00402771 | ||||
Claim Subnode | 18699517 | 428 days ago | IN | 0 ETH | 0.00441464 | ||||
Claim Subnode | 18694739 | 428 days ago | IN | 0 ETH | 0.00423486 | ||||
Claim Subnode | 18693766 | 429 days ago | IN | 0 ETH | 0.00522045 | ||||
Claim Subnode | 18665620 | 433 days ago | IN | 0 ETH | 0.00465441 | ||||
Claim Subnode | 18636869 | 437 days ago | IN | 0 ETH | 0.00322436 | ||||
Claim Subnode | 18632577 | 437 days ago | IN | 0 ETH | 0.00427568 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
WanderDomainRegistry
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; import "openzeppelin-contracts/contracts/token/ERC721/IERC721.sol"; import "openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol"; import "openzeppelin-contracts/contracts/access/Ownable.sol"; import "openzeppelin-contracts/contracts/security/Pausable.sol"; import "ens-contracts/registry/ENS.sol"; import "ens-contracts/ethregistrar/IBaseRegistrar.sol"; contract WanderDomainRegistry is Ownable, Pausable, IERC721Receiver { /// Wanderers token IERC721 immutable WANDERERS; /// ENS Registry ENS immutable REGISTRY; /// ENS Registrar (token) IBaseRegistrar immutable REGISTRAR; /// Public resolver address immutable RESOLVER; /// ".eth" basenode hash bytes32 constant ETH_BASENODE = 0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae; struct NodeLabel { bytes32 node; bytes32 label; } // Token IDs => registered node/label mapping(uint256 => NodeLabel) public tokenSubnode; event DomainDeposited(uint256 tokenId); event DomainWithdrawn(uint256 tokenId); constructor( IERC721 _wanderers, ENS _registry, IBaseRegistrar _registrar, address _resolver ) { WANDERERS = _wanderers; REGISTRY = _registry; REGISTRAR = _registrar; RESOLVER = _resolver; _pause(); } modifier isTokenHolder(uint256 tokenId) { require(WANDERERS.ownerOf(tokenId) == msg.sender, "not token holder"); _; } modifier tokenNotAssignedToSubnode(uint256 tokenId) { require( tokenSubnode[tokenId].node != 0 && tokenSubnode[tokenId].label != 0, "token already has subnode" ); _; } /// @dev Pause the contract. function pause() external onlyOwner whenNotPaused { _pause(); } /// @dev Unpause the contract. function unpause() external onlyOwner whenPaused { _unpause(); } /// @dev Claim a subdomain for a token. May only be called by the token holder. If a subdomain for the given token already exists, it will be cleared. /// @param tokenId the Wanderers token ID used for the claim /// @param node nodehash of the domain /// @param label labelhash of the subdomain /// @param _owner new owner of subdomain function claimSubnode( uint256 tokenId, bytes32 node, bytes32 label, address _owner ) external isTokenHolder(tokenId) whenNotPaused { bytes32 subnode = keccak256(abi.encodePacked(node, label)); NodeLabel storage currentNodeLabel = tokenSubnode[tokenId]; // If the token already has a label, clear it if (currentNodeLabel.node != 0 || currentNodeLabel.label != 0) { _clearSubnode(currentNodeLabel.node, currentNodeLabel.label); } // Make sure the subnode to be set does not already exist require( REGISTRY.owner(subnode) == address(0), "subnode already in use" ); // Update current node and label currentNodeLabel.node = node; currentNodeLabel.label = label; // Set subnode owner to new owner REGISTRY.setSubnodeRecord(node, label, _owner, RESOLVER, 0); } function clearSubnode(uint256 tokenId) external isTokenHolder(tokenId) whenNotPaused { NodeLabel storage currentNodeLabel = tokenSubnode[tokenId]; currentNodeLabel.node = 0; currentNodeLabel.label = 0; _clearSubnode(currentNodeLabel.node, currentNodeLabel.label); } function _clearSubnode(bytes32 node, bytes32 label) internal { REGISTRY.setSubnodeRecord(node, label, address(0), address(0), 0); } /// When administrative controls are enabled, allow the owner to withdraw domains function withdrawDomain(uint256 tokenId) external onlyOwner whenPaused { emit DomainWithdrawn(tokenId); REGISTRAR.safeTransferFrom(address(this), owner(), tokenId); } /// IERC721Receiver implementation /// @dev when administrative controls are enabled, only the owner can deposit new domains. function onERC721Received( address, /* operator */ address from, uint256 tokenId, bytes calldata /* data */ ) external whenNotPaused returns (bytes4) { // Token is a .eth domain require(msg.sender == address(REGISTRAR), "not a domain"); // When administrative controls are enabled, only the owner can deposit new domains if (owner() != address(0)) { require(from == owner(), "only owner may add domains"); } // Take control of the domain REGISTRAR.reclaim(tokenId, address(this)); emit DomainDeposited(tokenId); return IERC721Receiver.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * 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 (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
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); }
import "../registry/ENS.sol"; import "./IBaseRegistrar.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 iff 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 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); }
// 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; } }
{ "remappings": [ "@openzeppelin/=lib/openzeppelin-contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "ens-contracts/=lib/ens-contracts/contracts/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "script/=script/", "src/=src/", "test/=test/", "src/=src/", "test/=test/", "script/=script/" ], "optimizer": { "enabled": true, "runs": 1000 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC721","name":"_wanderers","type":"address"},{"internalType":"contract ENS","name":"_registry","type":"address"},{"internalType":"contract IBaseRegistrar","name":"_registrar","type":"address"},{"internalType":"address","name":"_resolver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"DomainDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"DomainWithdrawn","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"_owner","type":"address"}],"name":"claimSubnode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"clearSubnode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenSubnode","outputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawDomain","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b506040516200107c3803806200107c8339810160408190526200003591620001a7565b620000403362000080565b6000805460ff60a01b191690556001600160a01b0380851660805283811660a05282811660c052811660e05262000076620000d0565b505050506200020f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000da62000133565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620001163390565b6040516001600160a01b03909116815260200160405180910390a1565b62000147600054600160a01b900460ff1690565b156200018c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640160405180910390fd5b565b6001600160a01b0381168114620001a457600080fd5b50565b60008060008060808587031215620001be57600080fd5b8451620001cb816200018e565b6020860151909450620001de816200018e565b6040860151909350620001f1816200018e565b606086015190925062000204816200018e565b939692955090935050565b60805160a05160c05160e051610e106200026c600039600061067b0152600081816102060152818161031b015261077e015260008181610583015281816106aa0152610b7801526000818161041f01526108f20152610e106000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063715018a6116100815780638da5cb5b1161005b5780638da5cb5b146101b0578063f2fde38b146101cb578063fee425f8146101de57600080fd5b8063715018a61461018d5780638456cb591461019557806385c97aa11461019d57600080fd5b8063557e1391116100b2578063557e1391146101215780635c975abb1461015d5780636becaa401461017a57600080fd5b8063150b7a02146100ce5780633f4ba83a14610117575b600080fd5b6100e16100dc366004610ca0565b6101f1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61011f6103e3565b005b61014861012f366004610d3f565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161010e565b600054600160a01b900460ff16604051901515815260200161010e565b61011f610188366004610d58565b6103fd565b61011f61070f565b61011f610721565b61011f6101ab366004610d3f565b610739565b6000546040516001600160a01b03909116815260200161010e565b61011f6101d9366004610d99565b610840565b61011f6101ec366004610d3f565b6108d0565b60006101fb6109e4565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102785760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206120646f6d61696e000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000546001600160a01b0316156102e6576000546001600160a01b038681169116146102e65760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c79206f776e6572206d61792061646420646f6d61696e73000000000000604482015260640161026f565b6040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906328ed4f6c90604401600060405180830381600087803b15801561036757600080fd5b505af115801561037b573d6000803e3d6000fd5b505050507f654196dca222d5e94bf44785bb8c73bb3e1cf4d58ae1764f45f52675bbd01232846040516103b091815260200190565b60405180910390a1507f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6103eb610a3e565b6103f3610a98565b6103fb610af1565b565b6040516331a9108f60e11b815260048101859052849033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610dbd565b6001600160a01b0316146104e05760405162461bcd60e51b815260206004820152601060248201527f6e6f7420746f6b656e20686f6c64657200000000000000000000000000000000604482015260640161026f565b6104e86109e4565b604080516020808201879052818301869052825180830384018152606090920183528151918101919091206000888152600190925291902080541515806105325750600181015415155b156105495761054981600001548260010154610b46565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018390526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee9190610dbd565b6001600160a01b0316146106445760405162461bcd60e51b815260206004820152601660248201527f7375626e6f646520616c726561647920696e2075736500000000000000000000604482015260640161026f565b858155600181018590556040516305ef2c7f60e41b815260048101879052602481018690526001600160a01b0385811660448301527f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156106ee57600080fd5b505af1158015610702573d6000803e3d6000fd5b5050505050505050505050565b610717610a3e565b6103fb6000610be0565b610729610a3e565b6107316109e4565b6103fb610c48565b610741610a3e565b610749610a98565b6040518181527f993b4ca774598049875309a7e031d205e7eaccece6e988f5bf31e2193a833ae99060200160405180910390a17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166342842e0e306107be6000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b15801561082557600080fd5b505af1158015610839573d6000803e3d6000fd5b5050505050565b610848610a3e565b6001600160a01b0381166108c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026f565b6108cd81610be0565b50565b6040516331a9108f60e11b815260048101829052819033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190610dbd565b6001600160a01b0316146109b35760405162461bcd60e51b815260206004820152601060248201527f6e6f7420746f6b656e20686f6c64657200000000000000000000000000000000604482015260640161026f565b6109bb6109e4565b60008281526001602081905260408220828155908101829055906109df9080610b46565b505050565b600054600160a01b900460ff16156103fb5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161026f565b6000546001600160a01b031633146103fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026f565b600054600160a01b900460ff166103fb5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161026f565b610af9610a98565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040516305ef2c7f60e41b815260048101839052602481018290526000604482018190526064820181905260848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ef2c7f09060a401600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c506109e4565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b293390565b6001600160a01b03811681146108cd57600080fd5b600080600080600060808688031215610cb857600080fd5b8535610cc381610c8b565b94506020860135610cd381610c8b565b935060408601359250606086013567ffffffffffffffff80821115610cf757600080fd5b818801915088601f830112610d0b57600080fd5b813581811115610d1a57600080fd5b896020828501011115610d2c57600080fd5b9699959850939650602001949392505050565b600060208284031215610d5157600080fd5b5035919050565b60008060008060808587031215610d6e57600080fd5b8435935060208501359250604085013591506060850135610d8e81610c8b565b939692955090935050565b600060208284031215610dab57600080fd5b8135610db681610c8b565b9392505050565b600060208284031215610dcf57600080fd5b8151610db681610c8b56fea2646970667358221220ca7d62322c0a13abd3cadccb398d34bdc80353ec3383d79c050bbba76f81294264736f6c634300080f00330000000000000000000000008184a482a5038b124d933b779e0ea6e0fb72f54e00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea850000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063715018a6116100815780638da5cb5b1161005b5780638da5cb5b146101b0578063f2fde38b146101cb578063fee425f8146101de57600080fd5b8063715018a61461018d5780638456cb591461019557806385c97aa11461019d57600080fd5b8063557e1391116100b2578063557e1391146101215780635c975abb1461015d5780636becaa401461017a57600080fd5b8063150b7a02146100ce5780633f4ba83a14610117575b600080fd5b6100e16100dc366004610ca0565b6101f1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61011f6103e3565b005b61014861012f366004610d3f565b6001602081905260009182526040909120805491015482565b6040805192835260208301919091520161010e565b600054600160a01b900460ff16604051901515815260200161010e565b61011f610188366004610d58565b6103fd565b61011f61070f565b61011f610721565b61011f6101ab366004610d3f565b610739565b6000546040516001600160a01b03909116815260200161010e565b61011f6101d9366004610d99565b610840565b61011f6101ec366004610d3f565b6108d0565b60006101fb6109e4565b336001600160a01b037f00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea8516146102785760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206120646f6d61696e000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000546001600160a01b0316156102e6576000546001600160a01b038681169116146102e65760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c79206f776e6572206d61792061646420646f6d61696e73000000000000604482015260640161026f565b6040517f28ed4f6c000000000000000000000000000000000000000000000000000000008152600481018590523060248201527f00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea856001600160a01b0316906328ed4f6c90604401600060405180830381600087803b15801561036757600080fd5b505af115801561037b573d6000803e3d6000fd5b505050507f654196dca222d5e94bf44785bb8c73bb3e1cf4d58ae1764f45f52675bbd01232846040516103b091815260200190565b60405180910390a1507f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6103eb610a3e565b6103f3610a98565b6103fb610af1565b565b6040516331a9108f60e11b815260048101859052849033906001600160a01b037f0000000000000000000000008184a482a5038b124d933b779e0ea6e0fb72f54e1690636352211e90602401602060405180830381865afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a9190610dbd565b6001600160a01b0316146104e05760405162461bcd60e51b815260206004820152601060248201527f6e6f7420746f6b656e20686f6c64657200000000000000000000000000000000604482015260640161026f565b6104e86109e4565b604080516020808201879052818301869052825180830384018152606090920183528151918101919091206000888152600190925291902080541515806105325750600181015415155b156105495761054981600001548260010154610b46565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018390526000906001600160a01b037f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e16906302571be390602401602060405180830381865afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee9190610dbd565b6001600160a01b0316146106445760405162461bcd60e51b815260206004820152601660248201527f7375626e6f646520616c726561647920696e2075736500000000000000000000604482015260640161026f565b858155600181018590556040516305ef2c7f60e41b815260048101879052602481018690526001600160a01b0385811660448301527f0000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba4181166064830152600060848301527f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e1690635ef2c7f09060a401600060405180830381600087803b1580156106ee57600080fd5b505af1158015610702573d6000803e3d6000fd5b5050505050505050505050565b610717610a3e565b6103fb6000610be0565b610729610a3e565b6107316109e4565b6103fb610c48565b610741610a3e565b610749610a98565b6040518181527f993b4ca774598049875309a7e031d205e7eaccece6e988f5bf31e2193a833ae99060200160405180910390a17f00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea856001600160a01b03166342842e0e306107be6000546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b15801561082557600080fd5b505af1158015610839573d6000803e3d6000fd5b5050505050565b610848610a3e565b6001600160a01b0381166108c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026f565b6108cd81610be0565b50565b6040516331a9108f60e11b815260048101829052819033906001600160a01b037f0000000000000000000000008184a482a5038b124d933b779e0ea6e0fb72f54e1690636352211e90602401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190610dbd565b6001600160a01b0316146109b35760405162461bcd60e51b815260206004820152601060248201527f6e6f7420746f6b656e20686f6c64657200000000000000000000000000000000604482015260640161026f565b6109bb6109e4565b60008281526001602081905260408220828155908101829055906109df9080610b46565b505050565b600054600160a01b900460ff16156103fb5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161026f565b6000546001600160a01b031633146103fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026f565b600054600160a01b900460ff166103fb5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161026f565b610af9610a98565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040516305ef2c7f60e41b815260048101839052602481018290526000604482018190526064820181905260848201527f00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e6001600160a01b031690635ef2c7f09060a401600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c506109e4565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610b293390565b6001600160a01b03811681146108cd57600080fd5b600080600080600060808688031215610cb857600080fd5b8535610cc381610c8b565b94506020860135610cd381610c8b565b935060408601359250606086013567ffffffffffffffff80821115610cf757600080fd5b818801915088601f830112610d0b57600080fd5b813581811115610d1a57600080fd5b896020828501011115610d2c57600080fd5b9699959850939650602001949392505050565b600060208284031215610d5157600080fd5b5035919050565b60008060008060808587031215610d6e57600080fd5b8435935060208501359250604085013591506060850135610d8e81610c8b565b939692955090935050565b600060208284031215610dab57600080fd5b8135610db681610c8b565b9392505050565b600060208284031215610dcf57600080fd5b8151610db681610c8b56fea2646970667358221220ca7d62322c0a13abd3cadccb398d34bdc80353ec3383d79c050bbba76f81294264736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008184a482a5038b124d933b779e0ea6e0fb72f54e00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea850000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41
-----Decoded View---------------
Arg [0] : _wanderers (address): 0x8184a482A5038B124d933B779E0Ea6e0fb72F54E
Arg [1] : _registry (address): 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Arg [2] : _registrar (address): 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
Arg [3] : _resolver (address): 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000008184a482a5038b124d933b779e0ea6e0fb72f54e
Arg [1] : 00000000000000000000000000000000000c2e074ec69a0dfb2997ba6c7d2e1e
Arg [2] : 00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea85
Arg [3] : 0000000000000000000000004976fb03c32e5b8cfe2b6ccb31c09ba78ebaba41
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.