Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 43 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19263383 | 241 days ago | IN | 0 ETH | 0.00240929 | ||||
Approve | 19263378 | 241 days ago | IN | 0 ETH | 0.00241751 | ||||
Approve | 19263376 | 241 days ago | IN | 0 ETH | 0.00246442 | ||||
Approve | 19263376 | 241 days ago | IN | 0 ETH | 0.00246442 | ||||
Approve | 19263370 | 241 days ago | IN | 0 ETH | 0.0041025 | ||||
Approve | 19263369 | 241 days ago | IN | 0 ETH | 0.0027751 | ||||
Approve | 19263368 | 241 days ago | IN | 0 ETH | 0.00262208 | ||||
Approve | 19251434 | 242 days ago | IN | 0 ETH | 0.00091327 | ||||
Approve | 19251397 | 242 days ago | IN | 0 ETH | 0.00096843 | ||||
Approve | 19251331 | 242 days ago | IN | 0 ETH | 0.00549261 | ||||
Approve | 19251331 | 242 days ago | IN | 0 ETH | 0.00549261 | ||||
Transfer | 19251327 | 242 days ago | IN | 0 ETH | 0.00479278 | ||||
Transfer | 19251324 | 242 days ago | IN | 0 ETH | 0.00330864 | ||||
Transfer | 19251308 | 242 days ago | IN | 0 ETH | 0.00088736 | ||||
Approve | 19251301 | 242 days ago | IN | 0 ETH | 0.00094249 | ||||
Approve | 19251261 | 242 days ago | IN | 0 ETH | 0.00088176 | ||||
Approve | 19251259 | 242 days ago | IN | 0 ETH | 0.00169231 | ||||
Approve | 19251256 | 242 days ago | IN | 0 ETH | 0.00090361 | ||||
Approve | 19251253 | 242 days ago | IN | 0 ETH | 0.00098775 | ||||
Approve | 19251252 | 242 days ago | IN | 0 ETH | 0.00077391 | ||||
Approve | 19251251 | 242 days ago | IN | 0 ETH | 0.0008903 | ||||
Approve | 19251251 | 242 days ago | IN | 0 ETH | 0.0008903 | ||||
Approve | 19251251 | 242 days ago | IN | 0 ETH | 0.00098602 | ||||
Approve | 19251250 | 242 days ago | IN | 0 ETH | 0.00074417 | ||||
Approve | 19251249 | 242 days ago | IN | 0 ETH | 0.00097348 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19251121 | 242 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
Relic
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// https://relic.build/ // https://t.me/RelicPortal // https://twitter.com/relic_SJ741 //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // libraries to separate ERC20 and ERC721 events, and certain signature-specific functions // ERC20 events library libSJ20 { 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 libSJ721 { 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 ISJ741 is IERC20, IERC721 { // library transfers can not be included in the interface // incorporate them directly with library // libSJ20.Transfer // libSJ20.Approval // libSJ721.Transfer // libSJ721.Approval // libSJ721.ApprovalForAll function balanceOf(address account) external override(IERC20, IERC721) view 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 Relic is ISJ741 { string public baseURI = "https://relic.build/image/"; string internal constant _name = "Relic"; string internal constant _symbol = "RELIC"; uint internal constant _decimals = 8; uint internal constant _totalIds = 256; 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.00000256 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; mapping(address => mapping(address => bool)) private _operatorApprovals; mapping(address => mapping(address => uint)) internal _allowance; mapping(uint256 tokenId => address) public ownerOf; mapping(uint256 => address) private _nftApprovals; mapping(address => uint) internal _balanceOf; mapping(address => uint32[]) public ownedNFTs; mapping(uint32 => uint256) private idToIndex; uint256 public MINT_COST = 0.15 ether; error UnsupportedReceiver(); modifier onlyDev() { require(msg.sender == dev, "Not the developer"); _; } constructor(address _dev) { //set minted at ONE to ensure correct operation within range of IDs minted = uint32(ONE); //the message sender receives the entire supply, and is set as "dev" // half is mintable via contract directly uint256 mintable = _totalSupply / 2; _balanceOf[address(this)] = mintable; _balanceOf[_dev] = _totalSupply - mintable; dev = _dev; } function mint() external payable { address _this = address(this); uint256 _available = balanceOf(_this); require(1 <= _available); uint256 _cost = 1 * MINT_COST; require(msg.value >= _cost); _transfer20(_this, msg.sender, ONE); payable(dev).transfer(_cost); if (msg.value > _cost) { payable(msg.sender).transfer(msg.value - _cost); } } 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("SJ741: You are not approved"); _nftApprovals[amount] = spender; // calling nft approval for the token and spender libSJ721.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; libSJ20.emitApproval(msg.sender, spender, amount); return true; } function _transfer741(address from, address to, uint amount) internal virtual { require(_balanceOf[from] >= amount, "SJ741: 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) 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 libSJ721.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 libSJ721.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 } libSJ20.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], "SJ741: 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 libSJ721.emitTransfer(from, to, tokenId); // Emit an ERC721 transfer event } // only erc20 calls this // if amount is a token id owned my 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), "SJ741: 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), "SJ741: 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), "SJ741: 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, "SJ741: 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; libSJ721.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, "SJ741: invalid id"); if (bytes(baseURI).length == 0) {return "";} uint256 seed = uint256(keccak256(abi.encodePacked(tokenId))); // we have 5 images with increasing rarity string memory image; uint256 index = seed % 100; if (index < 40) { image = "common.png"; } else if (index < 70) { image = "uncommon.png"; } else if (index < 90) { image = "rare.png"; } else if (index < 97) { image = "epic.png"; } else { image = "mythic.png"; } return string(abi.encodePacked(baseURI, image)); } 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 } }
{ "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "shanghai", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"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":[],"name":"MINT_COST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","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":"tokenId","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":"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
60c0604052601a60809081527f68747470733a2f2f72656c69632e6275696c642f696d6167652f00000000000060a0525f906200003d9082620001e2565b50670214e8348c4f0000600b5534801562000056575f80fd5b50604051620025dd380380620025dd8339810160408190526200007991620002aa565b620000876008600a620003e8565b6001805463ffffffff191663ffffffff929092169190911790555f6002620000b26008600a620003e8565b620000c090610100620003f5565b620000cc91906200040f565b305f9081526008602081905260409091208290559091508190620000f290600a620003e8565b6200010090610100620003f5565b6200010c91906200042f565b6001600160a01b039092165f8181526008602052604090209290925550600380546001600160a01b031916909117905562000445565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200016b57607f821691505b6020821081036200018a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001dd575f81815260208120601f850160051c81016020861015620001b85750805b601f850160051c820191505b81811015620001d957828155600101620001c4565b5050505b505050565b81516001600160401b03811115620001fe57620001fe62000142565b62000216816200020f845462000156565b8462000190565b602080601f8311600181146200024c575f8415620002345750858301515b5f19600386901b1c1916600185901b178555620001d9565b5f85815260208120601f198616915b828110156200027c578886015182559484019460019091019084016200025b565b50858210156200029a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620002bb575f80fd5b81516001600160a01b0381168114620002d2575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200032d57815f1904821115620003115762000311620002d9565b808516156200031f57918102915b93841c9390800290620002f2565b509250929050565b5f826200034557506001620003e2565b816200035357505f620003e2565b81600181146200036c5760028114620003775762000397565b6001915050620003e2565b60ff8411156200038b576200038b620002d9565b50506001821b620003e2565b5060208310610133831016604e8410600b8410161715620003bc575081810a620003e2565b620003c88383620002ed565b805f1904821115620003de57620003de620002d9565b0290505b92915050565b5f620002d2838362000335565b8082028115828204841417620003e257620003e2620002d9565b5f826200042a57634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115620003e257620003e2620002d9565b61218a80620004535f395ff3fe6080604052600436106101af575f3560e01c80636bcef9a6116100e7578063a563833b11610087578063c662e48111610062578063c662e481146104d3578063c87b56dd146104e8578063dd62ed3e14610507578063e985e9c51461054b575f80fd5b8063a563833b14610481578063a9059cbb146104a1578063b88d4fde146104c0575f80fd5b806388a8c95c116100c257806388a8c95c146103f757806391cca3db1461041657806395d89b4114610435578063a22cb46514610462575f80fd5b80636bcef9a61461039b5780636c0360eb146103af57806370a08231146103c3575f80fd5b806323b872dd1161015257806342842e0e1161012d57806342842e0e146103195780634f02c4201461032c57806355f804b3146103485780636352211e14610367575f80fd5b806323b872dd146102d3578063313ce567146102f25780633ccfd60b14610305575f80fd5b8063095ea7b31161018d578063095ea7b3146102545780631249c58b1461027357806318160ddd1461027d5780631a72b87d1461029f575f80fd5b806301ffc9a7146101b357806306fdde03146101e7578063081812fc1461021d575b5f80fd5b3480156101be575f80fd5b506101d26101cd366004611a5a565b61056a565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b5060408051808201909152600581526452656c696360d81b60208201525b6040516101de9190611ac2565b348015610228575f80fd5b5061023c610237366004611ad4565b6105d1565b6040516001600160a01b0390911681526020016101de565b34801561025f575f80fd5b506101d261026e366004611b01565b61060b565b61027b610737565b005b348015610288575f80fd5b50610291610801565b6040519081526020016101de565b3480156102aa575f80fd5b506102be6102b9366004611b01565b61081f565b60405163ffffffff90911681526020016101de565b3480156102de575f80fd5b506101d26102ed366004611b29565b610863565b3480156102fd575f80fd5b506008610291565b348015610310575f80fd5b5061027b61093c565b61027b610327366004611b29565b61099f565b348015610337575f80fd5b506001546102be9063ffffffff1681565b348015610353575f80fd5b5061027b610362366004611be9565b610add565b348015610372575f80fd5b5061023c610381366004611ad4565b60066020525f90815260409020546001600160a01b031681565b3480156103a6575f80fd5b5061027b610b16565b3480156103ba575f80fd5b50610210610b61565b3480156103ce575f80fd5b506102916103dd366004611c36565b6001600160a01b03165f9081526008602052604090205490565b348015610402575f80fd5b5061027b610411366004611c36565b610bec565b348015610421575f80fd5b5060035461023c906001600160a01b031681565b348015610440575f80fd5b5060408051808201909152600581526452454c494360d81b6020820152610210565b34801561046d575f80fd5b5061027b61047c366004611c4f565b610c38565b34801561048c575f80fd5b506003546101d290600160a01b900460ff1681565b3480156104ac575f80fd5b506101d26104bb366004611b01565b610c71565b61027b6104ce366004611c88565b610cbf565b3480156104de575f80fd5b50610291600b5481565b3480156104f3575f80fd5b50610210610502366004611ad4565b610dea565b348015610512575f80fd5b50610291610521366004611cff565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610556575f80fd5b506101d2610565366004611cff565b610fc9565b6003545f90600160a01b900460ff16801561059557506380ac58cd60e01b6001600160e01b03198316145b806105b057506301ffc9a760e01b6001600160e01b03198316145b806105cb57506336372b0760e01b6001600160e01b03198316145b92915050565b5f818152600660205260408120546001600160a01b03166105f0575f80fd5b505f908152600760205260409020546001600160a01b031690565b5f6106186008600a611e15565b8211801561063e57506101006106306008600a611e15565b61063a9190611e20565b8211155b156106fe575f828152600660205260409020546001600160a01b0316338114801590610671575061066f8133610fc9565b155b156106c35760405162461bcd60e51b815260206004820152601b60248201527f534a3734313a20596f7520617265206e6f7420617070726f766564000000000060448201526064015b60405180910390fd5b5f83815260076020526040902080546001600160a01b0319166001600160a01b0386161790556106f4818585610ff6565b60019150506105cb565b335f8181526005602090815260408083206001600160a01b0388168452909152902083905561072e90848461103c565b50600192915050565b305f818152600860205260409020546001811015610753575f80fd5b5f600b5460016107639190611e33565b905080341015610771575f80fd5b61078783336107826008600a611e15565b61108e565b6003546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156107be573d5f803e3d5ffd5b50803411156107fc57336108fc6107d58334611e4a565b6040518115909202915f818181858888f193505050501580156107fa573d5f803e3d5ffd5b505b505050565b5f61080e6008600a611e15565b61081a90610100611e33565b905090565b6009602052815f5260405f208181548110610838575f80fd5b905f5260205f209060089182820401919006600402915091509054906101000a900463ffffffff1681565b5f6108706008600a611e15565b8211801561089657506101006108886008600a611e15565b6108929190611e20565b8211155b1561091b57336001600160a01b03851614806108cb57506108b6826105d1565b6001600160a01b0316336001600160a01b0316145b806108db57506108db8433610fc9565b6108f75760405162461bcd60e51b81526004016106ba90611e5d565b6109028484846110e2565b61091384846107826008600a611e15565b506001610935565b6109268433846111a8565b61093184848461125c565b5060015b9392505050565b6003546001600160a01b031633146109665760405162461bcd60e51b81526004016106ba90611e94565b6003546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561099c573d5f803e3d5ffd5b50565b336001600160a01b03841614806109cf57506109ba816105d1565b6001600160a01b0316336001600160a01b0316145b806109df57506109df8333610fc9565b6109fb5760405162461bcd60e51b81526004016106ba90611e5d565b610a068383836110e2565b610a1783836107826008600a611e15565b6001600160a01b0382163b15801590610abf5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610a8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab29190611ebf565b6001600160e01b03191614155b156107fc576040516301d6c93560e61b815260040160405180910390fd5b6003546001600160a01b03163314610b075760405162461bcd60e51b81526004016106ba90611e94565b5f610b128282611f5f565b5050565b6003546001600160a01b03163314610b405760405162461bcd60e51b81526004016106ba90611e94565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b5f8054610b6d90611eda565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9990611eda565b8015610be45780601f10610bbb57610100808354040283529160200191610be4565b820191905f5260205f20905b815481529060010190602001808311610bc757829003601f168201915b505050505081565b6003546001600160a01b03163314610c165760405162461bcd60e51b81526004016106ba90611e94565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526004602090815260408083206001600160a01b03871684529091529020805460ff1916831515179055610b1290838361162e565b5f81815260066020526040812054336001600160a01b0390911603610cb457610c9b3384846110e2565b610cac33846107826008600a611e15565b5060016105cb565b61072e33848461125c565b336001600160a01b0385161480610cef5750610cda826105d1565b6001600160a01b0316336001600160a01b0316145b80610cff5750610cff8433610fc9565b610d1b5760405162461bcd60e51b81526004016106ba90611e5d565b610d268484846110e2565b610d3784846107826008600a611e15565b6001600160a01b0383163b15801590610dcc5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610d7f90339089908890889060040161201b565b6020604051808303815f875af1158015610d9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbf9190611ebf565b6001600160e01b03191614155b156107fa576040516301d6c93560e61b815260040160405180910390fd5b6060610100610dfb6008600a611e15565b610e059190611e20565b821115610e485760405162461bcd60e51b815260206004820152601160248201527014d28dcd0c4e881a5b9d985b1a59081a59607a1b60448201526064016106ba565b5f8054610e5490611eda565b90505f03610e6f57505060408051602081019091525f815290565b5f82604051602001610e8391815260200190565b60408051601f198184030181529190528051602090910120905060605f610eab60648461206b565b90506028811015610ee0576040518060400160405280600a815260200169636f6d6d6f6e2e706e6760b01b8152509150610f9d565b6046811015610f15576040518060400160405280600c81526020016b756e636f6d6d6f6e2e706e6760a01b8152509150610f9d565b605a811015610f465760405180604001604052806008815260200167726172652e706e6760c01b8152509150610f9d565b6061811015610f775760405180604001604052806008815260200167657069632e706e6760c01b8152509150610f9d565b6040518060400160405280600a8152602001696d79746869632e706e6760b01b81525091505b5f82604051602001610fb092919061207e565b6040516020818303038152906040529350505050919050565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205460ff1690565b80826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108191815260200190565b60405180910390a3505050565b6001600160a01b0383165f90815260086020526040812080548392906110b5908490611e4a565b90915550506001600160a01b0382165f9081526008602052604090208054820190556107fc838383611675565b63ffffffff81165f908152600660205260409020546001600160a01b0384811691161461114a5760405162461bcd60e51b815260206004820152601660248201527529a51b9a189d1024b731b7b93932b1ba1037bbb732b960511b60448201526064016106ba565b63ffffffff81165f90815260076020908152604080832080546001600160a01b0319908116909155600690925290912080549091166001600160a01b0384161790556111978383836116ba565b6107fc83838363ffffffff16611858565b6001600160a01b038084165f9081526005602090815260408083209386168352929052205481111561121c5760405162461bcd60e51b815260206004820152601d60248201527f534a3734313a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ba565b6001600160a01b038084165f90815260056020908152604080832093861683529290529081208054839290611252908490611e4a565b9091555050505050565b6001600160a01b0383165f908152600860205260409020548111156112d25760405162461bcd60e51b815260206004820152602660248201527f534a3734313a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ba565b5f6112df6008600a611e15565b6001600160a01b0385165f90815260086020526040902054611301919061206b565b90505f6113106008600a611e15565b6001600160a01b0385165f90815260086020526040902054611332919061206b565b905061133f85858561108e565b5f61134c6008600a611e15565b6001600160a01b0387165f9081526008602052604090205461136e919061206b565b90505f61137d6008600a611e15565b6001600160a01b0387165f9081526008602052604090205461139f919061206b565b6001600160a01b0388165f90815260096020526040902090915060028386101561144757815415611447575f825f815481106113dd576113dd612101565b5f9182526020808320600880840490910154865460018101885587865292852091830490910180546007948516600490810261010090810a90940463ffffffff908116969095160290920a8481029302199091169190911790559150611445908b90836110e2565b505b828511156114f2578054156114e7576114a65f89836001858054905061146d9190611e4a565b8154811061147d5761147d612101565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff166110e2565b808054806114b6576114b6612115565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590556114f2565b6114f08861189e565b505b5f6114ff6008600a611e15565b6115099089612129565b6003549091506001600160a01b03908116908b160361152e5750505050505050505050565b80156116225782548082106115435780611545565b815b90505f5b8181101561157a576115688c8c875f8154811061147d5761147d612101565b806115728161213c565b915050611549565b506115858183611e4a565b83549092509050808210611599578061159b565b815b90505f5b8181101561160c576115be5f8c866001888054905061146d9190611e4a565b838054806115ce576115ce612115565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a02191690559055806116048161213c565b91505061159f565b506116208a61161b8385611e4a565b611941565b505b50505050505050505050565b816001600160a01b0316836001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611081911515815260200190565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108191815260200190565b63ffffffff81165f908152600a60209081526040808320546001600160a01b03871684526009909252822080549192909190826116f8600184611e4a565b8154811061170857611708612101565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff1690508083858154811061174157611741612101565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508280548061178257611782612115565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590556117b9600183611e4a565b156117d65763ffffffff81165f908152600a602052604090208490555b6001600160a01b0386165f81815260096020908152604082208054600180820183558285529284206008820401805460079092166004026101000a63ffffffff81810219909316928c16029190911790559290915290546118379190611e4a565b63ffffffff9095165f908152600a6020526040902094909455505050505050565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001805463ffffffff19811663ffffffff9182168301821690811783555f81815260066020908152604080832080546001600160a01b0319166001600160a01b038916908117909155835260098083528184208054868652600a8552928520839055908352958101865594825281206008850401805460079095166004026101000a938402199094169282029290921790925561193c908383611858565b919050565b805f0361194c575050565b8060010361195d576107fc8261189e565b6001546001600160a01b0383165f9081526009602052604081205463ffffffff90921691905b83811015611a1f57600192830163ffffffff8181165f81815260066020908152604080832080546001600160a01b0319166001600160a01b038d16908117909155600a8352818420899055835260098252822080549889018155825281206008880401805460079098166004026101000a93840219909716928202929092179095559093611a1391908790611858565b60019182019101611983565b50506001805463ffffffff19811663ffffffff9182169490940116929092179091555050565b6001600160e01b03198116811461099c575f80fd5b5f60208284031215611a6a575f80fd5b813561093581611a45565b5f5b83811015611a8f578181015183820152602001611a77565b50505f910152565b5f8151808452611aae816020860160208601611a75565b601f01601f19169290920160200192915050565b602081525f6109356020830184611a97565b5f60208284031215611ae4575f80fd5b5035919050565b80356001600160a01b038116811461193c575f80fd5b5f8060408385031215611b12575f80fd5b611b1b83611aeb565b946020939093013593505050565b5f805f60608486031215611b3b575f80fd5b611b4484611aeb565b9250611b5260208501611aeb565b9150604084013590509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611b9057611b90611b62565b604051601f8501601f19908116603f01168101908282118183101715611bb857611bb8611b62565b81604052809350858152868686011115611bd0575f80fd5b858560208301375f602087830101525050509392505050565b5f60208284031215611bf9575f80fd5b813567ffffffffffffffff811115611c0f575f80fd5b8201601f81018413611c1f575f80fd5b611c2e84823560208401611b76565b949350505050565b5f60208284031215611c46575f80fd5b61093582611aeb565b5f8060408385031215611c60575f80fd5b611c6983611aeb565b915060208301358015158114611c7d575f80fd5b809150509250929050565b5f805f8060808587031215611c9b575f80fd5b611ca485611aeb565b9350611cb260208601611aeb565b925060408501359150606085013567ffffffffffffffff811115611cd4575f80fd5b8501601f81018713611ce4575f80fd5b611cf387823560208401611b76565b91505092959194509250565b5f8060408385031215611d10575f80fd5b611d1983611aeb565b9150611d2760208401611aeb565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d7e57815f1904821115611d6457611d64611d30565b80851615611d7157918102915b93841c9390800290611d49565b509250929050565b5f82611d94575060016105cb565b81611da057505f6105cb565b81600181146106f45760028103611dcd5760ff841115611dc257611dc2611d30565b50506001821b6105cb565b5060208310610133831016604e8410600b8410161715611df0575081810a6105cb565b611dfa8383611d44565b805f1904821115611e0d57611e0d611d30565b029392505050565b5f6109358383611d86565b808201808211156105cb576105cb611d30565b80820281158282048414176105cb576105cb611d30565b818103818111156105cb576105cb611d30565b6020808252601f908201527f534a3734313a20596f7520646f6e277420686176652074686520726967687400604082015260600190565b6020808252601190820152702737ba103a3432903232bb32b637b832b960791b604082015260600190565b5f60208284031215611ecf575f80fd5b815161093581611a45565b600181811c90821680611eee57607f821691505b602082108103611f0c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156107fc575f81815260208120601f850160051c81016020861015611f385750805b601f850160051c820191505b81811015611f5757828155600101611f44565b505050505050565b815167ffffffffffffffff811115611f7957611f79611b62565b611f8d81611f878454611eda565b84611f12565b602080601f831160018114611fc0575f8415611fa95750858301515b5f19600386901b1c1916600185901b178555611f57565b5f85815260208120601f198616915b82811015611fee57888601518255948401946001909101908401611fcf565b508582101561200b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061204d90830184611a97565b9695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261207957612079612057565b500690565b5f80845461208b81611eda565b600182811680156120a357600181146120b8576120e4565b60ff19841687528215158302870194506120e4565b885f526020805f205f5b858110156120db5781548a8201529084019082016120c2565b50505082870194505b5050505083516120f8818360208801611a75565b01949350505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f8261213757612137612057565b500490565b5f6001820161214d5761214d611d30565b506001019056fea26469706673582212208e6a3b1ebf46dd56910062c7b8bc50685dcd94507bc7d525f0cf2fa9767692e864736f6c63430008140033000000000000000000000000cf3676bbf2e70527418bdd1bd5d6f54a25fcb48b
Deployed Bytecode
0x6080604052600436106101af575f3560e01c80636bcef9a6116100e7578063a563833b11610087578063c662e48111610062578063c662e481146104d3578063c87b56dd146104e8578063dd62ed3e14610507578063e985e9c51461054b575f80fd5b8063a563833b14610481578063a9059cbb146104a1578063b88d4fde146104c0575f80fd5b806388a8c95c116100c257806388a8c95c146103f757806391cca3db1461041657806395d89b4114610435578063a22cb46514610462575f80fd5b80636bcef9a61461039b5780636c0360eb146103af57806370a08231146103c3575f80fd5b806323b872dd1161015257806342842e0e1161012d57806342842e0e146103195780634f02c4201461032c57806355f804b3146103485780636352211e14610367575f80fd5b806323b872dd146102d3578063313ce567146102f25780633ccfd60b14610305575f80fd5b8063095ea7b31161018d578063095ea7b3146102545780631249c58b1461027357806318160ddd1461027d5780631a72b87d1461029f575f80fd5b806301ffc9a7146101b357806306fdde03146101e7578063081812fc1461021d575b5f80fd5b3480156101be575f80fd5b506101d26101cd366004611a5a565b61056a565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b5060408051808201909152600581526452656c696360d81b60208201525b6040516101de9190611ac2565b348015610228575f80fd5b5061023c610237366004611ad4565b6105d1565b6040516001600160a01b0390911681526020016101de565b34801561025f575f80fd5b506101d261026e366004611b01565b61060b565b61027b610737565b005b348015610288575f80fd5b50610291610801565b6040519081526020016101de565b3480156102aa575f80fd5b506102be6102b9366004611b01565b61081f565b60405163ffffffff90911681526020016101de565b3480156102de575f80fd5b506101d26102ed366004611b29565b610863565b3480156102fd575f80fd5b506008610291565b348015610310575f80fd5b5061027b61093c565b61027b610327366004611b29565b61099f565b348015610337575f80fd5b506001546102be9063ffffffff1681565b348015610353575f80fd5b5061027b610362366004611be9565b610add565b348015610372575f80fd5b5061023c610381366004611ad4565b60066020525f90815260409020546001600160a01b031681565b3480156103a6575f80fd5b5061027b610b16565b3480156103ba575f80fd5b50610210610b61565b3480156103ce575f80fd5b506102916103dd366004611c36565b6001600160a01b03165f9081526008602052604090205490565b348015610402575f80fd5b5061027b610411366004611c36565b610bec565b348015610421575f80fd5b5060035461023c906001600160a01b031681565b348015610440575f80fd5b5060408051808201909152600581526452454c494360d81b6020820152610210565b34801561046d575f80fd5b5061027b61047c366004611c4f565b610c38565b34801561048c575f80fd5b506003546101d290600160a01b900460ff1681565b3480156104ac575f80fd5b506101d26104bb366004611b01565b610c71565b61027b6104ce366004611c88565b610cbf565b3480156104de575f80fd5b50610291600b5481565b3480156104f3575f80fd5b50610210610502366004611ad4565b610dea565b348015610512575f80fd5b50610291610521366004611cff565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610556575f80fd5b506101d2610565366004611cff565b610fc9565b6003545f90600160a01b900460ff16801561059557506380ac58cd60e01b6001600160e01b03198316145b806105b057506301ffc9a760e01b6001600160e01b03198316145b806105cb57506336372b0760e01b6001600160e01b03198316145b92915050565b5f818152600660205260408120546001600160a01b03166105f0575f80fd5b505f908152600760205260409020546001600160a01b031690565b5f6106186008600a611e15565b8211801561063e57506101006106306008600a611e15565b61063a9190611e20565b8211155b156106fe575f828152600660205260409020546001600160a01b0316338114801590610671575061066f8133610fc9565b155b156106c35760405162461bcd60e51b815260206004820152601b60248201527f534a3734313a20596f7520617265206e6f7420617070726f766564000000000060448201526064015b60405180910390fd5b5f83815260076020526040902080546001600160a01b0319166001600160a01b0386161790556106f4818585610ff6565b60019150506105cb565b335f8181526005602090815260408083206001600160a01b0388168452909152902083905561072e90848461103c565b50600192915050565b305f818152600860205260409020546001811015610753575f80fd5b5f600b5460016107639190611e33565b905080341015610771575f80fd5b61078783336107826008600a611e15565b61108e565b6003546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156107be573d5f803e3d5ffd5b50803411156107fc57336108fc6107d58334611e4a565b6040518115909202915f818181858888f193505050501580156107fa573d5f803e3d5ffd5b505b505050565b5f61080e6008600a611e15565b61081a90610100611e33565b905090565b6009602052815f5260405f208181548110610838575f80fd5b905f5260205f209060089182820401919006600402915091509054906101000a900463ffffffff1681565b5f6108706008600a611e15565b8211801561089657506101006108886008600a611e15565b6108929190611e20565b8211155b1561091b57336001600160a01b03851614806108cb57506108b6826105d1565b6001600160a01b0316336001600160a01b0316145b806108db57506108db8433610fc9565b6108f75760405162461bcd60e51b81526004016106ba90611e5d565b6109028484846110e2565b61091384846107826008600a611e15565b506001610935565b6109268433846111a8565b61093184848461125c565b5060015b9392505050565b6003546001600160a01b031633146109665760405162461bcd60e51b81526004016106ba90611e94565b6003546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561099c573d5f803e3d5ffd5b50565b336001600160a01b03841614806109cf57506109ba816105d1565b6001600160a01b0316336001600160a01b0316145b806109df57506109df8333610fc9565b6109fb5760405162461bcd60e51b81526004016106ba90611e5d565b610a068383836110e2565b610a1783836107826008600a611e15565b6001600160a01b0382163b15801590610abf5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610a8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab29190611ebf565b6001600160e01b03191614155b156107fc576040516301d6c93560e61b815260040160405180910390fd5b6003546001600160a01b03163314610b075760405162461bcd60e51b81526004016106ba90611e94565b5f610b128282611f5f565b5050565b6003546001600160a01b03163314610b405760405162461bcd60e51b81526004016106ba90611e94565b6003805460ff60a01b198116600160a01b9182900460ff1615909102179055565b5f8054610b6d90611eda565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9990611eda565b8015610be45780601f10610bbb57610100808354040283529160200191610be4565b820191905f5260205f20905b815481529060010190602001808311610bc757829003601f168201915b505050505081565b6003546001600160a01b03163314610c165760405162461bcd60e51b81526004016106ba90611e94565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526004602090815260408083206001600160a01b03871684529091529020805460ff1916831515179055610b1290838361162e565b5f81815260066020526040812054336001600160a01b0390911603610cb457610c9b3384846110e2565b610cac33846107826008600a611e15565b5060016105cb565b61072e33848461125c565b336001600160a01b0385161480610cef5750610cda826105d1565b6001600160a01b0316336001600160a01b0316145b80610cff5750610cff8433610fc9565b610d1b5760405162461bcd60e51b81526004016106ba90611e5d565b610d268484846110e2565b610d3784846107826008600a611e15565b6001600160a01b0383163b15801590610dcc5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610d7f90339089908890889060040161201b565b6020604051808303815f875af1158015610d9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbf9190611ebf565b6001600160e01b03191614155b156107fa576040516301d6c93560e61b815260040160405180910390fd5b6060610100610dfb6008600a611e15565b610e059190611e20565b821115610e485760405162461bcd60e51b815260206004820152601160248201527014d28dcd0c4e881a5b9d985b1a59081a59607a1b60448201526064016106ba565b5f8054610e5490611eda565b90505f03610e6f57505060408051602081019091525f815290565b5f82604051602001610e8391815260200190565b60408051601f198184030181529190528051602090910120905060605f610eab60648461206b565b90506028811015610ee0576040518060400160405280600a815260200169636f6d6d6f6e2e706e6760b01b8152509150610f9d565b6046811015610f15576040518060400160405280600c81526020016b756e636f6d6d6f6e2e706e6760a01b8152509150610f9d565b605a811015610f465760405180604001604052806008815260200167726172652e706e6760c01b8152509150610f9d565b6061811015610f775760405180604001604052806008815260200167657069632e706e6760c01b8152509150610f9d565b6040518060400160405280600a8152602001696d79746869632e706e6760b01b81525091505b5f82604051602001610fb092919061207e565b6040516020818303038152906040529350505050919050565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205460ff1690565b80826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108191815260200190565b60405180910390a3505050565b6001600160a01b0383165f90815260086020526040812080548392906110b5908490611e4a565b90915550506001600160a01b0382165f9081526008602052604090208054820190556107fc838383611675565b63ffffffff81165f908152600660205260409020546001600160a01b0384811691161461114a5760405162461bcd60e51b815260206004820152601660248201527529a51b9a189d1024b731b7b93932b1ba1037bbb732b960511b60448201526064016106ba565b63ffffffff81165f90815260076020908152604080832080546001600160a01b0319908116909155600690925290912080549091166001600160a01b0384161790556111978383836116ba565b6107fc83838363ffffffff16611858565b6001600160a01b038084165f9081526005602090815260408083209386168352929052205481111561121c5760405162461bcd60e51b815260206004820152601d60248201527f534a3734313a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ba565b6001600160a01b038084165f90815260056020908152604080832093861683529290529081208054839290611252908490611e4a565b9091555050505050565b6001600160a01b0383165f908152600860205260409020548111156112d25760405162461bcd60e51b815260206004820152602660248201527f534a3734313a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ba565b5f6112df6008600a611e15565b6001600160a01b0385165f90815260086020526040902054611301919061206b565b90505f6113106008600a611e15565b6001600160a01b0385165f90815260086020526040902054611332919061206b565b905061133f85858561108e565b5f61134c6008600a611e15565b6001600160a01b0387165f9081526008602052604090205461136e919061206b565b90505f61137d6008600a611e15565b6001600160a01b0387165f9081526008602052604090205461139f919061206b565b6001600160a01b0388165f90815260096020526040902090915060028386101561144757815415611447575f825f815481106113dd576113dd612101565b5f9182526020808320600880840490910154865460018101885587865292852091830490910180546007948516600490810261010090810a90940463ffffffff908116969095160290920a8481029302199091169190911790559150611445908b90836110e2565b505b828511156114f2578054156114e7576114a65f89836001858054905061146d9190611e4a565b8154811061147d5761147d612101565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff166110e2565b808054806114b6576114b6612115565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590556114f2565b6114f08861189e565b505b5f6114ff6008600a611e15565b6115099089612129565b6003549091506001600160a01b03908116908b160361152e5750505050505050505050565b80156116225782548082106115435780611545565b815b90505f5b8181101561157a576115688c8c875f8154811061147d5761147d612101565b806115728161213c565b915050611549565b506115858183611e4a565b83549092509050808210611599578061159b565b815b90505f5b8181101561160c576115be5f8c866001888054905061146d9190611e4a565b838054806115ce576115ce612115565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a02191690559055806116048161213c565b91505061159f565b506116208a61161b8385611e4a565b611941565b505b50505050505050505050565b816001600160a01b0316836001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611081911515815260200190565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108191815260200190565b63ffffffff81165f908152600a60209081526040808320546001600160a01b03871684526009909252822080549192909190826116f8600184611e4a565b8154811061170857611708612101565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff1690508083858154811061174157611741612101565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055508280548061178257611782612115565b5f8281526020902060085f1990920191820401805463ffffffff600460078516026101000a021916905590556117b9600183611e4a565b156117d65763ffffffff81165f908152600a602052604090208490555b6001600160a01b0386165f81815260096020908152604082208054600180820183558285529284206008820401805460079092166004026101000a63ffffffff81810219909316928c16029190911790559290915290546118379190611e4a565b63ffffffff9095165f908152600a6020526040902094909455505050505050565b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001805463ffffffff19811663ffffffff9182168301821690811783555f81815260066020908152604080832080546001600160a01b0319166001600160a01b038916908117909155835260098083528184208054868652600a8552928520839055908352958101865594825281206008850401805460079095166004026101000a938402199094169282029290921790925561193c908383611858565b919050565b805f0361194c575050565b8060010361195d576107fc8261189e565b6001546001600160a01b0383165f9081526009602052604081205463ffffffff90921691905b83811015611a1f57600192830163ffffffff8181165f81815260066020908152604080832080546001600160a01b0319166001600160a01b038d16908117909155600a8352818420899055835260098252822080549889018155825281206008880401805460079098166004026101000a93840219909716928202929092179095559093611a1391908790611858565b60019182019101611983565b50506001805463ffffffff19811663ffffffff9182169490940116929092179091555050565b6001600160e01b03198116811461099c575f80fd5b5f60208284031215611a6a575f80fd5b813561093581611a45565b5f5b83811015611a8f578181015183820152602001611a77565b50505f910152565b5f8151808452611aae816020860160208601611a75565b601f01601f19169290920160200192915050565b602081525f6109356020830184611a97565b5f60208284031215611ae4575f80fd5b5035919050565b80356001600160a01b038116811461193c575f80fd5b5f8060408385031215611b12575f80fd5b611b1b83611aeb565b946020939093013593505050565b5f805f60608486031215611b3b575f80fd5b611b4484611aeb565b9250611b5260208501611aeb565b9150604084013590509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611b9057611b90611b62565b604051601f8501601f19908116603f01168101908282118183101715611bb857611bb8611b62565b81604052809350858152868686011115611bd0575f80fd5b858560208301375f602087830101525050509392505050565b5f60208284031215611bf9575f80fd5b813567ffffffffffffffff811115611c0f575f80fd5b8201601f81018413611c1f575f80fd5b611c2e84823560208401611b76565b949350505050565b5f60208284031215611c46575f80fd5b61093582611aeb565b5f8060408385031215611c60575f80fd5b611c6983611aeb565b915060208301358015158114611c7d575f80fd5b809150509250929050565b5f805f8060808587031215611c9b575f80fd5b611ca485611aeb565b9350611cb260208601611aeb565b925060408501359150606085013567ffffffffffffffff811115611cd4575f80fd5b8501601f81018713611ce4575f80fd5b611cf387823560208401611b76565b91505092959194509250565b5f8060408385031215611d10575f80fd5b611d1983611aeb565b9150611d2760208401611aeb565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d7e57815f1904821115611d6457611d64611d30565b80851615611d7157918102915b93841c9390800290611d49565b509250929050565b5f82611d94575060016105cb565b81611da057505f6105cb565b81600181146106f45760028103611dcd5760ff841115611dc257611dc2611d30565b50506001821b6105cb565b5060208310610133831016604e8410600b8410161715611df0575081810a6105cb565b611dfa8383611d44565b805f1904821115611e0d57611e0d611d30565b029392505050565b5f6109358383611d86565b808201808211156105cb576105cb611d30565b80820281158282048414176105cb576105cb611d30565b818103818111156105cb576105cb611d30565b6020808252601f908201527f534a3734313a20596f7520646f6e277420686176652074686520726967687400604082015260600190565b6020808252601190820152702737ba103a3432903232bb32b637b832b960791b604082015260600190565b5f60208284031215611ecf575f80fd5b815161093581611a45565b600181811c90821680611eee57607f821691505b602082108103611f0c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156107fc575f81815260208120601f850160051c81016020861015611f385750805b601f850160051c820191505b81811015611f5757828155600101611f44565b505050505050565b815167ffffffffffffffff811115611f7957611f79611b62565b611f8d81611f878454611eda565b84611f12565b602080601f831160018114611fc0575f8415611fa95750858301515b5f19600386901b1c1916600185901b178555611f57565b5f85815260208120601f198616915b82811015611fee57888601518255948401946001909101908401611fcf565b508582101561200b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061204d90830184611a97565b9695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261207957612079612057565b500690565b5f80845461208b81611eda565b600182811680156120a357600181146120b8576120e4565b60ff19841687528215158302870194506120e4565b885f526020805f205f5b858110156120db5781548a8201529084019082016120c2565b50505082870194505b5050505083516120f8818360208801611a75565b01949350505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f8261213757612137612057565b500490565b5f6001820161214d5761214d611d30565b506001019056fea26469706673582212208e6a3b1ebf46dd56910062c7b8bc50685dcd94507bc7d525f0cf2fa9767692e864736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cf3676bbf2e70527418bdd1bd5d6f54a25fcb48b
-----Decoded View---------------
Arg [0] : _dev (address): 0xCF3676bBF2e70527418BDD1bd5d6F54A25fcb48B
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cf3676bbf2e70527418bdd1bd5d6f54a25fcb48b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.