Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 882 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Approval For... | 24222913 | 45 days ago | IN | 0 ETH | 0.00000109 | ||||
| Set Approval For... | 24221043 | 45 days ago | IN | 0 ETH | 0.00000105 | ||||
| Set Approval For... | 24122451 | 59 days ago | IN | 0 ETH | 0.00000459 | ||||
| Set Approval For... | 23658448 | 124 days ago | IN | 0 ETH | 0.00001627 | ||||
| Set Approval For... | 23161226 | 193 days ago | IN | 0 ETH | 0.00000849 | ||||
| Set Approval For... | 22879427 | 233 days ago | IN | 0 ETH | 0.00005461 | ||||
| Set Approval For... | 22671393 | 262 days ago | IN | 0 ETH | 0.00003808 | ||||
| Set Approval For... | 22572032 | 276 days ago | IN | 0 ETH | 0.0000223 | ||||
| Set Approval For... | 22571994 | 276 days ago | IN | 0 ETH | 0.0000225 | ||||
| Set Approval For... | 22556610 | 278 days ago | IN | 0 ETH | 0.00002203 | ||||
| Set Approval For... | 22554721 | 278 days ago | IN | 0 ETH | 0.0000213 | ||||
| Set Approval For... | 22534833 | 281 days ago | IN | 0 ETH | 0.00005323 | ||||
| Set Approval For... | 22534832 | 281 days ago | IN | 0 ETH | 0.00009172 | ||||
| Set Approval For... | 22493471 | 287 days ago | IN | 0 ETH | 0.00003237 | ||||
| Set Approval For... | 22484607 | 288 days ago | IN | 0 ETH | 0.00002973 | ||||
| Set Approval For... | 22449125 | 293 days ago | IN | 0 ETH | 0.00003635 | ||||
| Set Approval For... | 22337632 | 309 days ago | IN | 0 ETH | 0.00002824 | ||||
| Set Approval For... | 21784958 | 386 days ago | IN | 0 ETH | 0.0000506 | ||||
| Set Approval For... | 21784778 | 386 days ago | IN | 0 ETH | 0.00004685 | ||||
| Set Approval For... | 21749880 | 391 days ago | IN | 0 ETH | 0.00008928 | ||||
| Set Approval For... | 21722480 | 395 days ago | IN | 0 ETH | 0.00009084 | ||||
| Set Approval For... | 21722477 | 395 days ago | IN | 0 ETH | 0.00015571 | ||||
| Set Approval For... | 21517066 | 423 days ago | IN | 0 ETH | 0.00055764 | ||||
| Set Approval For... | 21330209 | 449 days ago | IN | 0 ETH | 0.00231881 | ||||
| Set Approval For... | 21330209 | 449 days ago | IN | 0 ETH | 0.00232305 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.7
Contract Source Code (Vyper language format)
# @version 0.3.7
# @notice NPC-ers NFT
# @dev Implementation of ERC-721 non-fungible token standard.
# @author npcers.eth
# @license MIT
# Modified from: https://github.com/vyperlang/vyper/blob/de74722bf2d8718cca46902be165f9fe0e3641dd/examples/tokens/ERC721.vy
"""
:=+******++=-:
-+*+======------=+++=:
#+========------------=++=.
#+=======------------------++:
*+=======--------------------:++
=*=======------------------------*.
.%========-------------------------*.
%+=======-------------------------:-#
+*========--------------------------:#
%=========--------------------------:#.
%=========--------------------+**=--:++
#+========-----=*#%#=--------#@@@@+-::*:
:%========-----+@@@@%=-------=@@@@#-::+=
-#======-------+@@@%=----=*=--+**=-::#:
:#+====---------==----===@%=------::%
#+===-------------======@%=------:=+
.%===------------=======+@%------::#
#+==-----------=========+@%-------+
%===------------*%%%%%%%%@@#-----#.
%====-----------============----#:
*+==#+----------+##%%%%%%%%@--=*.
-#==+%=---------=+=========--*=
+===+%+--------------------*-
=====*#=------------------#
.======*#*=------------=*+.
-======+*#*+--------*+
.-========+***+++=-.
.-=======:
"""
from vyper.interfaces import ERC20
from vyper.interfaces import ERC165
from vyper.interfaces import ERC721
implements: ERC721
implements: ERC165
# Interface for the contract called by safeTransferFrom()
interface ERC721Receiver:
def onERC721Received(
operator: address,
sender: address,
tokenId: uint256,
data: Bytes[1024]
) -> bytes4: nonpayable
# @dev Emits when ownership of any NFT changes by any mechanism.
# This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0).
# Exception: during contract creation, any number of NFTs may be created and assigned without emitting.
# At the time of any transfer, the approved address for that NFT (if any) is reset to none.
# @param _from Sender of NFT (if address is zero address it indicates token creation).
# @param _to Receiver of NFT (if address is zero address it indicates token destruction).
# @param _tokenId The NFT that got transfered.
event Transfer:
_from: indexed(address)
_to: indexed(address)
_tokenId: indexed(uint256)
# @dev This emits when the approved address for an NFT is changed or reaffirmed.
# The zero address indicates there is no approved address.
# When a Transfer event emits, this also indicates any approved address resets to none.
# @param _owner Owner of NFT.
# @param _approved Address that we are approving.
# @param _tokenId NFT which we are approving.
event Approval:
_owner: indexed(address)
_approved: indexed(address)
_tokenId: indexed(uint256)
# @dev This emits when an operator is enabled or disabled for an owner.
# The operator can manage all NFTs of the owner.
# @param _owner Owner of NFT.
# @param _operator Address to which we are setting operator rights.
# @param _approved Status of operator rights (true if operator rights given, false if revoked).
event ApprovalForAll:
_owner: indexed(address)
_operator: indexed(address)
_approved: bool
IDENTITY_PRECOMPILE: constant(address) = 0x0000000000000000000000000000000000000004
# Metadata
symbol: public(String[32])
name: public(String[32])
# Permission
owner: public(address)
minter: public(address)
# URI
base_uri: public(String[128])
contract_uri: String[128]
# NFT Data
token_by_owner: HashMap[address, HashMap[uint256, uint256]]
token_count: uint256
owned_tokens: HashMap[uint256, address] # @dev NFT ID to the address that owns it
token_approvals: HashMap[uint256, address] # @dev NFT ID to approved address
operator_approvals: HashMap[address, HashMap[address, bool]] # @dev Owner address to mapping of operator addresses
balances: HashMap[address, uint256] # @dev Owner address to token count
# @dev Static list of supported ERC165 interface ids
SUPPORTED_INTERFACES: constant(bytes4[5]) = [
0x01FFC9A7, # ERC165
0x80AC58CD, # ERC721
0x150B7A02, # ERC721TokenReceiver
0x780E9D63, # ERC721Enumerable
0x5B5E139F, # ERC721Metadata
]
# Custom NPC
revealed: public(bool)
default_uri: public(String[150])
@external
def __init__():
self.symbol = "NPC"
self.name = "NPC-ers"
self.owner = msg.sender
self.minter = msg.sender
self.base_uri = "ipfs://bafybeibzrvcnrfzy6q5t5tkzmzktdqwlbvywtgzxybdkycubquh3e5rl2u/"
self.contract_uri = "ipfs://QmTPTu31EEFawxbXEiAaZehLajRAKc7YhxPkTSg31SNVSe"
self.default_uri = "ipfs://QmPQZadNVNeJ729toJ3ZTjSvC2xhgsQDJuwfSJRN43T2eu"
self.revealed = True
@pure
@external
def supportsInterface(interface_id: bytes4) -> bool:
"""
@notice Query if a contract implements an interface.
@dev Interface identification is specified in ERC-165.
@param interface_id Bytes4 representing the interface.
@return bool True if supported.
"""
return interface_id in SUPPORTED_INTERFACES
### VIEW FUNCTIONS ###
@view
@external
def balanceOf(owner: address) -> uint256:
"""
@notice Count all NFTs assigned to an owner.
@dev Returns the number of NFTs owned by `owner`.
Throws if `owner` is the zero address.
NFTs assigned to the zero address are considered invalid.
@param owner Address for whom to query the balance.
@return The address of the owner of the NFT
"""
assert owner != empty(address) # dev: "ERC721: balance query for the zero address"
return self.balances[owner]
@view
@external
def ownerOf(token_id: uint256) -> address:
"""
@notice Find the owner of an NFT.
@dev Returns the address of the owner of the NFT.
Throws if `token_id` is not a valid NFT.
@param token_id The identifier for an NFT.
@return The address of the owner of the NFT
"""
owner: address = self.owned_tokens[token_id]
assert owner != empty(address) # dev: "ERC721: owner query for nonexistent token"
return owner
@view
@external
def getApproved(token_id: uint256) -> address:
"""
@notice Get the approved address for a single NFT
@dev Get the approved address for a single NFT.
Throws if `token_id` is not a valid NFT.
@param token_id ID of the NFT for which to query approval.
@return The approved address for this NFT, or the zero address if there is none
"""
assert self.owned_tokens[token_id] != empty(
address
) # dev: "ERC721: approved query for nonexistent token"
return self.token_approvals[token_id]
@view
@external
def isApprovedForAll(owner: address, operator: address) -> bool:
"""
@notice Query if an address is an authorized operator for another address
@dev Checks if `operator` is an approved operator for `owner`.
@param owner The address that owns the NFTs.
@param operator The address that acts on behalf of the owner.
@return True if `_operator` is an approved operator for `_owner`, false otherwise
"""
return (self.operator_approvals[owner])[operator]
### TRANSFER FUNCTION HELPERS ###
@view
@internal
def _is_approved_or_owner(spender: address, token_id: uint256) -> bool:
"""
@dev Returns whether the given spender can transfer a given token ID
@param spender address of the spender to query
@param token_id uint256 ID of the token to be transferred
@return bool whether the msg.sender is approved for the given token ID,
is an operator of the owner, or is the owner of the token
"""
owner: address = self.owned_tokens[token_id]
spender_is_owner: bool = owner == spender
spender_is_approved: bool = spender == self.token_approvals[token_id]
spender_is_approved_for_all: bool = self.operator_approvals[owner][spender]
return (spender_is_owner or spender_is_approved) or spender_is_approved_for_all
@internal
def _add_token_to(_to: address, _token_id: uint256):
"""
@dev Add a NFT to a given address
Throws if `_token_id` is owned by someone.
"""
# Throws if `_token_id` is owned by someone
assert self.owned_tokens[_token_id] == empty(address)
# Change the owner
self.owned_tokens[_token_id] = _to
# Change count tracking
self.token_by_owner[_to][self.balances[_to]] = _token_id
self.balances[_to] += 1
@internal
def _remove_token_from(_from: address, _token_id: uint256):
"""
@dev Remove an NFT from a given address
Throws if `_from` is not the current owner.
"""
# Throws if `_from` is not the current owner
assert self.owned_tokens[_token_id] == _from
# Change the owner
self.owned_tokens[_token_id] = empty(address)
# Change count tracking
self.balances[_from] -= 1
@internal
def _clear_approval(_owner: address, _token_id: uint256):
"""
@dev Clear an approval of a given address
Throws if `_owner` is not the current owner.
"""
# Throws if `_owner` is not the current owner
assert self.owned_tokens[_token_id] == _owner
if self.token_approvals[_token_id] != empty(address):
# Reset approvals
self.token_approvals[_token_id] = empty(address)
@internal
def _transfer_from(_from: address, _to: address, _token_id: uint256, _sender: address):
"""
@dev Execute transfer of a NFT.
Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
address for this NFT. (NOTE: `msg.sender` not allowed in private function so pass `_sender`.)
Throws if `_to` is the zero address.
Throws if `_from` is not the current owner.
Throws if `_token_id` is not a valid NFT.
"""
# Throws if `_to` is the zero address
assert _to != empty(address) # dev : "ERC721: transfer to the zero address"
# Check requirements
assert self._is_approved_or_owner(
_sender, _token_id
) # dev : "ERC721: transfer caller is not owner nor approved"
# Clear approval. Throws if `_from` is not the current owner
self._clear_approval(_from, _token_id)
# Remove NFT. Throws if `_token_id` is not a valid NFT
self._remove_token_from(_from, _token_id)
# Add NFT
self._add_token_to(_to, _token_id)
# Log the transfer
log Transfer(_from, _to, _token_id)
### TRANSFER FUNCTIONS ###
@external
def transferFrom(from_addr: address, to_addr: address, token_id: uint256):
"""
@dev Throws unless `msg.sender` is the current owner, an authorized operato_addrr, or the approved address for this NFT.
Throws if `from_addr` is not the current owner.
Throws if `to_addr` is the zero address.
Throws if `token_id` is not a valid NFT.
@notice The caller is responsible to_addr confirm that `to_addr` is capable of receiving NFTs or else they maybe be permanently lost.
@param from_addr The current owner of the NFT.
@param to_addr The new owner.
@param token_id The NFT to_addr transfer.
"""
self._transfer_from(from_addr, to_addr, token_id, msg.sender)
@external
def safeTransferFrom(
from_addr: address, to_addr: address, token_id: uint256, data: Bytes[1024] = b""
):
"""
@dev Transfers the ownership of an NFT from one address to another address.
Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT.
Throws if `from_addr` is not the current owner.
Throws if `to_addr` is the zero address.
Throws if `token_id` is not a valid NFT.
If `to_addr` is a smart contract, it calls `onERC721Received` on `to_addr` and throws if the return value is not `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
NOTE: bytes4 is represented by bytes32 with padding
@param from_addr The current owner of the NFT.
@param to_addr The new owner.
@param token_id The NFT to transfer.
@param data Additional data with no specified format, sent in call to `to_addr`.
"""
self._transfer_from(from_addr, to_addr, token_id, msg.sender)
if to_addr.is_contract: # check if `to_addr` is a contract address
return_value: bytes4 = ERC721Receiver(to_addr).onERC721Received(
msg.sender, from_addr, token_id, data
)
# Throws if transfer destination is a contract which does not implement 'onERC721Received'
assert return_value == method_id(
"onERC721Received(address,address,uint256,bytes)", output_type=bytes4
)
@external
def approve(approved: address, token_id: uint256):
"""
@notice Change or reaffirm the approved address for an NFT
@dev Set or reaffirm the approved address for an NFT. The zero address indicates there is no approved address.
Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.
Throws if `token_id` is not a valid NFT. (NOTE: This is not written the EIP)
Throws if `approved` is the current owner. (NOTE: This is not written the EIP)
@param approved Address to be approved for the given NFT ID.
@param token_id ID of the token to be approved.
"""
owner: address = self.owned_tokens[token_id]
# Throws if `token_id` is not a valid NFT
assert owner != empty(address) # dev: "ERC721: owner query for nonexistent token"
# Throws if `approved` is the current owner
assert approved != owner # dev: "ERC721: approval to current owner"
# Check requirements
is_owner: bool = self.owned_tokens[token_id] == msg.sender
is_approved_all: bool = (self.operator_approvals[owner])[msg.sender]
assert (
is_owner or is_approved_all
) # dev: "ERC721: approve caller is not owner nor approved for all"
# Set the approval
self.token_approvals[token_id] = approved
log Approval(owner, approved, token_id)
@external
def setApprovalForAll(operator: address, approved: bool):
"""
@notice notice Enable or disable approval for a third party ("operator") to manage all of `msg.sender`'s assets
@dev Enables or disables approval for a third party ("operator") to manage all of`msg.sender`'s assets. It also emits the ApprovalForAll event.
Throws if `operator` is the `msg.sender`. (NOTE: This is not written the EIP)
This works even if sender doesn't own any tokens at the time.
@param operator Address to add to the set of authorized operators.
@param approved True if the operators is approved, false to revoke approval.
"""
# Throws if `operator` is the `msg.sender`
assert operator != msg.sender
self.operator_approvals[msg.sender][operator] = approved
log ApprovalForAll(msg.sender, operator, approved)
### MINT FUNCTIONS ###
@external
def mint(receiver: address):
"""
@notice Function to mint a token
@dev Function to mint tokens
Throws if `msg.sender` is not the minter.
Throws if `_to` is zero address.
"""
# Checks
assert msg.sender in [self.minter, self.owner]
assert receiver != empty(address) # dev: Cannot mint to empty address
# Add NFT. Throws if `_token_id` is owned by someone
token_id: uint256 = self.token_count
self._add_token_to(receiver, token_id)
self.token_count += 1
log Transfer(empty(address), receiver, token_id)
### ERC721-URI STORAGE FUNCTIONS ###
@external
@view
def tokenURI(token_id: uint256) -> String[256]:
"""
@notice A distinct Uniform Resource Identifier (URI) for a given asset.
@dev Throws if `_token_id` is not a valid NFT. URIs are defined in RFC 6686. The URI may point to a JSON file that conforms to the "ERC721 Metadata JSON Schema".
"""
if self.owned_tokens[token_id] == empty(address):
raise # dev: "ERC721URIStorage: URI query for nonexistent token"
if self.revealed:
return concat(self.base_uri, uint2str(token_id))
else:
return self.default_uri
@external
@view
def contractURI() -> String[128]:
"""
@notice URI for contract level metadata
@return Contract URI
"""
return self.contract_uri
### ADMIN FUNCTIONS
@external
def set_base_uri(base_uri: String[128]):
"""
@notice Admin function to set a new Base URI for
@dev Globally prepended to token_uri
@param base_uri New URI for the token
"""
assert msg.sender == self.owner
self.base_uri = base_uri
@external
def set_contract_uri(new_uri: String[66]):
"""
@notice Admin function to set a new contract URI
@param new_uri New URI for the contract
"""
assert msg.sender in [self.owner, self.minter] # dev: Only Admin
self.contract_uri = new_uri
@external
def set_owner(new_addr: address):
"""
@notice Admin function to update owner
@param new_addr The new owner address to take over immediately
"""
assert msg.sender == self.owner # dev: Only Owner
self.owner = new_addr
@external
def set_revealed(flag: bool):
"""
@notice Admin function to reveal collection. If not revealed, all NFTs show default_uri
@param flag Boolean, True to reveal, False to conceal
"""
assert msg.sender in [self.owner, self.minter]
self.revealed = flag
@external
def set_minter(new_address: address):
"""
@notice Admin function to set a new minter address
@dev Update the address authorized to mint
@param new_address New minter address
"""
assert msg.sender in [self.owner, self.minter]
self.minter = new_address
@external
def admin_withdraw_erc20(coin: address, target: address, amount: uint256):
"""
@notice Withdraw ERC20 tokens accidentally sent to contract
@param coin ERC20 address
@param target Address to receive
@param amount Wei
"""
assert self.owner == msg.sender # dev: "Admin Only"
ERC20(coin).transfer(target, amount)
## ERC-721 Enumerable Functions
@external
@view
def totalSupply() -> uint256:
"""
@notice Enumerate valid NFTs
@dev Throws if `_index` >= `totalSupply()`.
@return The token identifier for the `_index`th NFT
"""
return self.token_count
@external
@view
def tokenByIndex(_index: uint256) -> uint256:
"""
@notice Enumerate valid NFTs
@dev With no burn and direct minting, this is simple
@param _index A counter less than `totalSupply()`
@return The token identifier for the `_index`th NFT,
"""
return _index
@external
@view
def tokenOfOwnerByIndex(owner: address, index: uint256) -> uint256:
"""
@notice Enumerate NFTs assigned to an owner
@dev Throws if `index` >= `balanceOf(owner)` or if `owner` is the zero address, representing invalid NFTs.
@param owner An address where we are interested in NFTs owned by them
@param index A counter less than `balanceOf(owner)`
@return The token identifier for the `index`th NFT assigned to `owner`, (sort order not specified)
"""
assert owner != empty(address)
assert index < self.balances[owner]
return self.token_by_owner[owner][index]Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true},{"name":"_to","type":"address","indexed":true},{"name":"_tokenId","type":"uint256","indexed":true}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true},{"name":"_approved","type":"address","indexed":true},{"name":"_tokenId","type":"uint256","indexed":true}],"anonymous":false,"type":"event"},{"name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true},{"name":"_operator","type":"address","indexed":true},{"name":"_approved","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"pure","type":"function","name":"supportsInterface","inputs":[{"name":"interface_id","type":"bytes4"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"ownerOf","inputs":[{"name":"token_id","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"getApproved","inputs":[{"name":"token_id","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address"},{"name":"operator","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"from_addr","type":"address"},{"name":"to_addr","type":"address"},{"name":"token_id","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom","inputs":[{"name":"from_addr","type":"address"},{"name":"to_addr","type":"address"},{"name":"token_id","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom","inputs":[{"name":"from_addr","type":"address"},{"name":"to_addr","type":"address"},{"name":"token_id","type":"uint256"},{"name":"data","type":"bytes"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"approved","type":"address"},{"name":"token_id","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address"},{"name":"approved","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"receiver","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"tokenURI","inputs":[{"name":"token_id","type":"uint256"}],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"contractURI","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"nonpayable","type":"function","name":"set_base_uri","inputs":[{"name":"base_uri","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_contract_uri","inputs":[{"name":"new_uri","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_owner","inputs":[{"name":"new_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_revealed","inputs":[{"name":"flag","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_minter","inputs":[{"name":"new_address","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"admin_withdraw_erc20","inputs":[{"name":"coin","type":"address"},{"name":"target","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"tokenByIndex","inputs":[{"name":"_index","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"owner","type":"address"},{"name":"index","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"minter","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"base_uri","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"revealed","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"default_uri","inputs":[],"outputs":[{"name":"","type":"string"}]}]Contract Creation Code
346112425760036040527f4e50430000000000000000000000000000000000000000000000000000000000606052604080518060005560208201805160015550505060076040527f4e50432d657273000000000000000000000000000000000000000000000000006060526040805180600255602082018051600355505050336004553360055560436040527f697066733a2f2f62616679626569627a7276636e72667a793671357435746b7a6060527f6d7a6b746471776c6276797774677a787962646b79637562717568336535726c6080527f32752f000000000000000000000000000000000000000000000000000000000060a052604080518060065560208201600082601f0160051c6003811161124257801561013357905b8060051b830151816007015560010181811861011c575b505050505060356040527f697066733a2f2f516d5450547533314545466177786258456941615a65684c616060527f6a52414b6337596878506b5453673331534e56536500000000000000000000006080526040805180600b5560208201600082601f0160051c600281116112425780156101c157905b8060051b83015181600c01556001018181186101aa575b505050505060356040527f697066733a2f2f516d50515a61644e564e654a373239746f4a335a546a5376436060527f327868677351444a757766534a524e3433543265750000000000000000000000608052604080518060175560208201600082601f0160051c6002811161124257801561024f57905b8060051b8301518160180155600101818118610238575b50505050506001601655610fd661026b61000039610fd6610000f36003361161000c57610d86565b60003560e01c34610fc4576301ffc9a781186101235760243610610fc4576004358060201b610fc4576040526040517f01ffc9a7000000000000000000000000000000000000000000000000000000008118610069576001610118565b7f80ac58cd000000000000000000000000000000000000000000000000000000008118610097576001610118565b7f150b7a020000000000000000000000000000000000000000000000000000000081186100c5576001610118565b7f780e9d630000000000000000000000000000000000000000000000000000000081186100f3576001610118565b7f5b5e139f000000000000000000000000000000000000000000000000000000008118155b905060805260206080f35b6370a0823181186101665760243610610fc4576004358060a01c610fc45760405260405115610fc457601560405160205260005260406000205460605260206060f35b636352211e811861019b5760243610610fc457601260043560205260005260406000205460405260405115610fc45760206040f35b63081812fc81186101de5760243610610fc457601260043560205260005260406000205415610fc457601360043560205260005260406000205460405260206040f35b63e985e9c581186102385760443610610fc4576004358060a01c610fc4576040526024358060a01c610fc4576060526014604051602052600052604060002080606051602052600052604060002090505460805260206080f35b6323b872dd811861028f5760643610610fc4576004358060a01c610fc4576101a0526024358060a01c610fc4576101c0526101a051610100526101c0516101205260443561014052336101605261028d610f22565b005b6342842e0e81186102b95760643610610fc4576000610600526106008051806101e05250506102f1565b63b88d4fde81186104165760a43610610fc457606435600401610400813511610fc4578035806101e052602082018181610200375050505b6004358060a01c610fc4576101a0526024358060a01c610fc4576101c0526101a051610100526101c05161012052604435610140523361016052610333610f22565b6101c0513b15610414576101c05163150b7a0261064052608033610660526101a051610680526044356106a052806106c05280610660016101e0518082526020820181818361020060045afa5050508051806020830101601f82600003163682375050601f19601f8251602001011690508101505060206106406104a461065c6000855af16103c7573d600060003e3d6000fd5b60203d10610fc457610640518060201b610fc457610b0052610b00905051610620527f150b7a02000000000000000000000000000000000000000000000000000000006106205118610fc4575b005b63095ea7b381186104f35760443610610fc4576004358060a01c610fc457604052601260243560205260005260406000205460605260605115610fc45760605160405114610fc45733601260243560205260005260406000205414608052601460605160205260005260406000208033602052600052604060002090505460a0526080516104a65760a0516104a9565b60015b15610fc45760405160136024356020526000526040600020556024356040516060517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600060c0a4005b63a22cb46581186105805760443610610fc4576004358060a01c610fc4576040526024358060011c610fc4576060523360405114610fc4576060516014336020526000526040600020806040516020526000526040600020905055604051337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160605160805260206080a3005b636a62784281186106255760243610610fc4576004358060a01c610fc4576080523360055481186105b25760016105b9565b6004548118155b905015610fc45760805115610fc45760115460a05260805160405260a0516060526105e2610e0d565b60115460018101818110610fc457905060115560a05160805160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600060c0a4005b63c87b56dd81186107e95760243610610fc45760126004356020526000526040600020546106535760006000fd5b6016546106d3576020806040528060400160175480825260208201600082601f0160051c60058111610fc457801561069e57905b80601801548160051b840152600101818118610687575b505050508051806020830101601f82600003163682375050601f19601f8251602001011690508101905060406107e7566107e7565b6020806101c05260006006548160e001600082601f0160051c60048111610fc457801561071357905b80600701548160051b8401526001018181186106fc575b5050508082019150506004358061073557603060415260016040526040610777565b6000604f905b82610755578081608e035280608e03925061077356610768565b600a830660300181608e0352600a830492505b60010181811861073b575b5050805b90508051602082018360e0018281848460045afa505050808301925050508060c05260c09050816101c001815180825260208301602083018281848460045afa505050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506101c05bf35b63e8a3d485811861086e5760043610610fc45760208060405280604001600b5480825260208201600082601f0160051c60048111610fc457801561084057905b80600c01548160051b840152600101818118610829575b505050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b63af1c521181186108e85760443610610fc4576004356004016080813511610fc4578035806040526020820181816060375050506004543318610fc45760405180600655600081601f0160051c60048111610fc45780156108e357905b8060051b6060015181600701556001018181186108cb575b505050005b633d57df4781186109785760443610610fc4576004356004016042813511610fc45780358060405260208201818160603750505033600454811861092d576001610934565b6005548118155b905015610fc45760405180600b55600081601f0160051c60038111610fc457801561097357905b8060051b6060015181600c015560010181811861095b575b505050005b637cb97b2b81186109aa5760243610610fc4576004358060a01c610fc4576040526004543318610fc457604051600455005b63f8ae2d8f81186109f25760243610610fc4576004358060011c610fc4576040523360045481186109dc5760016109e3565b6005548118155b905015610fc457604051601655005b631652e9fc8118610a3a5760243610610fc4576004358060a01c610fc457604052336004548118610a24576001610a2b565b6005548118155b905015610fc457604051600555005b637065230f8118610ac15760643610610fc4576004358060a01c610fc4576040526024358060a01c610fc4576060523360045418610fc45760405163a9059cbb60805260605160a05260443560c052602060806044609c6000855af1610aa5573d600060003e3d6000fd5b60203d10610fc4576080518060011c610fc45760e05260e05050005b6318160ddd8118610ae05760043610610fc45760115460405260206040f35b634f6ccce78118610aff5760243610610fc45760043560405260206040f35b632f745c598118610b6d5760443610610fc4576004358060a01c610fc45760405260405115610fc45760156040516020526000526040600020546024351015610fc4576010604051602052600052604060002080602435602052600052604060002090505460605260206060f35b6395d89b418118610bc55760043610610fc4576020806040528060400160005480825260208201600154815250508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b6306fdde038118610c1d5760043610610fc4576020806040528060400160025480825260208201600354815250508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b638da5cb5b8118610c3c5760043610610fc45760045460405260206040f35b63075461728118610c5b5760043610610fc45760055460405260206040f35b63786f29108118610ce05760043610610fc4576020806040528060400160065480825260208201600082601f0160051c60048111610fc4578015610cb257905b80600701548160051b840152600101818118610c9b575b505050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b63518302278118610cff5760043610610fc45760165460405260206040f35b6374ac38d78118610d845760043610610fc4576020806040528060400160175480825260208201600082601f0160051c60058111610fc4578015610d5657905b80601801548160051b840152600101818118610d3f575b505050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b505b60006000fd5b60126060516020526000526040600020546080526040516080511460a05260136060516020526000526040600020546040511460c0526014608051602052600052604060002080604051602052600052604060002090505460e05260a051610df65760c051610df9565b60015b610e055760e051610e08565b60015b815250565b6012606051602052600052604060002054610fc457604051601260605160205260005260406000205560605160106040516020526000526040600020806015604051602052600052604060002054602052600052604060002090505560156040516020526000526040600020805460018101818110610fc4579050815550565b604051601260605160205260005260406000205418610fc4576000601260605160205260005260406000205560156040516020526000526040600020805460018103818111610fc4579050815550565b604051601260605160205260005260406000205418610fc457601360605160205260005260406000205415610f2057600060136060516020526000526040600020555b565b6101205115610fc4576101605160405261014051606052610f44610180610d8c565b6101805115610fc4576101005160405261014051606052610f63610edd565b6101005160405261014051606052610f79610e8d565b6101205160405261014051606052610f8f610e0d565b6101405161012051610100517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000610180a4565b600080fda165767970657283000307000b005b600080fd
Deployed Bytecode
0x6003361161000c57610d86565b60003560e01c34610fc4576301ffc9a781186101235760243610610fc4576004358060201b610fc4576040526040517f01ffc9a7000000000000000000000000000000000000000000000000000000008118610069576001610118565b7f80ac58cd000000000000000000000000000000000000000000000000000000008118610097576001610118565b7f150b7a020000000000000000000000000000000000000000000000000000000081186100c5576001610118565b7f780e9d630000000000000000000000000000000000000000000000000000000081186100f3576001610118565b7f5b5e139f000000000000000000000000000000000000000000000000000000008118155b905060805260206080f35b6370a0823181186101665760243610610fc4576004358060a01c610fc45760405260405115610fc457601560405160205260005260406000205460605260206060f35b636352211e811861019b5760243610610fc457601260043560205260005260406000205460405260405115610fc45760206040f35b63081812fc81186101de5760243610610fc457601260043560205260005260406000205415610fc457601360043560205260005260406000205460405260206040f35b63e985e9c581186102385760443610610fc4576004358060a01c610fc4576040526024358060a01c610fc4576060526014604051602052600052604060002080606051602052600052604060002090505460805260206080f35b6323b872dd811861028f5760643610610fc4576004358060a01c610fc4576101a0526024358060a01c610fc4576101c0526101a051610100526101c0516101205260443561014052336101605261028d610f22565b005b6342842e0e81186102b95760643610610fc4576000610600526106008051806101e05250506102f1565b63b88d4fde81186104165760a43610610fc457606435600401610400813511610fc4578035806101e052602082018181610200375050505b6004358060a01c610fc4576101a0526024358060a01c610fc4576101c0526101a051610100526101c05161012052604435610140523361016052610333610f22565b6101c0513b15610414576101c05163150b7a0261064052608033610660526101a051610680526044356106a052806106c05280610660016101e0518082526020820181818361020060045afa5050508051806020830101601f82600003163682375050601f19601f8251602001011690508101505060206106406104a461065c6000855af16103c7573d600060003e3d6000fd5b60203d10610fc457610640518060201b610fc457610b0052610b00905051610620527f150b7a02000000000000000000000000000000000000000000000000000000006106205118610fc4575b005b63095ea7b381186104f35760443610610fc4576004358060a01c610fc457604052601260243560205260005260406000205460605260605115610fc45760605160405114610fc45733601260243560205260005260406000205414608052601460605160205260005260406000208033602052600052604060002090505460a0526080516104a65760a0516104a9565b60015b15610fc45760405160136024356020526000526040600020556024356040516060517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600060c0a4005b63a22cb46581186105805760443610610fc4576004358060a01c610fc4576040526024358060011c610fc4576060523360405114610fc4576060516014336020526000526040600020806040516020526000526040600020905055604051337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160605160805260206080a3005b636a62784281186106255760243610610fc4576004358060a01c610fc4576080523360055481186105b25760016105b9565b6004548118155b905015610fc45760805115610fc45760115460a05260805160405260a0516060526105e2610e0d565b60115460018101818110610fc457905060115560a05160805160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600060c0a4005b63c87b56dd81186107e95760243610610fc45760126004356020526000526040600020546106535760006000fd5b6016546106d3576020806040528060400160175480825260208201600082601f0160051c60058111610fc457801561069e57905b80601801548160051b840152600101818118610687575b505050508051806020830101601f82600003163682375050601f19601f8251602001011690508101905060406107e7566107e7565b6020806101c05260006006548160e001600082601f0160051c60048111610fc457801561071357905b80600701548160051b8401526001018181186106fc575b5050508082019150506004358061073557603060415260016040526040610777565b6000604f905b82610755578081608e035280608e03925061077356610768565b600a830660300181608e0352600a830492505b60010181811861073b575b5050805b90508051602082018360e0018281848460045afa505050808301925050508060c05260c09050816101c001815180825260208301602083018281848460045afa505050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506101c05bf35b63e8a3d485811861086e5760043610610fc45760208060405280604001600b5480825260208201600082601f0160051c60048111610fc457801561084057905b80600c01548160051b840152600101818118610829575b505050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b63af1c521181186108e85760443610610fc4576004356004016080813511610fc4578035806040526020820181816060375050506004543318610fc45760405180600655600081601f0160051c60048111610fc45780156108e357905b8060051b6060015181600701556001018181186108cb575b505050005b633d57df4781186109785760443610610fc4576004356004016042813511610fc45780358060405260208201818160603750505033600454811861092d576001610934565b6005548118155b905015610fc45760405180600b55600081601f0160051c60038111610fc457801561097357905b8060051b6060015181600c015560010181811861095b575b505050005b637cb97b2b81186109aa5760243610610fc4576004358060a01c610fc4576040526004543318610fc457604051600455005b63f8ae2d8f81186109f25760243610610fc4576004358060011c610fc4576040523360045481186109dc5760016109e3565b6005548118155b905015610fc457604051601655005b631652e9fc8118610a3a5760243610610fc4576004358060a01c610fc457604052336004548118610a24576001610a2b565b6005548118155b905015610fc457604051600555005b637065230f8118610ac15760643610610fc4576004358060a01c610fc4576040526024358060a01c610fc4576060523360045418610fc45760405163a9059cbb60805260605160a05260443560c052602060806044609c6000855af1610aa5573d600060003e3d6000fd5b60203d10610fc4576080518060011c610fc45760e05260e05050005b6318160ddd8118610ae05760043610610fc45760115460405260206040f35b634f6ccce78118610aff5760243610610fc45760043560405260206040f35b632f745c598118610b6d5760443610610fc4576004358060a01c610fc45760405260405115610fc45760156040516020526000526040600020546024351015610fc4576010604051602052600052604060002080602435602052600052604060002090505460605260206060f35b6395d89b418118610bc55760043610610fc4576020806040528060400160005480825260208201600154815250508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b6306fdde038118610c1d5760043610610fc4576020806040528060400160025480825260208201600354815250508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b638da5cb5b8118610c3c5760043610610fc45760045460405260206040f35b63075461728118610c5b5760043610610fc45760055460405260206040f35b63786f29108118610ce05760043610610fc4576020806040528060400160065480825260208201600082601f0160051c60048111610fc4578015610cb257905b80600701548160051b840152600101818118610c9b575b505050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b63518302278118610cff5760043610610fc45760165460405260206040f35b6374ac38d78118610d845760043610610fc4576020806040528060400160175480825260208201600082601f0160051c60058111610fc4578015610d5657905b80601801548160051b840152600101818118610d3f575b505050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b505b60006000fd5b60126060516020526000526040600020546080526040516080511460a05260136060516020526000526040600020546040511460c0526014608051602052600052604060002080604051602052600052604060002090505460e05260a051610df65760c051610df9565b60015b610e055760e051610e08565b60015b815250565b6012606051602052600052604060002054610fc457604051601260605160205260005260406000205560605160106040516020526000526040600020806015604051602052600052604060002054602052600052604060002090505560156040516020526000526040600020805460018101818110610fc4579050815550565b604051601260605160205260005260406000205418610fc4576000601260605160205260005260406000205560156040516020526000526040600020805460018103818111610fc4579050815550565b604051601260605160205260005260406000205418610fc457601360605160205260005260406000205415610f2057600060136060516020526000526040600020555b565b6101205115610fc4576101605160405261014051606052610f44610180610d8c565b6101805115610fc4576101005160405261014051606052610f63610edd565b6101005160405261014051606052610f79610e8d565b6101205160405261014051606052610f8f610e0d565b6101405161012051610100517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000610180a4565b600080fda165767970657283000307000b
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.