Overview
TokenID
100000034
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SPT
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// A public demonstration in single-contract dual-token implementations // with zero-conflict events, and function overloading. // Website : https://spacepoptroopers.io/ // X : https://x.com/spt_erc741 // TG : https://t.me/SPT_ERC741 // A big thank you to Serec Thunderson for your awesome code contribution. // Your work is greatly appreciated. // Thank you for your valuable input. // Find his work on the following link: // https://github.com/SJ741/sj741-token // WARNING - Fungible NFT specs are universally new, and inherently DANGEROUS // no systems have been built with these use-cases in mind, and there are a number of // ways that experimental, complex contracts can lead to unforeseen consequences. // INTERACT WITH EXPERIMENTAL SMART CONTRACTS AT YOUR OWN RISK //SPDX-License-Identifier: MIT pragma solidity ^0.8.20; // libraries to separate ERC20 and ERC721 events, and certain signature-specific functions // ERC20 events library libSPT20 { event Transfer(address indexed from, address indexed to, uint amount); event Approval( address indexed owner, address indexed spender, uint256 value ); function emitTransfer(address _from, address _to, uint _amount) internal { emit Transfer(_from, _to, _amount); } function emitApproval( address _owner, address _spender, uint _value ) internal { emit Approval(_owner, _spender, _value); } } // ERC721 events library libSPT721 { event Transfer( address indexed _from, address indexed _to, uint indexed _tokenId ); event Approval( address indexed _owner, address indexed _approved, uint indexed _tokenId ); event ApprovalForAll( address indexed _owner, address indexed _operator, bool _approved ); function emitTransfer(address _from, address _to, uint _tokenId) internal { emit Transfer(_from, _to, _tokenId); } function emitApproval( address _owner, address _approve, uint _tokenId ) internal { emit Approval(_owner, _approve, _tokenId); } function emitApprovalForAll( address _owner, address _operator, bool _approved ) internal { emit ApprovalForAll(_owner, _operator, _approved); } } // ERC165 https://eips.ethereum.org/EIPS/eip-721 interface IERC165 { function supportsInterface(bytes4 interfaceID) external view returns (bool); } // ERC20 https://eips.ethereum.org/EIPS/eip-20 interface IERC20 { function balanceOf(address account) external view returns (uint256); function totalSupply() external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); } // ERC721 https://eips.ethereum.org/EIPS/eip-721 interface IERC721 is IERC165 { function balanceOf(address account) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom( address _from, address _to, uint256 _tokenId, bytes memory data ) external payable; function safeTransferFrom( address _from, address _to, uint256 _tokenId ) external payable; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll( address _owner, address _operator ) external view returns (bool); // payable removed for erc20 etherscan compatibility function approve(address spender, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); } interface ISPT741 is IERC20, IERC721 { // library transfers can not be included in the interface // incorporate them directly with library // libSPT20.Transfer // libSPT20.Approval // libSPT721.Transfer // libSPT721.Approval // libSPT721.ApprovalForAll function balanceOf( address account ) external view override(IERC20, IERC721) returns (uint256); function approve( address spender, uint256 value ) external override(IERC20, IERC721) returns (bool); function transferFrom( address from, address to, uint256 value ) external override(IERC20, IERC721) returns (bool); } // ERC721 Token Receiver https://eips.ethereum.org/EIPS/eip-721 interface IERC721TokenReceiver { function onERC721Received( address _operator, address _from, uint256 _tokenId, bytes memory _data ) external returns (bytes4); } contract SPT is ISPT741 { string public baseURI = "ipfs://bafybeidskgytes3zn4ge2yoejahnl7gmlsuwirg2czsujhxbzcwrthuuti/"; string internal constant _name = "Space Pop Troopers"; string internal constant _symbol = "SPT"; uint internal constant _decimals = 8; uint internal constant _totalIds = 1741; uint internal constant _totalSupply = _totalIds * 10 ** _decimals; uint internal constant ONE = 10 ** _decimals; // 1.0 token(s) uint internal constant MAXID = ONE + _totalIds; // 1.00000001 : 1.00007777 is the range for NFT IDs uint32 public minted; // number of unique ID mints uint32[] private broken; // broken NFTs stored in limbo list address public dev; bool public supportsNFTinterface; bool public skipMintingGlobal = false; mapping(address => mapping(address => bool)) private _operatorApprovals; mapping(address => mapping(address => uint)) internal _allowance; mapping(uint256 => address) public ownerOf; mapping(uint256 => address) private _nftApprovals; mapping(address => uint) internal _balanceOf; mapping(address => uint32[]) public ownedNFTs; mapping(uint32 => uint256) private idToIndex; mapping(address => bool) internal skipMintingUser; function setSkipMintingGlobal(bool newSkipMintingGlobal) public onlyDev { skipMintingGlobal = newSkipMintingGlobal; } function setSkipMinting(bool newSkipMinting) public { skipMintingUser[msg.sender] = newSkipMinting; } error UnsupportedReceiver(); modifier onlyDev() { require(msg.sender == dev, "Not the developer"); _; } constructor() { //set minted at ONE to ensure correct operation within range of IDs minted = uint32(ONE); //the message sender receives the entire supply _balanceOf[msg.sender] = _totalSupply; //the message sender is set as "dev" role dev = msg.sender; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint) { return _decimals; } function totalSupply() public pure override returns (uint) { return _totalSupply; } function balanceOf(address account) public view override returns (uint) { return _balanceOf[account]; } function allowance( address owner, address spender ) public view override returns (uint) { return _allowance[owner][spender]; } function setBaseURI(string memory newBaseURI) public onlyDev { baseURI = newBaseURI; } function changeDev(address newDev) public onlyDev { dev = newDev; } //simple function to change developer address, or revoke ownership (with address(0)) // @DEV toggleNFTinterface is for the small possibility of frontend system changes leading the contract to favor enabling the disabled supportsNFTinterface flag // don't waste it, as frontends don't typically change classification of contracts // probably never to be used. function toggelNFTinterface() public onlyDev { supportsNFTinterface = !supportsNFTinterface; } function approve( address spender, uint amount ) public override returns (bool) { // if the amount is greater than one token, and within range of IDs for NFTs // then set NFT approval for the given ID if (amount > ONE && amount <= MAXID) { address owner = ownerOf[amount]; // getting the owner of token ID via the `amount` input if (msg.sender != owner && !isApprovedForAll(owner, msg.sender)) revert("SPT741: You are not approved"); _nftApprovals[amount] = spender; // calling nft approval for the token and spender libSPT721.emitApproval(owner, spender, amount); return true; } // else set the ERC20 allowance // the NFT ID range being set within a limited subset of ONE token(s) // allows for non-clashing interactions _allowance[msg.sender][spender] = amount; libSPT20.emitApproval(msg.sender, spender, amount); return true; } function _transfer741( address from, address to, uint amount ) internal virtual { require( _balanceOf[from] >= amount, "SPT741: transfer amount exceeds balance" ); // checking the decimal amount of tokens owned before transaction for both participants uint256 fromDecimalsPre = _balanceOf[from] % ONE; uint256 toDecimalsPre = _balanceOf[to] % ONE; // simple erc20 balance operations _transfer20(from, to, amount); // checking the decimal amount of tokens after transaction for both partcipants uint256 fromDecimalsPost = _balanceOf[from] % ONE; uint256 toDecimalsPost = _balanceOf[to] % ONE; // stores the NFT IDs owned by `from`, enabling NFT management for that address. uint32[] storage ownedNFTsArray = ownedNFTs[from]; // references NFTs marked as "broken", tracking these special state NFTs. uint32[] storage brokenIDsArray = broken; // if sender has higher decimal count after transaction, then they "roll under" and break an NFT if (fromDecimalsPre < fromDecimalsPost) { if (ownedNFTsArray.length > 0) { // if the sender has an nft to send uint32 tokenId = ownedNFTsArray[0]; //selects the user's first NFT from the list brokenIDsArray.push(tokenId); //pushes the nft into the "broken list" for limbo NFTs _transfer721(from, address(0), tokenId); //transfers the NFT ID ownership to (0) address for stewardship } } // if receiver has lower decimal count after transaction then they "roll over" and will "remake" an nft if (toDecimalsPre > toDecimalsPost) { if (brokenIDsArray.length > 0) { // recover an id from broken list _transfer721( address(0), to, brokenIDsArray[brokenIDsArray.length - 1] ); brokenIDsArray.pop(); } else { // mint new id _mint(to); } } // amount of tokens - amount of whole tokens being processed in int uint amountInTokens = amount / ONE; // ignore minting nfts from dev when they call -- this allows for gas-efficient team operations // @DEV if dev gathers NFTs, use the ERC721 transferFrom method to extract // @DEV be careful, don't let the wallet fall to some convoluted transferFrom scam to do something unexpected if ( from == dev || skipMintingGlobal || skipMintingUser[to] || skipMintingUser[from] ) return; if (amountInTokens > 0) { uint len = ownedNFTsArray.length; //len is the length, or number of NFTs in the addresses's owned array len = amountInTokens < len ? amountInTokens : len; // transfers owned NFTs from `from` to `to` until either all are transferred or the desired amount is reached // Subtracts transferred NFT count from `amountInTokens` to update remaining transfers for (uint i = 0; i < len; i++) { _transfer721(from, to, ownedNFTsArray[0]); } amountInTokens -= len; len = brokenIDsArray.length; len = amountInTokens < len ? amountInTokens : len; // recovers NFTs from the broken state to `to`, or mints new ones if not enough broken NFTs are available // if any tokens remain to be allocated, it mints new NFTs to `to` for the remaining balance for (uint i = 0; i < len; i++) { _transfer721( address(0), to, brokenIDsArray[brokenIDsArray.length - 1] ); brokenIDsArray.pop(); } _mintBatch(to, amountInTokens - len); } } function _mintBatch(address to, uint256 amount) internal { if (amount == 0) return; // Exit if no NFTs to mint if (amount == 1) { // Optimize single mint process _mint(to); return; } uint32 id = minted; // Start ID from last minted value uint256 ownedLen = ownedNFTs[to].length; // Current number of NFTs owned by 'to' for (uint i = 0; i < amount; ) { unchecked { id++; // Increment ID for each new NFT } ownerOf[id] = to; // Assign new NFT to owner. idToIndex[id] = ownedLen; // Map NFT ID to its index in owner's array ownedNFTs[to].push(id); // Add new NFT ID to owner's list libSPT721.emitTransfer(address(0), to, id); // Emit NFT transfer event unchecked { ownedLen++; // Increment count of owned NFTs i++; // Move to next NFT } } unchecked { minted += uint32(amount); // Update total minted count } } function _mint(address to) internal returns (uint32 tokenId) { unchecked { minted++; // Increment the total number of minted tokens } tokenId = minted; // Assign the newly minted token ID ownerOf[tokenId] = to; // Set ownership of the new token to 'to' idToIndex[tokenId] = ownedNFTs[to].length; // Map the new token ID to its index in the owner's list ownedNFTs[to].push(tokenId); // Add the new token ID to the owner's list of owned tokens libSPT721.emitTransfer(address(0), to, tokenId); // Emit an event for the token transfer } // Updates the mappings and arrays managing ownership and index of NFTs after a transfer function _updateOwnedNFTs( address from, address to, uint32 tokenId ) internal { uint256 index = idToIndex[tokenId]; // Get current index of the token in the owner's list uint32[] storage nftArray = ownedNFTs[from]; // Reference to the list of NFTs owned by 'from' uint256 len = nftArray.length; // Current number of NFTs owned by 'from' uint32 lastTokenId = nftArray[len - 1]; // Last token in the 'from' array to swap with transferred token nftArray[index] = lastTokenId; // Replace the transferred token with the last token in the array nftArray.pop(); // Remove the last element, effectively deleting the transferred token from 'from' if (len - 1 != 0) { idToIndex[lastTokenId] = index; // Update the index of the swapped token } ownedNFTs[to].push(tokenId); // Add the transferred token to the 'to' array idToIndex[tokenId] = ownedNFTs[to].length - 1; // Update the index mapping for the transferred token } // Executes a simple ERC20 token transfer. function _transfer20(address from, address to, uint256 amount) internal { _balanceOf[from] -= amount; // Deduct the amount from the sender's balance unchecked { _balanceOf[to] += amount; // Add the amount to the recipient's balance } libSPT20.emitTransfer(from, to, amount); // Emit an ERC20 transfer event } // Handles the transfer of an ERC721 token, ensuring proper ownership and event emission function _transfer721( address from, address to, uint32 tokenId ) internal virtual { require(from == ownerOf[tokenId], "SPT741: Incorrect owner"); // Ensure 'from' is the current owner delete _nftApprovals[tokenId]; // Clear any approvals for this token ownerOf[tokenId] = to; // Transfer ownership of the token to 'to' _updateOwnedNFTs(from, to, tokenId); // Update ownership tracking structures libSPT721.emitTransfer(from, to, tokenId); // Emit an ERC721 transfer event } // only erc20 calls this // if amount is a token id owned by the caller send as an NFT // else transfer741 function transfer(address to, uint amount) public override returns (bool) { if (ownerOf[amount] == msg.sender) { _transfer721(msg.sender, to, uint32(amount)); _transfer20(msg.sender, to, ONE); return true; } _transfer741(msg.sender, to, amount); return true; } // erc20 and erc721 call this function transferFrom( address from, address to, uint amount ) public override returns (bool) { //if amount is within the NFT id range, then a simple NFT transfer + token amount (ONE) if (amount > ONE && amount <= MAXID) { require( //require from is the msg caller, or that caller is approved for that specific NFT, or all NFTs msg.sender == from || msg.sender == getApproved(amount) || isApprovedForAll(from, msg.sender), "SPT741: You don't have the right" ); _transfer721(from, to, uint32(amount)); _transfer20(from, to, ONE); return true; } _spendAllowance(from, msg.sender, amount); _transfer741(from, to, amount); return true; } // erc721 function safeTransferFrom( address from, address to, uint256 tokenId ) public payable override { require( msg.sender == from || msg.sender == getApproved(tokenId) || isApprovedForAll(from, msg.sender), "SPT741: You don't have the right" ); _transfer721(from, to, uint32(tokenId)); _transfer20(from, to, ONE); if ( to.code.length != 0 && IERC721TokenReceiver(to).onERC721Received( msg.sender, from, tokenId, "" ) != IERC721TokenReceiver.onERC721Received.selector ) { revert UnsupportedReceiver(); } } // erc721 function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory data ) public payable override { require( msg.sender == from || msg.sender == getApproved(tokenId) || isApprovedForAll(from, msg.sender), "SPT741: You don't have the right" ); _transfer721(from, to, uint32(tokenId)); _transfer20(from, to, ONE); if ( to.code.length != 0 && IERC721TokenReceiver(to).onERC721Received( msg.sender, from, tokenId, data ) != IERC721TokenReceiver.onERC721Received.selector ) { revert UnsupportedReceiver(); } } function _spendAllowance( address owner, address spender, uint amount ) internal virtual { require( _allowance[owner][spender] >= amount, "SPT741: insufficient allowance" ); _allowance[owner][spender] -= amount; } function getApproved( uint256 tokenId ) public view override returns (address) { if (ownerOf[tokenId] == address(0)) revert(); return _nftApprovals[tokenId]; } function setApprovalForAll( address operator, bool approved ) public override { _operatorApprovals[msg.sender][operator] = approved; libSPT721.emitApprovalForAll(msg.sender, operator, approved); } function isApprovedForAll( address owner, address operator ) public view override returns (bool) { return _operatorApprovals[owner][operator]; } function tokenURI( uint256 tokenId ) public view virtual returns (string memory) { require(tokenId <= MAXID, "SPT741: invalid id"); if (bytes(baseURI).length == 0) { return ""; } return string(abi.encodePacked(baseURI, toString(tokenId - ONE), ".json")); } function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(value % 10) + 48); value /= 10; } return string(buffer); } function withdraw() external onlyDev { payable(dev).transfer(address(this).balance); } function supportsInterface( bytes4 interfaceId ) public view override returns (bool) { return // Even though we support ERC721 and should return true, etherscan wants to treat us as ERC721 instead of ERC20 // @DEV ERC165 for ERC721 can be toggled on for reasons of frontend/dapp/script implementations, but is very specific (supportsNFTinterface && interfaceId == 0x80ac58cd) || // ERC165 interface ID for ERC721 interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165 interfaceId == 0x36372b07; // ERC165 interface ID for ERC20 } function getOwnedNFTs( address _owner ) external view returns (uint32[] memory) { return ownedNFTs[_owner]; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"UnsupportedReceiver","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDev","type":"address"}],"name":"changeDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getOwnedNFTs","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minted","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownedNFTs","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newSkipMinting","type":"bool"}],"name":"setSkipMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newSkipMintingGlobal","type":"bool"}],"name":"setSkipMintingGlobal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"skipMintingGlobal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supportsNFTinterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggelNFTinterface","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
61010060405260436080818152906200276260a03960009062000023908262000154565b506003805460ff60a81b191690553480156200003e57600080fd5b506200004d6008600a62000335565b6001805463ffffffff191663ffffffff92909216919091179055620000756008600a62000335565b62000083906106cd6200034a565b33600081815260086020526040902091909155600380546001600160a01b031916909117905562000364565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000da57607f821691505b602082108103620000fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200014f57600081815260208120601f850160051c810160208610156200012a5750805b601f850160051c820191505b818110156200014b5782815560010162000136565b5050505b505050565b81516001600160401b03811115620001705762000170620000af565b6200018881620001818454620000c5565b8462000101565b602080601f831160018114620001c05760008415620001a75750858301515b600019600386901b1c1916600185901b1785556200014b565b600085815260208120601f198616915b82811015620001f157888601518255948401946001909101908401620001d0565b5085821015620002105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002775781600019048211156200025b576200025b62000220565b808516156200026957918102915b93841c93908002906200023b565b509250929050565b60008262000290575060016200032f565b816200029f575060006200032f565b8160018114620002b85760028114620002c357620002e3565b60019150506200032f565b60ff841115620002d757620002d762000220565b50506001821b6200032f565b5060208310610133831016604e8410600b841016171562000308575081810a6200032f565b62000314838362000236565b80600019048211156200032b576200032b62000220565b0290505b92915050565b60006200034383836200027f565b9392505050565b80820281158282048414176200032f576200032f62000220565b6123ee80620003746000396000f3fe6080604052600436106101cd5760003560e01c80636bcef9a6116100f7578063a563833b11610095578063c87b56dd11610064578063c87b56dd1461057a578063dd62ed3e1461059a578063e985e9c5146105e0578063f835ab001461060057600080fd5b8063a563833b14610505578063a9059cbb14610526578063b3720c3414610546578063b88d4fde1461056757600080fd5b806388a8c95c116100d157806388a8c95c1461047957806391cca3db1461049957806395d89b41146104b9578063a22cb465146104e557600080fd5b80636bcef9a6146104195780636c0360eb1461042e57806370a082311461044357600080fd5b806323b872dd1161016f5780634f02c4201161013e5780634f02c4201461038657806355f804b3146103a35780636352211e146103c35780636a21f8e1146103f957600080fd5b806323b872dd14610328578063313ce567146103485780633ccfd60b1461035c57806342842e0e1461037357600080fd5b8063095ea7b3116101ab578063095ea7b31461028357806318148f1b146102a357806318160ddd146102d05780631a72b87d146102f357600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc1461024b575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611bfb565b61063b565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50604080518082019091526012815271537061636520506f702054726f6f7065727360701b60208201525b6040516101fe9190611c68565b34801561025757600080fd5b5061026b610266366004611c7b565b6106a3565b6040516001600160a01b0390911681526020016101fe565b34801561028f57600080fd5b506101f261029e366004611cab565b6106e0565b3480156102af57600080fd5b506102c36102be366004611cd5565b610810565b6040516101fe9190611cf0565b3480156102dc57600080fd5b506102e56108a8565b6040519081526020016101fe565b3480156102ff57600080fd5b5061031361030e366004611cab565b6108c7565b60405163ffffffff90911681526020016101fe565b34801561033457600080fd5b506101f2610343366004611d3a565b610910565b34801561035457600080fd5b5060086102e5565b34801561036857600080fd5b506103716109ef565b005b610371610381366004611d3a565b610a55565b34801561039257600080fd5b506001546103139063ffffffff1681565b3480156103af57600080fd5b506103716103be366004611e02565b610b9c565b3480156103cf57600080fd5b5061026b6103de366004611c7b565b6006602052600090815260409020546001600160a01b031681565b34801561040557600080fd5b50610371610414366004611e5b565b610bd6565b34801561042557600080fd5b50610371610c1e565b34801561043a57600080fd5b5061023e610c69565b34801561044f57600080fd5b506102e561045e366004611cd5565b6001600160a01b031660009081526008602052604090205490565b34801561048557600080fd5b50610371610494366004611cd5565b610cf7565b3480156104a557600080fd5b5060035461026b906001600160a01b031681565b3480156104c557600080fd5b5060408051808201909152600381526214d41560ea1b602082015261023e565b3480156104f157600080fd5b50610371610500366004611e76565b610d43565b34801561051157600080fd5b506003546101f290600160a01b900460ff1681565b34801561053257600080fd5b506101f2610541366004611cab565b610d7d565b34801561055257600080fd5b506003546101f290600160a81b900460ff1681565b610371610575366004611ea9565b610dcc565b34801561058657600080fd5b5061023e610595366004611c7b565b610f00565b3480156105a657600080fd5b506102e56105b5366004611f25565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105ec57600080fd5b506101f26105fb366004611f25565b610fd0565b34801561060c57600080fd5b5061037161061b366004611e5b565b336000908152600b60205260409020805460ff1916911515919091179055565b600354600090600160a01b900460ff16801561066757506380ac58cd60e01b6001600160e01b03198316145b8061068257506301ffc9a760e01b6001600160e01b03198316145b8061069d57506336372b0760e01b6001600160e01b03198316145b92915050565b6000818152600660205260408120546001600160a01b03166106c457600080fd5b506000908152600760205260409020546001600160a01b031690565b60006106ee6008600a61203a565b8211801561071457506106cd6107066008600a61203a565b6107109190612046565b8211155b156107d6576000828152600660205260409020546001600160a01b031633811480159061074857506107468133610fd0565b155b1561079a5760405162461bcd60e51b815260206004820152601c60248201527f5350543734313a20596f7520617265206e6f7420617070726f7665640000000060448201526064015b60405180910390fd5b600083815260076020526040902080546001600160a01b0319166001600160a01b0386161790556107cc818585610ffe565b600191505061069d565b3360008181526005602090815260408083206001600160a01b03881684529091529020839055610807908484611044565b50600192915050565b6001600160a01b03811660009081526009602090815260409182902080548351818402810184019094528084526060939283018282801561089c57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161085f5790505b50505050509050919050565b60006108b66008600a61203a565b6108c2906106cd612059565b905090565b600960205281600052604060002081815481106108e357600080fd5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b600061091e6008600a61203a565b8211801561094457506106cd6109366008600a61203a565b6109409190612046565b8211155b156109ce57336001600160a01b03851614806109795750610964826106a3565b6001600160a01b0316336001600160a01b0316145b8061098957506109898433610fd0565b6109a55760405162461bcd60e51b815260040161079190612070565b6109b0848484611096565b6109c684846109c16008600a61203a565b611165565b5060016109e8565b6109d98433846111bb565b6109e4848484611271565b5060015b9392505050565b6003546001600160a01b03163314610a195760405162461bcd60e51b8152600401610791906120a5565b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a52573d6000803e3d6000fd5b50565b336001600160a01b0384161480610a855750610a70816106a3565b6001600160a01b0316336001600160a01b0316145b80610a955750610a958333610fd0565b610ab15760405162461bcd60e51b815260040161079190612070565b610abc838383611096565b610acd83836109c16008600a61203a565b6001600160a01b0382163b15801590610b795750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c91906120d0565b6001600160e01b03191614155b15610b97576040516301d6c93560e61b815260040160405180910390fd5b505050565b6003546001600160a01b03163314610bc65760405162461bcd60e51b8152600401610791906120a5565b6000610bd28282612175565b5050565b6003546001600160a01b03163314610c005760405162461bcd60e51b8152600401610791906120a5565b60038054911515600160a81b0260ff60a81b19909216919091179055565b6003546001600160a01b03163314610c485760405162461bcd60e51b8152600401610791906120a5565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b60008054610c76906120ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca2906120ed565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b505050505081565b6003546001600160a01b03163314610d215760405162461bcd60e51b8152600401610791906120a5565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091529020805460ff1916831515179055610bd29083836116b7565b600081815260066020526040812054336001600160a01b0390911603610dc157610da8338484611096565b610db933846109c16008600a61203a565b50600161069d565b610807338484611271565b336001600160a01b0385161480610dfc5750610de7826106a3565b6001600160a01b0316336001600160a01b0316145b80610e0c5750610e0c8433610fd0565b610e285760405162461bcd60e51b815260040161079190612070565b610e33848484611096565b610e4484846109c16008600a61203a565b6001600160a01b0383163b15801590610edc5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610e8c903390899088908890600401612235565b6020604051808303816000875af1158015610eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecf91906120d0565b6001600160e01b03191614155b15610efa576040516301d6c93560e61b815260040160405180910390fd5b50505050565b60606106cd610f116008600a61203a565b610f1b9190612046565b821115610f5f5760405162461bcd60e51b815260206004820152601260248201527114d4150dcd0c4e881a5b9d985b1a59081a5960721b6044820152606401610791565b60008054610f6c906120ed565b9050600003610f8957505060408051602081019091526000815290565b6000610fa9610f9a6008600a61203a565b610fa49085612272565b6116fe565b604051602001610fba929190612285565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b80826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108991815260200190565b60405180910390a3505050565b63ffffffff81166000908152600660205260409020546001600160a01b038481169116146111065760405162461bcd60e51b815260206004820152601760248201527f5350543734313a20496e636f7272656374206f776e65720000000000000000006044820152606401610791565b63ffffffff8116600090815260076020908152604080832080546001600160a01b0319908116909155600690925290912080549091166001600160a01b038416179055611154838383611807565b610b9783838363ffffffff166119af565b6001600160a01b0383166000908152600860205260408120805483929061118d908490612272565b90915550506001600160a01b0382166000908152600860205260409020805482019055610b978383836119f5565b6001600160a01b038084166000908152600560209081526040808320938616835292905220548111156112305760405162461bcd60e51b815260206004820152601e60248201527f5350543734313a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610791565b6001600160a01b03808416600090815260056020908152604080832093861683529290529081208054839290611267908490612272565b9091555050505050565b6001600160a01b0383166000908152600860205260409020548111156112e95760405162461bcd60e51b815260206004820152602760248201527f5350543734313a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610791565b60006112f76008600a61203a565b6001600160a01b03851660009081526008602052604090205461131a9190612332565b9050600061132a6008600a61203a565b6001600160a01b03851660009081526008602052604090205461134d9190612332565b905061135a858585611165565b60006113686008600a61203a565b6001600160a01b03871660009081526008602052604090205461138b9190612332565b9050600061139b6008600a61203a565b6001600160a01b0387166000908152600860205260409020546113be9190612332565b6001600160a01b038816600090815260096020526040902090915060028386101561146a5781541561146a576000826000815481106113ff576113ff612346565b60009182526020808320600880840490910154865460018101885587865292852091830490910180546007948516600490810261010090810a90940463ffffffff908116969095160290920a8481029302199091169190911790559150611468908b9083611096565b505b8285111561151a5780541561150f576114cc60008983600185805490506114919190612272565b815481106114a1576114a1612346565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16611096565b808054806114dc576114dc61235c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905561151a565b61151888611a3a565b505b60006115286008600a61203a565b6115329089612372565b6003549091506001600160a01b038b81169116148061155a5750600354600160a81b900460ff165b8061157d57506001600160a01b0389166000908152600b602052604090205460ff165b806115a057506001600160a01b038a166000908152600b602052604090205460ff165b156115b15750505050505050505050565b80156116ab5782548082106115c657806115c8565b815b905060005b818110156115ff576115ed8c8c876000815481106114a1576114a1612346565b806115f781612386565b9150506115cd565b5061160a8183612272565b8354909250905080821061161e5780611620565b815b905060005b818110156116955761164560008c86600188805490506114919190612272565b838054806116555761165561235c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a021916905590558061168d81612386565b915050611625565b506116a98a6116a48385612272565b611ade565b505b50505050505050505050565b816001600160a01b0316836001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611089911515815260200190565b6060816000036117255750506040805180820190915260018152600360fc1b602082015290565b8160005b811561174f578061173981612386565b91506117489050600a83612372565b9150611729565b60008167ffffffffffffffff81111561176a5761176a611d76565b6040519080825280601f01601f191660200182016040528015611794576020820181803683370190505b5090505b84156117ff576117a9600183612272565b91506117b6600a86612332565b6117c190603061239f565b60f81b8183815181106117d6576117d6612346565b60200101906001600160f81b031916908160001a9053506117f8600a86612372565b9450611798565b949350505050565b63ffffffff81166000908152600a60209081526040808320546001600160a01b0387168452600990925282208054919290919082611846600184612272565b8154811061185657611856612346565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690508083858154811061189157611891612346565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550828054806118d4576118d461235c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905561190d600183612272565b1561192b5763ffffffff81166000908152600a602052604090208490555b6001600160a01b038616600081815260096020908152604082208054600180820183558285529284206008820401805460079092166004026101000a63ffffffff81810219909316928c160291909117905592909152905461198d9190612272565b63ffffffff9095166000908152600a6020526040902094909455505050505050565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108991815260200190565b6001805463ffffffff19811663ffffffff918216830182169081178355600081815260066020908152604080832080546001600160a01b0319166001600160a01b038916908117909155835260098083528184208054868652600a8552928520839055908352958101865594825281206008850401805460079095166004026101000a9384021990941692820292909217909255611ad99083836119af565b919050565b80600003611aea575050565b80600103611afb57610b9782611a3a565b6001546001600160a01b03831660009081526009602052604081205463ffffffff90921691905b83811015611bbf57600192830163ffffffff818116600081815260066020908152604080832080546001600160a01b0319166001600160a01b038d16908117909155600a8352818420899055835260098252822080549889018155825281206008880401805460079098166004026101000a93840219909716928202929092179095559093611bb3919087906119af565b60019182019101611b22565b50506001805463ffffffff19811663ffffffff9182169490940116929092179091555050565b6001600160e01b031981168114610a5257600080fd5b600060208284031215611c0d57600080fd5b81356109e881611be5565b60005b83811015611c33578181015183820152602001611c1b565b50506000910152565b60008151808452611c54816020860160208601611c18565b601f01601f19169290920160200192915050565b6020815260006109e86020830184611c3c565b600060208284031215611c8d57600080fd5b5035919050565b80356001600160a01b0381168114611ad957600080fd5b60008060408385031215611cbe57600080fd5b611cc783611c94565b946020939093013593505050565b600060208284031215611ce757600080fd5b6109e882611c94565b6020808252825182820181905260009190848201906040850190845b81811015611d2e57835163ffffffff1683529284019291840191600101611d0c565b50909695505050505050565b600080600060608486031215611d4f57600080fd5b611d5884611c94565b9250611d6660208501611c94565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611da757611da7611d76565b604051601f8501601f19908116603f01168101908282118183101715611dcf57611dcf611d76565b81604052809350858152868686011115611de857600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611e1457600080fd5b813567ffffffffffffffff811115611e2b57600080fd5b8201601f81018413611e3c57600080fd5b6117ff84823560208401611d8c565b80358015158114611ad957600080fd5b600060208284031215611e6d57600080fd5b6109e882611e4b565b60008060408385031215611e8957600080fd5b611e9283611c94565b9150611ea060208401611e4b565b90509250929050565b60008060008060808587031215611ebf57600080fd5b611ec885611c94565b9350611ed660208601611c94565b925060408501359150606085013567ffffffffffffffff811115611ef957600080fd5b8501601f81018713611f0a57600080fd5b611f1987823560208401611d8c565b91505092959194509250565b60008060408385031215611f3857600080fd5b611f4183611c94565b9150611ea060208401611c94565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611fa0578160001904821115611f8657611f86611f4f565b80851615611f9357918102915b93841c9390800290611f6a565b509250929050565b600082611fb75750600161069d565b81611fc45750600061069d565b81600181146107cc5760028103611ff15760ff841115611fe657611fe6611f4f565b50506001821b61069d565b5060208310610133831016604e8410600b8410161715612014575081810a61069d565b61201e8383611f65565b806000190482111561203257612032611f4f565b029392505050565b60006109e88383611fa8565b8082018082111561069d5761069d611f4f565b808202811582820484141761069d5761069d611f4f565b6020808252818101527f5350543734313a20596f7520646f6e2774206861766520746865207269676874604082015260600190565b6020808252601190820152702737ba103a3432903232bb32b637b832b960791b604082015260600190565b6000602082840312156120e257600080fd5b81516109e881611be5565b600181811c9082168061210157607f821691505b60208210810361212157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b9757600081815260208120601f850160051c8101602086101561214e5750805b601f850160051c820191505b8181101561216d5782815560010161215a565b505050505050565b815167ffffffffffffffff81111561218f5761218f611d76565b6121a38161219d84546120ed565b84612127565b602080601f8311600181146121d857600084156121c05750858301515b600019600386901b1c1916600185901b17855561216d565b600085815260208120601f198616915b82811015612207578886015182559484019460019091019084016121e8565b50858210156122255787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061226890830184611c3c565b9695505050505050565b8181038181111561069d5761069d611f4f565b6000808454612293816120ed565b600182811680156122ab57600181146122c0576122ef565b60ff19841687528215158302870194506122ef565b8860005260208060002060005b858110156122e65781548a8201529084019082016122cd565b50505082870194505b505050508351612303818360208801611c18565b64173539b7b760d91b9101908152600501949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826123415761234161231c565b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000826123815761238161231c565b500490565b60006001820161239857612398611f4f565b5060010190565b60ff818116838216019081111561069d5761069d611f4f56fea26469706673582212202cea7637dff09723a98309e2dfec4c7e35963cdc338db8c0c78b2d61a40d95da64736f6c63430008140033697066733a2f2f6261667962656964736b6779746573337a6e34676532796f656a61686e6c37676d6c73757769726732637a73756a6878627a6377727468757574692f
Deployed Bytecode
0x6080604052600436106101cd5760003560e01c80636bcef9a6116100f7578063a563833b11610095578063c87b56dd11610064578063c87b56dd1461057a578063dd62ed3e1461059a578063e985e9c5146105e0578063f835ab001461060057600080fd5b8063a563833b14610505578063a9059cbb14610526578063b3720c3414610546578063b88d4fde1461056757600080fd5b806388a8c95c116100d157806388a8c95c1461047957806391cca3db1461049957806395d89b41146104b9578063a22cb465146104e557600080fd5b80636bcef9a6146104195780636c0360eb1461042e57806370a082311461044357600080fd5b806323b872dd1161016f5780634f02c4201161013e5780634f02c4201461038657806355f804b3146103a35780636352211e146103c35780636a21f8e1146103f957600080fd5b806323b872dd14610328578063313ce567146103485780633ccfd60b1461035c57806342842e0e1461037357600080fd5b8063095ea7b3116101ab578063095ea7b31461028357806318148f1b146102a357806318160ddd146102d05780631a72b87d146102f357600080fd5b806301ffc9a7146101d257806306fdde0314610207578063081812fc1461024b575b600080fd5b3480156101de57600080fd5b506101f26101ed366004611bfb565b61063b565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50604080518082019091526012815271537061636520506f702054726f6f7065727360701b60208201525b6040516101fe9190611c68565b34801561025757600080fd5b5061026b610266366004611c7b565b6106a3565b6040516001600160a01b0390911681526020016101fe565b34801561028f57600080fd5b506101f261029e366004611cab565b6106e0565b3480156102af57600080fd5b506102c36102be366004611cd5565b610810565b6040516101fe9190611cf0565b3480156102dc57600080fd5b506102e56108a8565b6040519081526020016101fe565b3480156102ff57600080fd5b5061031361030e366004611cab565b6108c7565b60405163ffffffff90911681526020016101fe565b34801561033457600080fd5b506101f2610343366004611d3a565b610910565b34801561035457600080fd5b5060086102e5565b34801561036857600080fd5b506103716109ef565b005b610371610381366004611d3a565b610a55565b34801561039257600080fd5b506001546103139063ffffffff1681565b3480156103af57600080fd5b506103716103be366004611e02565b610b9c565b3480156103cf57600080fd5b5061026b6103de366004611c7b565b6006602052600090815260409020546001600160a01b031681565b34801561040557600080fd5b50610371610414366004611e5b565b610bd6565b34801561042557600080fd5b50610371610c1e565b34801561043a57600080fd5b5061023e610c69565b34801561044f57600080fd5b506102e561045e366004611cd5565b6001600160a01b031660009081526008602052604090205490565b34801561048557600080fd5b50610371610494366004611cd5565b610cf7565b3480156104a557600080fd5b5060035461026b906001600160a01b031681565b3480156104c557600080fd5b5060408051808201909152600381526214d41560ea1b602082015261023e565b3480156104f157600080fd5b50610371610500366004611e76565b610d43565b34801561051157600080fd5b506003546101f290600160a01b900460ff1681565b34801561053257600080fd5b506101f2610541366004611cab565b610d7d565b34801561055257600080fd5b506003546101f290600160a81b900460ff1681565b610371610575366004611ea9565b610dcc565b34801561058657600080fd5b5061023e610595366004611c7b565b610f00565b3480156105a657600080fd5b506102e56105b5366004611f25565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105ec57600080fd5b506101f26105fb366004611f25565b610fd0565b34801561060c57600080fd5b5061037161061b366004611e5b565b336000908152600b60205260409020805460ff1916911515919091179055565b600354600090600160a01b900460ff16801561066757506380ac58cd60e01b6001600160e01b03198316145b8061068257506301ffc9a760e01b6001600160e01b03198316145b8061069d57506336372b0760e01b6001600160e01b03198316145b92915050565b6000818152600660205260408120546001600160a01b03166106c457600080fd5b506000908152600760205260409020546001600160a01b031690565b60006106ee6008600a61203a565b8211801561071457506106cd6107066008600a61203a565b6107109190612046565b8211155b156107d6576000828152600660205260409020546001600160a01b031633811480159061074857506107468133610fd0565b155b1561079a5760405162461bcd60e51b815260206004820152601c60248201527f5350543734313a20596f7520617265206e6f7420617070726f7665640000000060448201526064015b60405180910390fd5b600083815260076020526040902080546001600160a01b0319166001600160a01b0386161790556107cc818585610ffe565b600191505061069d565b3360008181526005602090815260408083206001600160a01b03881684529091529020839055610807908484611044565b50600192915050565b6001600160a01b03811660009081526009602090815260409182902080548351818402810184019094528084526060939283018282801561089c57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161085f5790505b50505050509050919050565b60006108b66008600a61203a565b6108c2906106cd612059565b905090565b600960205281600052604060002081815481106108e357600080fd5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b600061091e6008600a61203a565b8211801561094457506106cd6109366008600a61203a565b6109409190612046565b8211155b156109ce57336001600160a01b03851614806109795750610964826106a3565b6001600160a01b0316336001600160a01b0316145b8061098957506109898433610fd0565b6109a55760405162461bcd60e51b815260040161079190612070565b6109b0848484611096565b6109c684846109c16008600a61203a565b611165565b5060016109e8565b6109d98433846111bb565b6109e4848484611271565b5060015b9392505050565b6003546001600160a01b03163314610a195760405162461bcd60e51b8152600401610791906120a5565b6003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a52573d6000803e3d6000fd5b50565b336001600160a01b0384161480610a855750610a70816106a3565b6001600160a01b0316336001600160a01b0316145b80610a955750610a958333610fd0565b610ab15760405162461bcd60e51b815260040161079190612070565b610abc838383611096565b610acd83836109c16008600a61203a565b6001600160a01b0382163b15801590610b795750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c91906120d0565b6001600160e01b03191614155b15610b97576040516301d6c93560e61b815260040160405180910390fd5b505050565b6003546001600160a01b03163314610bc65760405162461bcd60e51b8152600401610791906120a5565b6000610bd28282612175565b5050565b6003546001600160a01b03163314610c005760405162461bcd60e51b8152600401610791906120a5565b60038054911515600160a81b0260ff60a81b19909216919091179055565b6003546001600160a01b03163314610c485760405162461bcd60e51b8152600401610791906120a5565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b60008054610c76906120ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca2906120ed565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b505050505081565b6003546001600160a01b03163314610d215760405162461bcd60e51b8152600401610791906120a5565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091529020805460ff1916831515179055610bd29083836116b7565b600081815260066020526040812054336001600160a01b0390911603610dc157610da8338484611096565b610db933846109c16008600a61203a565b50600161069d565b610807338484611271565b336001600160a01b0385161480610dfc5750610de7826106a3565b6001600160a01b0316336001600160a01b0316145b80610e0c5750610e0c8433610fd0565b610e285760405162461bcd60e51b815260040161079190612070565b610e33848484611096565b610e4484846109c16008600a61203a565b6001600160a01b0383163b15801590610edc5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610e8c903390899088908890600401612235565b6020604051808303816000875af1158015610eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecf91906120d0565b6001600160e01b03191614155b15610efa576040516301d6c93560e61b815260040160405180910390fd5b50505050565b60606106cd610f116008600a61203a565b610f1b9190612046565b821115610f5f5760405162461bcd60e51b815260206004820152601260248201527114d4150dcd0c4e881a5b9d985b1a59081a5960721b6044820152606401610791565b60008054610f6c906120ed565b9050600003610f8957505060408051602081019091526000815290565b6000610fa9610f9a6008600a61203a565b610fa49085612272565b6116fe565b604051602001610fba929190612285565b6040516020818303038152906040529050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b80826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108991815260200190565b60405180910390a3505050565b63ffffffff81166000908152600660205260409020546001600160a01b038481169116146111065760405162461bcd60e51b815260206004820152601760248201527f5350543734313a20496e636f7272656374206f776e65720000000000000000006044820152606401610791565b63ffffffff8116600090815260076020908152604080832080546001600160a01b0319908116909155600690925290912080549091166001600160a01b038416179055611154838383611807565b610b9783838363ffffffff166119af565b6001600160a01b0383166000908152600860205260408120805483929061118d908490612272565b90915550506001600160a01b0382166000908152600860205260409020805482019055610b978383836119f5565b6001600160a01b038084166000908152600560209081526040808320938616835292905220548111156112305760405162461bcd60e51b815260206004820152601e60248201527f5350543734313a20696e73756666696369656e7420616c6c6f77616e636500006044820152606401610791565b6001600160a01b03808416600090815260056020908152604080832093861683529290529081208054839290611267908490612272565b9091555050505050565b6001600160a01b0383166000908152600860205260409020548111156112e95760405162461bcd60e51b815260206004820152602760248201527f5350543734313a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b6064820152608401610791565b60006112f76008600a61203a565b6001600160a01b03851660009081526008602052604090205461131a9190612332565b9050600061132a6008600a61203a565b6001600160a01b03851660009081526008602052604090205461134d9190612332565b905061135a858585611165565b60006113686008600a61203a565b6001600160a01b03871660009081526008602052604090205461138b9190612332565b9050600061139b6008600a61203a565b6001600160a01b0387166000908152600860205260409020546113be9190612332565b6001600160a01b038816600090815260096020526040902090915060028386101561146a5781541561146a576000826000815481106113ff576113ff612346565b60009182526020808320600880840490910154865460018101885587865292852091830490910180546007948516600490810261010090810a90940463ffffffff908116969095160290920a8481029302199091169190911790559150611468908b9083611096565b505b8285111561151a5780541561150f576114cc60008983600185805490506114919190612272565b815481106114a1576114a1612346565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16611096565b808054806114dc576114dc61235c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905561151a565b61151888611a3a565b505b60006115286008600a61203a565b6115329089612372565b6003549091506001600160a01b038b81169116148061155a5750600354600160a81b900460ff165b8061157d57506001600160a01b0389166000908152600b602052604090205460ff165b806115a057506001600160a01b038a166000908152600b602052604090205460ff165b156115b15750505050505050505050565b80156116ab5782548082106115c657806115c8565b815b905060005b818110156115ff576115ed8c8c876000815481106114a1576114a1612346565b806115f781612386565b9150506115cd565b5061160a8183612272565b8354909250905080821061161e5780611620565b815b905060005b818110156116955761164560008c86600188805490506114919190612272565b838054806116555761165561235c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a021916905590558061168d81612386565b915050611625565b506116a98a6116a48385612272565b611ade565b505b50505050505050505050565b816001600160a01b0316836001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611089911515815260200190565b6060816000036117255750506040805180820190915260018152600360fc1b602082015290565b8160005b811561174f578061173981612386565b91506117489050600a83612372565b9150611729565b60008167ffffffffffffffff81111561176a5761176a611d76565b6040519080825280601f01601f191660200182016040528015611794576020820181803683370190505b5090505b84156117ff576117a9600183612272565b91506117b6600a86612332565b6117c190603061239f565b60f81b8183815181106117d6576117d6612346565b60200101906001600160f81b031916908160001a9053506117f8600a86612372565b9450611798565b949350505050565b63ffffffff81166000908152600a60209081526040808320546001600160a01b0387168452600990925282208054919290919082611846600184612272565b8154811061185657611856612346565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1690508083858154811061189157611891612346565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550828054806118d4576118d461235c565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905561190d600183612272565b1561192b5763ffffffff81166000908152600a602052604090208490555b6001600160a01b038616600081815260096020908152604082208054600180820183558285529284206008820401805460079092166004026101000a63ffffffff81810219909316928c160291909117905592909152905461198d9190612272565b63ffffffff9095166000908152600a6020526040902094909455505050505050565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108991815260200190565b6001805463ffffffff19811663ffffffff918216830182169081178355600081815260066020908152604080832080546001600160a01b0319166001600160a01b038916908117909155835260098083528184208054868652600a8552928520839055908352958101865594825281206008850401805460079095166004026101000a9384021990941692820292909217909255611ad99083836119af565b919050565b80600003611aea575050565b80600103611afb57610b9782611a3a565b6001546001600160a01b03831660009081526009602052604081205463ffffffff90921691905b83811015611bbf57600192830163ffffffff818116600081815260066020908152604080832080546001600160a01b0319166001600160a01b038d16908117909155600a8352818420899055835260098252822080549889018155825281206008880401805460079098166004026101000a93840219909716928202929092179095559093611bb3919087906119af565b60019182019101611b22565b50506001805463ffffffff19811663ffffffff9182169490940116929092179091555050565b6001600160e01b031981168114610a5257600080fd5b600060208284031215611c0d57600080fd5b81356109e881611be5565b60005b83811015611c33578181015183820152602001611c1b565b50506000910152565b60008151808452611c54816020860160208601611c18565b601f01601f19169290920160200192915050565b6020815260006109e86020830184611c3c565b600060208284031215611c8d57600080fd5b5035919050565b80356001600160a01b0381168114611ad957600080fd5b60008060408385031215611cbe57600080fd5b611cc783611c94565b946020939093013593505050565b600060208284031215611ce757600080fd5b6109e882611c94565b6020808252825182820181905260009190848201906040850190845b81811015611d2e57835163ffffffff1683529284019291840191600101611d0c565b50909695505050505050565b600080600060608486031215611d4f57600080fd5b611d5884611c94565b9250611d6660208501611c94565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611da757611da7611d76565b604051601f8501601f19908116603f01168101908282118183101715611dcf57611dcf611d76565b81604052809350858152868686011115611de857600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611e1457600080fd5b813567ffffffffffffffff811115611e2b57600080fd5b8201601f81018413611e3c57600080fd5b6117ff84823560208401611d8c565b80358015158114611ad957600080fd5b600060208284031215611e6d57600080fd5b6109e882611e4b565b60008060408385031215611e8957600080fd5b611e9283611c94565b9150611ea060208401611e4b565b90509250929050565b60008060008060808587031215611ebf57600080fd5b611ec885611c94565b9350611ed660208601611c94565b925060408501359150606085013567ffffffffffffffff811115611ef957600080fd5b8501601f81018713611f0a57600080fd5b611f1987823560208401611d8c565b91505092959194509250565b60008060408385031215611f3857600080fd5b611f4183611c94565b9150611ea060208401611c94565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611fa0578160001904821115611f8657611f86611f4f565b80851615611f9357918102915b93841c9390800290611f6a565b509250929050565b600082611fb75750600161069d565b81611fc45750600061069d565b81600181146107cc5760028103611ff15760ff841115611fe657611fe6611f4f565b50506001821b61069d565b5060208310610133831016604e8410600b8410161715612014575081810a61069d565b61201e8383611f65565b806000190482111561203257612032611f4f565b029392505050565b60006109e88383611fa8565b8082018082111561069d5761069d611f4f565b808202811582820484141761069d5761069d611f4f565b6020808252818101527f5350543734313a20596f7520646f6e2774206861766520746865207269676874604082015260600190565b6020808252601190820152702737ba103a3432903232bb32b637b832b960791b604082015260600190565b6000602082840312156120e257600080fd5b81516109e881611be5565b600181811c9082168061210157607f821691505b60208210810361212157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610b9757600081815260208120601f850160051c8101602086101561214e5750805b601f850160051c820191505b8181101561216d5782815560010161215a565b505050505050565b815167ffffffffffffffff81111561218f5761218f611d76565b6121a38161219d84546120ed565b84612127565b602080601f8311600181146121d857600084156121c05750858301515b600019600386901b1c1916600185901b17855561216d565b600085815260208120601f198616915b82811015612207578886015182559484019460019091019084016121e8565b50858210156122255787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061226890830184611c3c565b9695505050505050565b8181038181111561069d5761069d611f4f565b6000808454612293816120ed565b600182811680156122ab57600181146122c0576122ef565b60ff19841687528215158302870194506122ef565b8860005260208060002060005b858110156122e65781548a8201529084019082016122cd565b50505082870194505b505050508351612303818360208801611c18565b64173539b7b760d91b9101908152600501949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826123415761234161231c565b500690565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000826123815761238161231c565b500490565b60006001820161239857612398611f4f565b5060010190565b60ff818116838216019081111561069d5761069d611f4f56fea26469706673582212202cea7637dff09723a98309e2dfec4c7e35963cdc338db8c0c78b2d61a40d95da64736f6c63430008140033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.