Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 7 from a total of 7 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Enable | 15150766 | 1354 days ago | IN | 0 ETH | 0.0009767 | ||||
| Enable | 15118872 | 1359 days ago | IN | 0 ETH | 0.00408713 | ||||
| Enable | 15118498 | 1359 days ago | IN | 0 ETH | 0.00118174 | ||||
| Enable | 15112627 | 1360 days ago | IN | 0 ETH | 0.00147259 | ||||
| Transfer Ownersh... | 15112586 | 1360 days ago | IN | 0 ETH | 0.00033636 | ||||
| Enable | 15112572 | 1360 days ago | IN | 0 ETH | 0.00114448 | ||||
| Enable | 15112565 | 1360 days ago | IN | 0 ETH | 0.00108174 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ENSNFT
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.15;
import {Ownable} from "@openzeppelin/contracts@4.6.0/access/Ownable.sol";
import {IERC165} from "@openzeppelin/contracts@4.6.0/utils/introspection/IERC165.sol";
import {IERC721} from "@openzeppelin/contracts@4.6.0/token/ERC721/IERC721.sol";
import {ENS} from "@ensdomains/ens-contracts/contracts/registry/ENS.sol";
import {IAddrResolver} from "@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddrResolver.sol";
import {IAddressResolver} from "@ensdomains/ens-contracts/contracts/resolvers/profiles/IAddressResolver.sol";
contract ENSNFT is Ownable, IAddrResolver, IAddressResolver {
function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
return interfaceId == type(IERC165).interfaceId
|| interfaceId == type(IAddrResolver).interfaceId
|| interfaceId == type(IAddressResolver).interfaceId;
}
error AlreadyEnabled();
ENS constant _ens = ENS(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e);
IERC721 public _nft;
string public _name;
bytes32 public _node;
mapping (bytes32 => uint256) _nodes;
constructor(string memory name, address nft) {
_name = name;
_node = _namehash(name);
_nft = IERC721(nft);
}
function destroy() public onlyOwner {
selfdestruct(payable(msg.sender));
}
function isENSApproved() public view returns (bool) {
return _ens.isApprovedForAll(_ens.owner(_node), address(this));
}
// note: it's impossible to enable token = 0xFF...FF = ~0
function isEnabled(uint256 token) public view returns (bool) {
return _isSubnodeSetup(_namehash(nameFromToken(token)));
}
function enable(uint256 token) public {
if (!_setupSubnodeForToken(token)) revert AlreadyEnabled();
}
function batchEnable(uint256[] calldata tokens) public {
unchecked {
uint256 any;
for (uint256 i; i < tokens.length; i++) {
if (_setupSubnodeForToken(tokens[i])) {
any = 1;
}
}
if (any == 0) revert AlreadyEnabled();
}
}
// subnodes
function _isSubnodeSetup(bytes32 node) private view returns (bool) {
return _nodes[node] != 0
&& _ens.owner(node) == address(this)
&& _ens.resolver(node) == address(this);
}
function _setupSubnodeForToken(uint256 token) private returns (bool) {
string memory name = nameFromToken(token);
bytes32 node = _namehash(name);
if (_isSubnodeSetup(node)) return false;
uint256 len = _lengthBase10(token);
assembly {
mstore(name, len) // truncate
}
_ens.setSubnodeRecord(_node, _labelhash(name, 0, len), address(this), address(this), 0);
_nodes[node] = ~token;
return true;
}
function _lengthBase10(uint256 token) private pure returns (uint256 len) {
unchecked {
len = 1;
while (token >= 10) {
token /= 10;
len++;
}
}
}
function nameFromToken(uint256 token) public view returns (string memory) {
unchecked {
bytes memory name = bytes(_name);
uint256 len = _lengthBase10(token) + 1; // "123" + "."
bytes memory buf = new bytes(len + name.length);
assembly {
for {
let src := name
let end := add(src, mload(src))
let dst := add(buf, len)
} lt(src, end) {} {
src := add(src, 32)
dst := add(dst, 32)
mstore(dst, mload(src))
}
mstore(buf, add(len, mload(name)))
}
buf[--len] = '.';
while (len > 0) {
buf[--len] = bytes1(uint8(48 + (token % 10)));
token /= 10;
}
return string(buf);
}
}
function nodeFromToken(uint256 token) public view returns (bytes32) {
return _namehash(nameFromToken(token));
}
// ens resolver
function addr(bytes32 node) public view returns (address payable ret) {
uint256 token = _nodes[node];
if (token != 0) {
return payable(_nft.ownerOf(~token));
}
}
function addr(bytes32 node, uint256 coinType) public view returns(bytes memory ret) {
if (coinType == 60) { // ETH
return abi.encodePacked(addr(node));
}
}
// ens helpers
function _namehash(string memory domain) private pure returns (bytes32 node) {
unchecked {
uint256 i = bytes(domain).length;
uint256 e = i;
node = bytes32(0);
while (i > 0) {
if (bytes(domain)[--i] == '.') {
node = keccak256(abi.encodePacked(node, _labelhash(domain, i + 1, e)));
e = i;
}
}
node = keccak256(abi.encodePacked(node, _labelhash(domain, i, e)));
}
}
function _labelhash(string memory domain, uint start, uint end) private pure returns (bytes32 hash) {
assembly ("memory-safe") {
hash := keccak256(add(add(domain, 0x20), start), sub(end, start))
}
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
/**
* Interface for the new (multicoin) addr function.
*/
interface IAddressResolver {
event AddressChanged(bytes32 indexed node, uint coinType, bytes newAddress);
function addr(bytes32 node, uint coinType) external view returns(bytes memory);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
/**
* Interface for the legacy (ETH-only) addr function.
*/
interface IAddrResolver {
event AddrChanged(bytes32 indexed node, address a);
/**
* Returns the address associated with an ENS node.
* @param node The ENS node to query.
* @return The associated address.
*/
function addr(bytes32 node) external view returns (address payable);
}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
// OpenZeppelin Contracts (last updated v4.6.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 be 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 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 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// 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;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"nft","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyEnabled","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"coinType","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"newAddress","type":"bytes"}],"name":"AddressChanged","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"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nft","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address payable","name":"ret","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"}],"name":"addr","outputs":[{"internalType":"bytes","name":"ret","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"batchEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"token","type":"uint256"}],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isENSApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"token","type":"uint256"}],"name":"isEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"token","type":"uint256"}],"name":"nameFromToken","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"token","type":"uint256"}],"name":"nodeFromToken","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200125c3803806200125c8339810160408190526200003491620001e3565b6200003f3362000083565b60026200004d838262000363565b506200005982620000d3565b600355600180546001600160a01b0319166001600160a01b03929092169190911790555062000445565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051600090805b8115620001735783826001900392508281518110620000fd57620000fd6200042f565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016601760f91b036200016d57600019828203016021838601012083906040805160208101939093528201526060016040516020818303038152906040528051906020012092508190505b620000da565b8181036020838601012083906040805160208101939093528201526060016040516020818303038152906040528051906020012092505050919050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620001de57600080fd5b919050565b60008060408385031215620001f757600080fd5b82516001600160401b03808211156200020f57600080fd5b818501915085601f8301126200022457600080fd5b815181811115620002395762000239620001b0565b604051601f8201601f19908116603f01168101908382118183101715620002645762000264620001b0565b816040528281526020935088848487010111156200028157600080fd5b600091505b82821015620002a5578482018401518183018501529083019062000286565b82821115620002b75760008484830101525b9550620002c9915050858201620001c6565b925050509250929050565b600181811c90821680620002e957607f821691505b6020821081036200030a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035e57600081815260208120601f850160051c81016020861015620003395750805b601f850160051c820191505b818110156200035a5782815560010162000345565b5050505b505050565b81516001600160401b038111156200037f576200037f620001b0565b6200039781620003908454620002d4565b8462000310565b602080601f831160018114620003cf5760008415620003b65750858301515b600019600386901b1c1916600185901b1785556200035a565b600085815260208120601f198616915b828110156200040057888601518255948401946001909101908401620003df565b50858210156200041f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b610e0780620004556000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c783034c11610066578063c783034c14610206578063d28d885214610219578063f1cb7e0614610221578063f2fde38b1461023457600080fd5b80638da5cb5b146101af5780638df3e64d146101c057806398300e18146101e0578063bb655694146101f357600080fd5b80636e1bd246116100d35780636e1bd24614610177578063715018a61461018a57806383197ef01461019457806387dc7c371461019c57600080fd5b806301ffc9a7146101055780630ae3c6401461012d57806314df3c26146101355780633b3b57de1461014c575b600080fd5b610118610113366004610b91565b610247565b60405190151581526020015b60405180910390f35b610118610299565b61013e60035481565b604051908152602001610124565b61015f61015a366004610bbb565b61038f565b6040516001600160a01b039091168152602001610124565b61013e610185366004610bbb565b61041e565b610192610431565b005b610192610470565b6101926101aa366004610bbb565b61049d565b6000546001600160a01b031661015f565b6101d36101ce366004610bbb565b6104c6565b6040516101249190610c21565b60015461015f906001600160a01b031681565b610192610201366004610c34565b610668565b610118610214366004610bbb565b6106ce565b6101d36106e4565b6101d361022f366004610ca9565b610772565b610192610242366004610ce0565b6107c4565b60006001600160e01b031982166301ffc9a760e01b148061027857506001600160e01b03198216631d9dabef60e11b145b8061029357506001600160e01b031982166378e5bf0360e11b145b92915050565b6003546040516302571be360e01b81526000916e0c2e074ec69a0dfb2997ba6c7d2e1e9163e985e9c59183916302571be3916102db9160040190815260200190565b602060405180830381865afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190610cfd565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038a9190610d1a565b905090565b6000818152600460205260408120548015610418576001546040516331a9108f60e11b8152821960048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156103ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104119190610cfd565b9392505050565b50919050565b600061029361042c836104c6565b61085c565b6000546001600160a01b031633146104645760405162461bcd60e51b815260040161045b90610d3c565b60405180910390fd5b61046e600061091b565b565b6000546001600160a01b0316331461049a5760405162461bcd60e51b815260040161045b90610d3c565b33ff5b6104a68161096b565b6104c357604051637952fbad60e11b815260040160405180910390fd5b50565b60606000600280546104d790610d71565b80601f016020809104026020016040519081016040528092919081815260200182805461050390610d71565b80156105505780601f1061052557610100808354040283529160200191610550565b820191906000526020600020905b81548152906001019060200180831161053357829003601f168201915b50505050509050600061056284610a57565b600101905060008251820167ffffffffffffffff81111561058557610585610da5565b6040519080825280601f01601f1916602001820160405280156105af576020820181803683370190505b50905082805181018383015b818310156105d65760209283018051919093019081526105bb565b505050825182018152601760f91b818360019003935083815181106105fd576105fd610dbb565b60200101906001600160f81b031916908160001a9053505b811561066057600a850660300160f81b8183600190039350838151811061063e5761063e610dbb565b60200101906001600160f81b031916908160001a905350600a85049450610615565b949350505050565b6000805b828110156106a75761069584848381811061068957610689610dbb565b9050602002013561096b565b1561069f57600191505b60010161066c565b50806000036106c957604051637952fbad60e11b815260040160405180910390fd5b505050565b60006102936106df61042c846104c6565b610a75565b600280546106f190610d71565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90610d71565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b505050505081565b606081603c03610293576107858361038f565b6040516020016107ad919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052905092915050565b6000546001600160a01b031633146107ee5760405162461bcd60e51b815260040161045b90610d3c565b6001600160a01b0381166108535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045b565b6104c38161091b565b8051600090805b81156108de578382600190039250828151811061088257610882610dbb565b01602001516001600160f81b031916601760f91b036108d957600019828203016021838601012083906040805160208101939093528201526060016040516020818303038152906040528051906020012092508190505b610863565b8181036020838601012083906040805160208101939093528201526060016040516020818303038152906040528051906020012092505050919050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080610977836104c6565b905060006109848261085c565b905061098f81610a75565b1561099e575060009392505050565b60006109a985610a57565b808452600354602085018290209192506e0c2e074ec69a0dfb2997ba6c7d2e1e91635ef2c7f091906040516001600160e01b031960e085901b16815260048101929092526024820152306044820181905260648201526000608482015260a401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050600092835250506004602052604090209219909255506001919050565b60015b600a8210610a7057600a82049150600101610a5a565b919050565b60008181526004602052604081205415801590610b0957506040516302571be360e01b81526004810183905230906e0c2e074ec69a0dfb2997ba6c7d2e1e906302571be390602401602060405180830381865afa158015610ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afe9190610cfd565b6001600160a01b0316145b80156102935750604051630178b8bf60e01b81526004810183905230906e0c2e074ec69a0dfb2997ba6c7d2e1e90630178b8bf90602401602060405180830381865afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b819190610cfd565b6001600160a01b03161492915050565b600060208284031215610ba357600080fd5b81356001600160e01b03198116811461041157600080fd5b600060208284031215610bcd57600080fd5b5035919050565b6000815180845260005b81811015610bfa57602081850181015186830182015201610bde565b81811115610c0c576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006104116020830184610bd4565b60008060208385031215610c4757600080fd5b823567ffffffffffffffff80821115610c5f57600080fd5b818501915085601f830112610c7357600080fd5b813581811115610c8257600080fd5b8660208260051b8501011115610c9757600080fd5b60209290920196919550909350505050565b60008060408385031215610cbc57600080fd5b50508035926020909101359150565b6001600160a01b03811681146104c357600080fd5b600060208284031215610cf257600080fd5b813561041181610ccb565b600060208284031215610d0f57600080fd5b815161041181610ccb565b600060208284031215610d2c57600080fd5b8151801515811461041157600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680610d8557607f821691505b60208210810361041857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212205148df83dd241056fa52ee554379e2f15d62ad9d87c32867c3acb8c39c468e8664736f6c634300080f00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e68d1aeee2c17e43a955103dab5e341ee439f55c000000000000000000000000000000000000000000000000000000000000000a63686f6e6b732e65746800000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c783034c11610066578063c783034c14610206578063d28d885214610219578063f1cb7e0614610221578063f2fde38b1461023457600080fd5b80638da5cb5b146101af5780638df3e64d146101c057806398300e18146101e0578063bb655694146101f357600080fd5b80636e1bd246116100d35780636e1bd24614610177578063715018a61461018a57806383197ef01461019457806387dc7c371461019c57600080fd5b806301ffc9a7146101055780630ae3c6401461012d57806314df3c26146101355780633b3b57de1461014c575b600080fd5b610118610113366004610b91565b610247565b60405190151581526020015b60405180910390f35b610118610299565b61013e60035481565b604051908152602001610124565b61015f61015a366004610bbb565b61038f565b6040516001600160a01b039091168152602001610124565b61013e610185366004610bbb565b61041e565b610192610431565b005b610192610470565b6101926101aa366004610bbb565b61049d565b6000546001600160a01b031661015f565b6101d36101ce366004610bbb565b6104c6565b6040516101249190610c21565b60015461015f906001600160a01b031681565b610192610201366004610c34565b610668565b610118610214366004610bbb565b6106ce565b6101d36106e4565b6101d361022f366004610ca9565b610772565b610192610242366004610ce0565b6107c4565b60006001600160e01b031982166301ffc9a760e01b148061027857506001600160e01b03198216631d9dabef60e11b145b8061029357506001600160e01b031982166378e5bf0360e11b145b92915050565b6003546040516302571be360e01b81526000916e0c2e074ec69a0dfb2997ba6c7d2e1e9163e985e9c59183916302571be3916102db9160040190815260200190565b602060405180830381865afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190610cfd565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038a9190610d1a565b905090565b6000818152600460205260408120548015610418576001546040516331a9108f60e11b8152821960048201526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156103ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104119190610cfd565b9392505050565b50919050565b600061029361042c836104c6565b61085c565b6000546001600160a01b031633146104645760405162461bcd60e51b815260040161045b90610d3c565b60405180910390fd5b61046e600061091b565b565b6000546001600160a01b0316331461049a5760405162461bcd60e51b815260040161045b90610d3c565b33ff5b6104a68161096b565b6104c357604051637952fbad60e11b815260040160405180910390fd5b50565b60606000600280546104d790610d71565b80601f016020809104026020016040519081016040528092919081815260200182805461050390610d71565b80156105505780601f1061052557610100808354040283529160200191610550565b820191906000526020600020905b81548152906001019060200180831161053357829003601f168201915b50505050509050600061056284610a57565b600101905060008251820167ffffffffffffffff81111561058557610585610da5565b6040519080825280601f01601f1916602001820160405280156105af576020820181803683370190505b50905082805181018383015b818310156105d65760209283018051919093019081526105bb565b505050825182018152601760f91b818360019003935083815181106105fd576105fd610dbb565b60200101906001600160f81b031916908160001a9053505b811561066057600a850660300160f81b8183600190039350838151811061063e5761063e610dbb565b60200101906001600160f81b031916908160001a905350600a85049450610615565b949350505050565b6000805b828110156106a75761069584848381811061068957610689610dbb565b9050602002013561096b565b1561069f57600191505b60010161066c565b50806000036106c957604051637952fbad60e11b815260040160405180910390fd5b505050565b60006102936106df61042c846104c6565b610a75565b600280546106f190610d71565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90610d71565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b505050505081565b606081603c03610293576107858361038f565b6040516020016107ad919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052905092915050565b6000546001600160a01b031633146107ee5760405162461bcd60e51b815260040161045b90610d3c565b6001600160a01b0381166108535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161045b565b6104c38161091b565b8051600090805b81156108de578382600190039250828151811061088257610882610dbb565b01602001516001600160f81b031916601760f91b036108d957600019828203016021838601012083906040805160208101939093528201526060016040516020818303038152906040528051906020012092508190505b610863565b8181036020838601012083906040805160208101939093528201526060016040516020818303038152906040528051906020012092505050919050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080610977836104c6565b905060006109848261085c565b905061098f81610a75565b1561099e575060009392505050565b60006109a985610a57565b808452600354602085018290209192506e0c2e074ec69a0dfb2997ba6c7d2e1e91635ef2c7f091906040516001600160e01b031960e085901b16815260048101929092526024820152306044820181905260648201526000608482015260a401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050600092835250506004602052604090209219909255506001919050565b60015b600a8210610a7057600a82049150600101610a5a565b919050565b60008181526004602052604081205415801590610b0957506040516302571be360e01b81526004810183905230906e0c2e074ec69a0dfb2997ba6c7d2e1e906302571be390602401602060405180830381865afa158015610ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afe9190610cfd565b6001600160a01b0316145b80156102935750604051630178b8bf60e01b81526004810183905230906e0c2e074ec69a0dfb2997ba6c7d2e1e90630178b8bf90602401602060405180830381865afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b819190610cfd565b6001600160a01b03161492915050565b600060208284031215610ba357600080fd5b81356001600160e01b03198116811461041157600080fd5b600060208284031215610bcd57600080fd5b5035919050565b6000815180845260005b81811015610bfa57602081850181015186830182015201610bde565b81811115610c0c576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006104116020830184610bd4565b60008060208385031215610c4757600080fd5b823567ffffffffffffffff80821115610c5f57600080fd5b818501915085601f830112610c7357600080fd5b813581811115610c8257600080fd5b8660208260051b8501011115610c9757600080fd5b60209290920196919550909350505050565b60008060408385031215610cbc57600080fd5b50508035926020909101359150565b6001600160a01b03811681146104c357600080fd5b600060208284031215610cf257600080fd5b813561041181610ccb565b600060208284031215610d0f57600080fd5b815161041181610ccb565b600060208284031215610d2c57600080fd5b8151801515811461041157600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680610d8557607f821691505b60208210810361041857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212205148df83dd241056fa52ee554379e2f15d62ad9d87c32867c3acb8c39c468e8664736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e68d1aeee2c17e43a955103dab5e341ee439f55c000000000000000000000000000000000000000000000000000000000000000a63686f6e6b732e65746800000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): chonks.eth
Arg [1] : nft (address): 0xE68d1aEeE2C17E43A955103DaB5E341eE439f55c
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 000000000000000000000000e68d1aeee2c17e43a955103dab5e341ee439f55c
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 63686f6e6b732e65746800000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
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.