Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 416 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 14753054 | 885 days ago | IN | 0 ETH | 0.00284966 | ||||
Withdraw All | 14753051 | 885 days ago | IN | 0 ETH | 0.00472254 | ||||
Withdraw | 14751023 | 885 days ago | IN | 0 ETH | 0.00752297 | ||||
Withdraw All | 14750790 | 885 days ago | IN | 0 ETH | 0.00411519 | ||||
Withdraw All | 14750785 | 885 days ago | IN | 0 ETH | 0.00556444 | ||||
Withdraw All | 14750745 | 885 days ago | IN | 0 ETH | 0.00479825 | ||||
Withdraw All | 14750234 | 885 days ago | IN | 0 ETH | 0.00556798 | ||||
Withdraw All | 14748724 | 885 days ago | IN | 0 ETH | 0.00897032 | ||||
Withdraw All | 14748699 | 885 days ago | IN | 0 ETH | 0.00374068 | ||||
Withdraw All | 14748647 | 885 days ago | IN | 0 ETH | 0.00444277 | ||||
Withdraw All | 14748640 | 885 days ago | IN | 0 ETH | 0.00359835 | ||||
Withdraw | 14748629 | 885 days ago | IN | 0 ETH | 0.00267342 | ||||
Withdraw All | 14748594 | 885 days ago | IN | 0 ETH | 0.00323754 | ||||
Withdraw All | 14748546 | 885 days ago | IN | 0 ETH | 0.00842333 | ||||
Withdraw All | 14748342 | 885 days ago | IN | 0 ETH | 0.00549871 | ||||
Withdraw All | 14747647 | 886 days ago | IN | 0 ETH | 0.00951154 | ||||
Withdraw All | 14747444 | 886 days ago | IN | 0 ETH | 0.0051756 | ||||
Withdraw All | 14746906 | 886 days ago | IN | 0 ETH | 0.00504124 | ||||
Withdraw | 14746173 | 886 days ago | IN | 0 ETH | 0.00821438 | ||||
Withdraw All | 14745886 | 886 days ago | IN | 0 ETH | 0.00464933 | ||||
Withdraw All | 14745110 | 886 days ago | IN | 0 ETH | 0.01938305 | ||||
Withdraw All | 14743104 | 886 days ago | IN | 0 ETH | 0.01192286 | ||||
Withdraw | 14742916 | 886 days ago | IN | 0 ETH | 0.00395458 | ||||
Withdraw All | 14742218 | 886 days ago | IN | 0 ETH | 0.00989975 | ||||
Withdraw | 14742213 | 886 days ago | IN | 0 ETH | 0.00433374 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ClayStake
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "./ClayLibrary.sol"; import "./ClayGen.sol"; interface IClayStorage { function setStorage(uint256 id, uint128 key, uint256 value) external; function getStorage(uint256 id, uint128 key) external view returns (uint256); } interface IMudToken { function mint(address to, uint256 amount) external; function burn(address from, uint256 amount) external; } interface IClayTraitModifier { function renderAttributes(uint256 _t) external view returns (string memory); } contract ClayStake is Ownable, ReentrancyGuard, IClayTraitModifier { IClayStorage internal storageContract; IERC721 internal nftContract; IMudToken internal tokenContract; uint256 internal immutable startCountTime; uint128 public constant LAST_MUD_WITHDRAWAL = 1; constructor() { startCountTime = block.timestamp; } function setStorageContract(address _storageContract) public onlyOwner { storageContract = IClayStorage(_storageContract); } function setNFTContract(address _nftContract) public onlyOwner { nftContract = IERC721(_nftContract); } function setTokenContract(address _tokenContract) public onlyOwner { tokenContract = IMudToken(_tokenContract); } function getWithdrawAmountWithTimestamp(uint256 _t, uint256 lastMudWithdrawal) internal view returns (uint256) { ClayLibrary.Traits memory traits = ClayLibrary.getTraits(_t); uint256 largeOre = traits.largeOre == 1 ? 2 : 1; uint256 withdrawAmount = (ClayLibrary.getBaseMultiplier(traits.base) * ClayLibrary.getOreMultiplier(traits.ore) * largeOre) / 1000 * 1 ether; uint256 stakeStartTime = lastMudWithdrawal; uint256 firstTimeBonus = 0; if(lastMudWithdrawal == 0) { stakeStartTime = startCountTime; firstTimeBonus = 100 * 1 ether; } uint256 stakingTime = block.timestamp - stakeStartTime; withdrawAmount *= stakingTime; withdrawAmount /= 1 days; withdrawAmount += firstTimeBonus; return withdrawAmount; } function getWithdrawAmount(uint256 _t) public view returns (uint256) { uint256 lastMudWithdrawal = storageContract.getStorage(_t, LAST_MUD_WITHDRAWAL); return getWithdrawAmountWithTimestamp(_t, lastMudWithdrawal); } function getWithdrawTotal(uint256[] calldata ids) public view returns (uint256) { uint256 accum = 0; for(uint256 i = 0;i < ids.length;i++) { accum += getWithdrawAmount(ids[i]); } return accum; } function withdraw(uint256 _t) public nonReentrant { require(nftContract.ownerOf(_t) == msg.sender, "Not NFT owner"); uint256 lastMudWithdrawal = storageContract.getStorage(_t, LAST_MUD_WITHDRAWAL); storageContract.setStorage(_t, LAST_MUD_WITHDRAWAL, block.timestamp); uint256 withdrawAmount = getWithdrawAmountWithTimestamp(_t, lastMudWithdrawal); tokenContract.mint(msg.sender, withdrawAmount); } function withdrawAll(uint256[] calldata ids) public { for(uint256 i = 0;i < ids.length;i++) { withdraw(ids[i]); } } function renderAttributes(uint256 _t) external view returns (string memory) { string memory metadataString = ClayGen.renderAttributes(_t); uint256 mud = getWithdrawAmount(_t); metadataString = string( abi.encodePacked( metadataString, ',{"trait_type":"Mud","value":', ClayLibrary.toString(mud / 1 ether), '}' ) ); return string(abi.encodePacked("[", metadataString, "]")); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; library ClayLibrary { uint256 public constant SEED = 144261992486; struct Traits { uint8 base; uint8 ore; uint8 largeOre; } function getTiers() internal pure returns (uint16[][3] memory) { uint16[][3] memory TIERS = [ new uint16[](4), new uint16[](9), new uint16[](2) ]; //Base TIERS[0][0] = 4000; TIERS[0][1] = 3000; TIERS[0][2] = 2000; TIERS[0][3] = 1000; //Ore TIERS[1][0] = 5000; TIERS[1][1] = 1500; TIERS[1][2] = 1500; TIERS[1][3] = 750; TIERS[1][4] = 750; TIERS[1][5] = 200; TIERS[1][6] = 200; TIERS[1][7] = 90; TIERS[1][8] = 10; //LargeOre TIERS[2][0] = 7500; TIERS[2][1] = 2500; return TIERS; } function getBaseMultiplier(uint index) internal pure returns (uint256) { uint8[4] memory baseTiers = [ 10, 20, 30, 40 ]; return uint256(baseTiers[index]); } function getOreMultiplier(uint index) internal pure returns (uint256) { uint16[9] memory oreTiers = [ 1000, 2500, 3000, 3500, 4000, 1500, 2000, 6000, 10000 ]; return uint256(oreTiers[index]); } function getTraitIndex(string memory _hash, uint index) internal pure returns (uint8) { return parseInt(substring(_hash, index, index + 1)); } function getTraits(uint256 _t) internal pure returns (Traits memory) { string memory _hash = generateMetadataHash(_t); uint8 baseIndex = getTraitIndex(_hash, 0); uint8 oreIndex = getTraitIndex(_hash, 1); uint8 largeOreIndex = getTraitIndex(_hash, 2); return Traits(baseIndex, oreIndex, largeOreIndex); } function generateMetadataHash(uint256 _t) internal pure returns (string memory) { string memory currentHash = ""; for (uint8 i = 0; i < 3; i++) { uint16 _randinput = uint16( uint256(keccak256(abi.encodePacked(_t, SEED))) % 10000 ); currentHash = string( abi.encodePacked(currentHash, rarityGen(_randinput, i)) ); } return currentHash; } function rarityGen( uint256 _randinput, uint8 _rarityTier ) internal pure returns (string memory) { uint16[][3] memory TIERS = getTiers(); uint16 currentLowerBound = 0; for (uint8 i = 0; i < TIERS[_rarityTier].length; i++) { uint16 thisPercentage = TIERS[_rarityTier][i]; if ( _randinput >= currentLowerBound && _randinput < currentLowerBound + thisPercentage ) return toString(i); currentLowerBound = currentLowerBound + thisPercentage; } revert(); } 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(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function parseInt(string memory _a) internal pure returns (uint8 _parsedInt) { bytes memory bresult = bytes(_a); uint8 mint = 0; for (uint8 i = 0; i < bresult.length; i++) { if ( (uint8(uint8(bresult[i])) >= 48) && (uint8(uint8(bresult[i])) <= 57) ) { mint *= 10; mint += uint8(bresult[i]) - 48; } } return mint; } function substring( string memory str, uint256 startIndex, uint256 endIndex ) internal pure returns (string memory) { bytes memory strBytes = bytes(str); bytes memory result = new bytes(endIndex - startIndex); for (uint256 i = startIndex; i < endIndex; i++) { result[i - startIndex] = strBytes[i]; } return string(result); } function stringLength( string memory str ) internal pure returns (uint256) { bytes memory strBytes = bytes(str); return strBytes.length; } function isNotEmpty(string memory str) internal pure returns (bool) { return bytes(str).length > 0; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "./ClayLibrary.sol"; library ClayGen { struct Trait { string traitType; string traitName; } function getTiers() internal pure returns (uint16[][6] memory) { uint16[][6] memory TIERS = [ new uint16[](4), new uint16[](9), new uint16[](2), new uint16[](2), new uint16[](6), new uint16[](2) ]; //Base TIERS[0][0] = 4000; TIERS[0][1] = 3000; TIERS[0][2] = 2000; TIERS[0][3] = 1000; //Ore TIERS[1][0] = 5000; TIERS[1][1] = 1500; TIERS[1][2] = 1500; TIERS[1][3] = 750; TIERS[1][4] = 750; TIERS[1][5] = 200; TIERS[1][6] = 200; TIERS[1][7] = 90; TIERS[1][8] = 10; //HasEyes TIERS[2][0] = 8000; TIERS[2][1] = 2000; //HasMouth TIERS[3][0] = 9000; TIERS[3][1] = 1000; //BgColor TIERS[4][0] = 2000; TIERS[4][1] = 2000; TIERS[4][2] = 1500; TIERS[4][3] = 1500; TIERS[4][4] = 1500; TIERS[4][5] = 1500; //LargeOre TIERS[5][0] = 7500; TIERS[5][1] = 2500; return TIERS; } function getTraitTypes() internal pure returns (Trait[][6] memory) { Trait[][6] memory TIERS = [ new Trait[](4), new Trait[](9), new Trait[](2), new Trait[](2), new Trait[](6), new Trait[](2) ]; //Base TIERS[0][0] = Trait('Base', 'Clay'); TIERS[0][1] = Trait('Base', 'Stone'); TIERS[0][2] = Trait('Base', 'Metal'); TIERS[0][3] = Trait('Base', 'Obsidian'); //Ore TIERS[1][0] = Trait('Ore', 'None'); TIERS[1][1] = Trait('Ore', 'Grass'); TIERS[1][2] = Trait('Ore', 'Bronze'); TIERS[1][3] = Trait('Ore', 'Jade'); TIERS[1][4] = Trait('Ore', 'Gold'); TIERS[1][5] = Trait('Ore', 'Ruby'); TIERS[1][6] = Trait('Ore', 'Sapphire'); TIERS[1][7] = Trait('Ore', 'Amethyst'); TIERS[1][8] = Trait('Ore', 'Diamond'); //HasEyes TIERS[2][0] = Trait('HasEyes', 'No'); TIERS[2][1] = Trait('HasEyes', 'Yes'); //HasMouth TIERS[3][0] = Trait('HasMouth', 'No'); TIERS[3][1] = Trait('HasMouth', 'Yes'); //BgColor TIERS[4][0] = Trait('BgColor', 'Forest'); TIERS[4][1] = Trait('BgColor', 'Mountain'); TIERS[4][2] = Trait('BgColor', 'River'); TIERS[4][3] = Trait('BgColor', 'Field'); TIERS[4][4] = Trait('BgColor', 'Cave'); TIERS[4][5] = Trait('BgColor', 'Clouds'); //LargeOre TIERS[5][0] = Trait('LargeOre', 'No'); TIERS[5][1] = Trait('LargeOre', 'Yes'); return TIERS; } function generateMetadataHash(uint256 _t, uint256 _c) internal pure returns (string memory) { string memory currentHash = ""; for (uint8 i = 0; i < 6; i++) { uint16 _randinput = uint16( uint256(keccak256(abi.encodePacked(_t, _c))) % 10000 ); currentHash = string( abi.encodePacked(currentHash, rarityGen(_randinput, i)) ); } return currentHash; } function rarityGen(uint256 _randinput, uint8 _rarityTier) internal pure returns (string memory) { uint16[][6] memory TIERS = getTiers(); uint16 currentLowerBound = 0; for (uint8 i = 0; i < TIERS[_rarityTier].length; i++) { uint16 thisPercentage = TIERS[_rarityTier][i]; if ( _randinput >= currentLowerBound && _randinput < currentLowerBound + thisPercentage ) return ClayLibrary.toString(i); currentLowerBound = currentLowerBound + thisPercentage; } revert(); } function renderAttributesFromHash(string memory _hash, uint256 _t) internal pure returns (string memory) { uint256 seed = uint256(keccak256(abi.encodePacked(_t, ClayLibrary.SEED))) % 100000; Trait[][6] memory traitTypes = getTraitTypes(); string memory metadataString; for (uint8 i = 0; i < 6; i++) { uint8 thisTraitIndex = ClayLibrary.parseInt(ClayLibrary.substring(_hash, i, i + 1)); Trait memory trait = traitTypes[i][thisTraitIndex]; metadataString = string( abi.encodePacked( metadataString, '{"trait_type":"', trait.traitType, '","value":"', trait.traitName, '"}' ) ); metadataString = string(abi.encodePacked(metadataString, ",")); } metadataString = string( abi.encodePacked( metadataString, '{"trait_type":"Seed","value":"', ClayLibrary.toString(seed), '"}' ) ); return metadataString; } function renderAttributes(uint256 _t) internal pure returns (string memory) { string memory _hash = generateMetadataHash(_t, ClayLibrary.SEED); return renderAttributesFromHash(_hash, _t); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 200 }, "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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"LAST_MUD_WITHDRAWAL","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_t","type":"uint256"}],"name":"getWithdrawAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"getWithdrawTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_t","type":"uint256"}],"name":"renderAttributes","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContract","type":"address"}],"name":"setNFTContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_storageContract","type":"address"}],"name":"setStorageContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"setTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_t","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5061001a33610027565b6001805542608052610077565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b608051612bca62000093600039600061085a0152612bca6000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063afc050da11610071578063afc050da1461013d578063bbcd5bbe1461015d578063dc38b0a214610170578063e445dc4314610183578063efd4e0f614610196578063f2fde38b146101bf57600080fd5b806316e4f322146100b95780632e1a7d4d146100ce5780633ec32e84146100e1578063715018a6146101075780638da5cb5b1461010f578063a7ccabdf1461012a575b600080fd5b6100cc6100c7366004612694565b6101d2565b005b6100cc6100dc366004612709565b610215565b6100f46100ef366004612694565b6104a3565b6040519081526020015b60405180910390f35b6100cc6104f9565b6000546040516001600160a01b0390911681526020016100fe565b6100cc610138366004612737565b61052f565b61015061014b366004612709565b61057b565b6040516100fe9190612784565b6100cc61016b366004612737565b6105fd565b6100cc61017e366004612737565b610649565b6100f4610191366004612709565b610695565b61019e600181565b6040516fffffffffffffffffffffffffffffffff90911681526020016100fe565b6100cc6101cd366004612737565b610730565b60005b81811015610210576101fe8383838181106101f2576101f26127b7565b90506020020135610215565b80610208816127e3565b9150506101d5565b505050565b6002600154141561026d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556003546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b1580156102b657600080fd5b505afa1580156102ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ee91906127fe565b6001600160a01b0316146103345760405162461bcd60e51b815260206004820152600d60248201526c2737ba1027232a1037bbb732b960991b6044820152606401610264565b60025460405163b3e116c760e01b815260048101839052600160248201526000916001600160a01b03169063b3e116c79060440160206040518083038186803b15801561038057600080fd5b505afa158015610394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b8919061281b565b600254604051639715557760e01b815260048101859052600160248201524260448201529192506001600160a01b031690639715557790606401600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b50505050600061043083836107cb565b600480546040516340c10f1960e01b81523392810192909252602482018390529192506001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561048257600080fd5b505af1158015610496573d6000803e3d6000fd5b5050600180555050505050565b600080805b838110156104ef576104d18585838181106104c5576104c56127b7565b90506020020135610695565b6104db9083612834565b9150806104e7816127e3565b9150506104a8565b5090505b92915050565b6000546001600160a01b031633146105235760405162461bcd60e51b81526004016102649061284c565b61052d60006108c6565b565b6000546001600160a01b031633146105595760405162461bcd60e51b81526004016102649061284c565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600061058883610916565b9050600061059584610695565b9050816105b26105ad670de0b6b3a764000084612897565b610935565b6040516020016105c39291906128ab565b6040516020818303038152906040529150816040516020016105e59190612911565b60405160208183030381529060405292505050919050565b6000546001600160a01b031633146106275760405162461bcd60e51b81526004016102649061284c565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106735760405162461bcd60e51b81526004016102649061284c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460405163b3e116c760e01b8152600481018390526001602482015260009182916001600160a01b039091169063b3e116c79060440160206040518083038186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d919061281b565b905061072983826107cb565b9392505050565b6000546001600160a01b0316331461075a5760405162461bcd60e51b81526004016102649061284c565b6001600160a01b0381166107bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610264565b6107c8816108c6565b50565b6000806107d784610a3b565b90506000816040015160ff166001146107f15760016107f4565b60025b60ff16905060006103e88261080f856020015160ff16610ab8565b855161081d9060ff16610b30565b6108279190612945565b6108319190612945565b61083b9190612897565b61084d90670de0b6b3a7640000612945565b90508460008161088657507f0000000000000000000000000000000000000000000000000000000000000000905068056bc75e2d631000005b60006108928342612964565b905061089e8185612945565b93506108ad6201518085612897565b93506108b98285612834565b9998505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060600061092983642196af5026610b79565b90506107298184610c25565b6060816109595750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610983578061096d816127e3565b915061097c9050600a83612897565b915061095d565b60008167ffffffffffffffff81111561099e5761099e61297b565b6040519080825280601f01601f1916602001820160405280156109c8576020820181803683370190505b5090505b8415610a33576109dd600183612964565b91506109ea600a86612991565b6109f5906030612834565b60f81b818381518110610a0a57610a0a6127b7565b60200101906001600160f81b031916908160001a905350610a2c600a86612897565b94506109cc565b949350505050565b6040805160608101825260008082526020820181905291810182905290610a6183610d8c565b90506000610a70826000610e44565b90506000610a7f836001610e44565b90506000610a8e846002610e44565b6040805160608101825260ff95861681529385166020850152931692820192909252949350505050565b60408051610120810182526103e881526109c46020820152610bb891810191909152610dac6060820152610fa060808201526105dc60a08201526107d060c082015261177060e0820152612710610100820152600090808360098110610b2057610b206127b7565b602002015161ffff169392505050565b60408051608081018252600a815260146020820152601e9181019190915260286060820152600090808360048110610b6a57610b6a6127b7565b602002015160ff169392505050565b60408051602081019091526000808252606091905b60068160ff1610156104ef5760006127108686604051602001610bbb929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c610bde9190612991565b905082610bef8261ffff1684610e5e565b604051602001610c009291906129a5565b6040516020818303038152906040529250508080610c1d906129d4565b915050610b8e565b60606000620186a083642196af5026604051602001610c4e929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c610c719190612991565b90506000610c7d610f31565b9050606060005b60068160ff161015610d56576000610cb5610cb08960ff8516610ca88660016129f4565b60ff16611b47565b611c14565b90506000848360ff1660068110610cce57610cce6127b7565b60200201518260ff1681518110610ce757610ce76127b7565b602002602001015190508381600001518260200151604051602001610d0e93929190612a19565b604051602081830303815290604052935083604051602001610d309190612a9f565b604051602081830303815290604052935050508080610d4e906129d4565b915050610c84565b5080610d6184610935565b604051602001610d72929190612ac4565b60408051808303601f190181529190529695505050505050565b60408051602081019091526000808252606091905b60038160ff161015610e3d57600061271085642196af5026604051602001610dd3929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c610df69190612991565b905082610e078261ffff1684611cd2565b604051602001610e189291906129a5565b6040516020818303038152906040529250508080610e35906129d4565b915050610da1565b5092915050565b6000610729610cb08484610e59816001612834565b611b47565b60606000610e6a611d94565b90506000805b828560ff1660068110610e8557610e856127b7565b6020020151518160ff161015610f2b576000838660ff1660068110610eac57610eac6127b7565b60200201518260ff1681518110610ec557610ec56127b7565b602002602001015190508261ffff168710158015610eef5750610ee88184612b2b565b61ffff1687105b15610f0b57610f008260ff16610935565b9450505050506104f3565b610f158184612b2b565b9250508080610f23906129d4565b915050610e70565b50600080fd5b610f39612653565b60408051600460c0820181815261016083019093526000928291816020015b6040805180820190915260608082526020820152815260200190600190039081610f58579050508152604080516009808252610140820190925260209092019190816020015b6040805180820190915260608082526020820152815260200190600190039081610f9e5790505081526040805160028082526060820190925260209092019190816020015b6040805180820190915260608082526020820152815260200190600190039081610fe35790505081526040805160028082526060820190925260209092019190816020015b604080518082019091526060808252602082015281526020019060019003908161102857905050815260408051600680825260e0820190925260209092019190816020015b604080518082019091526060808252602082015281526020019060019003908161106d5790505081526040805160028082526060820190925260209092019190816020015b60408051808201909152606080825260208201528152602001906001900390816110b25750509052604080516080810182526004818301818152634261736560e01b606084015282528251808401909352825263436c617960e01b602080840191909152810191909152815180519293509091600090611134576111346127b7565b602090810291909101810191909152604080516080810182526004818301908152634261736560e01b606083015281528151808301909252600582526453746f6e6560d81b8284015291820152815180516001908110611196576111966127b7565b602090810291909101810191909152604080516080810182526004818301908152634261736560e01b606083015281528151808301909252600582526413595d185b60da1b82840152918201528151805160029081106111f8576111f86127b7565b602090810291909101810191909152604080516080810182526004818301908152634261736560e01b606083015281528151808301909252600882526727b139b4b234b0b760c11b828401529182015281518051600390811061125d5761125d6127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b60608301528152815180830190925260048252634e6f6e6560e01b828401529182015281600160200201516000815181106112c2576112c26127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526005825264477261737360d81b82840152918201528160016020020151600181518110611328576113286127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b606083015281528151808301909252600682526542726f6e7a6560d01b8284015291820152816001602002015160028151811061138f5761138f6127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b60608301528152815180830190925260048252634a61646560e01b828401529182015281600160200201516003815181106113f4576113f46127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b606083015281528151808301909252600482526311dbdb1960e21b82840152918201528160016020020151600481518110611459576114596127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b60608301528152815180830190925260048252635275627960e01b828401529182015281600160200201516005815181106114be576114be6127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526008825267536170706869726560c01b82840152918201528160016020020151600681518110611527576115276127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526008825267105b595d1a1e5cdd60c21b82840152918201528160016020020151600781518110611590576115906127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526007825266111a585b5bdb9960ca1b828401529182015281600160200201516008815181106115f8576115f86127b7565b60200260200101819052506040518060400160405280604051806040016040528060078152602001664861734579657360c81b8152508152602001604051806040016040528060028152602001614e6f60f01b81525081525081600260068110611664576116646127b7565b602002015160008151811061167b5761167b6127b7565b602090810291909101810191909152604080516080810182526007818301908152664861734579657360c81b606083015281528151808301909252600382526259657360e81b828401529182015281600260200201516001815181106116e3576116e36127b7565b60209081029190910181019190915260408051608081018252600881830190815267090c2e69adeeae8d60c31b60608301528152815180830190925260028252614e6f60f01b8284015291820152816003602002015160008151811061174b5761174b6127b7565b6020026020010181905250604051806040016040528060405180604001604052806008815260200167090c2e69adeeae8d60c31b81525081526020016040518060400160405280600381526020016259657360e81b815250815250816003600681106117b9576117b96127b7565b60200201516001815181106117d0576117d06127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b6060830152815281518083019092526006825265119bdc995cdd60d21b8284015291820152816004602002015160008151811061183b5761183b6127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b606083015281528151808301909252600882526726b7bab73a30b4b760c11b828401529182015281600460200201516001815181106118a8576118a86127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b60608301528152815180830190925260058252642934bb32b960d91b82840152918201528160046020020151600281518110611912576119126127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b6060830152815281518083019092526005825264119a595b1960da1b8284015291820152816004602002015160038151811061197c5761197c6127b7565b60200260200101819052506040518060400160405280604051806040016040528060078152602001662133a1b7b637b960c91b8152508152602001604051806040016040528060048152602001634361766560e01b815250815250816004600681106119ea576119ea6127b7565b6020020151600481518110611a0157611a016127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b6060830152815281518083019092526006825265436c6f75647360d01b82840152918201528160046020020151600581518110611a6c57611a6c6127b7565b602090810291909101810191909152604080516080810182526008818301908152674c617267654f726560c01b60608301528152815180830190925260028252614e6f60f01b828401529182015260a08201518051600090611ad057611ad06127b7565b602090810291909101810191909152604080516080810182526008818301908152674c617267654f726560c01b606083015281528151808301909252600382526259657360e81b828401529182015260a082015180516001908110611b3757611b376127b7565b6020908102919091010152919050565b6060836000611b568585612964565b67ffffffffffffffff811115611b6e57611b6e61297b565b6040519080825280601f01601f191660200182016040528015611b98576020820181803683370190505b509050845b84811015611c0a57828181518110611bb757611bb76127b7565b01602001516001600160f81b03191682611bd18884612964565b81518110611be157611be16127b7565b60200101906001600160f81b031916908160001a90535080611c02816127e3565b915050611b9d565b5095945050505050565b60008181805b82518160ff161015611cca576030838260ff1681518110611c3d57611c3d6127b7565b016020015160f81c10801590611c7057506039838260ff1681518110611c6557611c656127b7565b016020015160f81c11155b15611cb857611c80600a83612b48565b91506030838260ff1681518110611c9957611c996127b7565b0160200151611cab919060f81c612b71565b611cb590836129f4565b91505b80611cc2816129d4565b915050611c1a565b509392505050565b60606000611cde612331565b90506000805b828560ff1660038110611cf957611cf96127b7565b6020020151518160ff161015610f2b576000838660ff1660038110611d2057611d206127b7565b60200201518260ff1681518110611d3957611d396127b7565b602002602001015190508261ffff168710158015611d635750611d5c8184612b2b565b61ffff1687105b15611d7457610f008260ff16610935565b611d7e8184612b2b565b9250508080611d8c906129d4565b915050611ce4565b611d9c612653565b60408051600460c082018181526101608301909352600092829160e08301608080368337505050815260408051600980825261014082019092526020928301929091908201610120803683375050508152604080516002808252606082018352602093840193919290918301908036833750505081526040805160028082526060820183526020938401939192909183019080368337505050815260408051600680825260e08201909252602092830192909190820160c08036833750505081526040805160028082526060820183526020938401939192909183019080368337505050905280518051919250610fa091600090611e9c57611e9c6127b7565b61ffff90921660209283029190910190910152610bb88160006020020151600181518110611ecc57611ecc6127b7565b61ffff909216602092830291909101909101526107d08160006020020151600281518110611efc57611efc6127b7565b61ffff909216602092830291909101909101526103e88160006020020151600381518110611f2c57611f2c6127b7565b61ffff909216602092830291909101909101526113888160016020020151600081518110611f5c57611f5c6127b7565b61ffff909216602092830291909101909101526105dc8160016020020151600181518110611f8c57611f8c6127b7565b61ffff909216602092830291909101909101526105dc8160016020020151600281518110611fbc57611fbc6127b7565b61ffff909216602092830291909101909101526102ee8160016020020151600381518110611fec57611fec6127b7565b61ffff909216602092830291909101909101526102ee816001602002015160048151811061201c5761201c6127b7565b61ffff9092166020928302919091019091015260c8816001602002015160058151811061204b5761204b6127b7565b61ffff9092166020928302919091019091015260c8816001602002015160068151811061207a5761207a6127b7565b61ffff90921660209283029190910190910152605a81600160200201516007815181106120a9576120a96127b7565b61ffff90921660209283029190910190910152600a81600160200201516008815181106120d8576120d86127b7565b61ffff90921660209283029190910190910152611f408160026020020151600081518110612108576121086127b7565b61ffff909216602092830291909101909101526107d08160026020020151600181518110612138576121386127b7565b61ffff909216602092830291909101909101526123288160036020020151600081518110612168576121686127b7565b61ffff909216602092830291909101909101526103e88160036020020151600181518110612198576121986127b7565b61ffff909216602092830291909101909101526107d081600460200201516000815181106121c8576121c86127b7565b61ffff909216602092830291909101909101526107d081600460200201516001815181106121f8576121f86127b7565b61ffff909216602092830291909101909101526105dc8160046020020151600281518110612228576122286127b7565b61ffff909216602092830291909101909101526105dc8160046020020151600381518110612258576122586127b7565b61ffff909216602092830291909101909101526105dc8160046020020151600481518110612288576122886127b7565b61ffff909216602092830291909101909101526105dc81600460200201516005815181106122b8576122b86127b7565b61ffff90921660209283029190910190910152611d4c81600560200201516000815181106122e8576122e86127b7565b61ffff909216602092830291909101909101526109c48160055b6020020151600181518110612319576123196127b7565b61ffff90921660209283029190910190910152919050565b61233961267a565b6040805160046060820181815261010083019093526000928291608080840190803683375050508152604080516009808252610140820190925260209283019290919082016101208036833750505081526040805160028082526060820183526020938401939192909183019080368337505050905280518051919250610fa0916000906123c9576123c96127b7565b61ffff90921660209283029190910190910152610bb881600060200201516001815181106123f9576123f96127b7565b61ffff909216602092830291909101909101526107d08160006020020151600281518110612429576124296127b7565b61ffff909216602092830291909101909101526103e88160006020020151600381518110612459576124596127b7565b61ffff909216602092830291909101909101526113888160016020020151600081518110612489576124896127b7565b61ffff909216602092830291909101909101526105dc81600160200201516001815181106124b9576124b96127b7565b61ffff909216602092830291909101909101526105dc81600160200201516002815181106124e9576124e96127b7565b61ffff909216602092830291909101909101526102ee8160016020020151600381518110612519576125196127b7565b61ffff909216602092830291909101909101526102ee8160016020020151600481518110612549576125496127b7565b61ffff9092166020928302919091019091015260c88160016020020151600581518110612578576125786127b7565b61ffff9092166020928302919091019091015260c881600160200201516006815181106125a7576125a76127b7565b61ffff90921660209283029190910190910152605a81600160200201516007815181106125d6576125d66127b7565b61ffff90921660209283029190910190910152600a8160016020020151600881518110612605576126056127b7565b61ffff90921660209283029190910190910152611d4c8160026020020151600081518110612635576126356127b7565b61ffff909216602092830291909101909101526109c4816002612302565b6040518060c001604052806006905b60608152602001906001900390816126625790505090565b604080516060808201909252908152600260208201612662565b600080602083850312156126a757600080fd5b823567ffffffffffffffff808211156126bf57600080fd5b818501915085601f8301126126d357600080fd5b8135818111156126e257600080fd5b8660208260051b85010111156126f757600080fd5b60209290920196919550909350505050565b60006020828403121561271b57600080fd5b5035919050565b6001600160a01b03811681146107c857600080fd5b60006020828403121561274957600080fd5b813561072981612722565b60005b8381101561276f578181015183820152602001612757565b8381111561277e576000848401525b50505050565b60208152600082518060208401526127a3816040850160208701612754565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127f7576127f76127cd565b5060010190565b60006020828403121561281057600080fd5b815161072981612722565b60006020828403121561282d57600080fd5b5051919050565b60008219821115612847576128476127cd565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826128a6576128a6612881565b500490565b600083516128bd818460208801612754565b7f2c7b2274726169745f74797065223a224d7564222c2276616c7565223a00000090830190815283516128f781601d840160208801612754565b607d60f81b601d9290910191820152601e01949350505050565b605b60f81b81526000825161292d816001850160208701612754565b605d60f81b6001939091019283015250600201919050565b600081600019048311821515161561295f5761295f6127cd565b500290565b600082821015612976576129766127cd565b500390565b634e487b7160e01b600052604160045260246000fd5b6000826129a0576129a0612881565b500690565b600083516129b7818460208801612754565b8351908301906129cb818360208801612754565b01949350505050565b600060ff821660ff8114156129eb576129eb6127cd565b60010192915050565b600060ff821660ff84168060ff03821115612a1157612a116127cd565b019392505050565b60008451612a2b818460208901612754565b6e3d913a3930b4ba2fba3cb832911d1160891b9083019081528451612a5781600f840160208901612754565b6a1116113b30b63ab2911d1160a91b600f92909101918201528351612a8381601a840160208801612754565b61227d60f01b601a9290910191820152601c0195945050505050565b60008251612ab1818460208701612754565b600b60fa1b920191825250600101919050565b60008351612ad6818460208801612754565b7f7b2274726169745f74797065223a2253656564222c2276616c7565223a2200009083019081528351612b1081601e840160208801612754565b61227d60f01b601e9290910191820152602001949350505050565b600061ffff8083168185168083038211156129cb576129cb6127cd565b600060ff821660ff84168160ff0481118215151615612b6957612b696127cd565b029392505050565b600060ff821660ff841680821015612b8b57612b8b6127cd565b9003939250505056fea26469706673582212206793c02b2fcff45c9dcf19bbd0cae3586d0648dcdd92ef54acefaa00084c317a64736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063afc050da11610071578063afc050da1461013d578063bbcd5bbe1461015d578063dc38b0a214610170578063e445dc4314610183578063efd4e0f614610196578063f2fde38b146101bf57600080fd5b806316e4f322146100b95780632e1a7d4d146100ce5780633ec32e84146100e1578063715018a6146101075780638da5cb5b1461010f578063a7ccabdf1461012a575b600080fd5b6100cc6100c7366004612694565b6101d2565b005b6100cc6100dc366004612709565b610215565b6100f46100ef366004612694565b6104a3565b6040519081526020015b60405180910390f35b6100cc6104f9565b6000546040516001600160a01b0390911681526020016100fe565b6100cc610138366004612737565b61052f565b61015061014b366004612709565b61057b565b6040516100fe9190612784565b6100cc61016b366004612737565b6105fd565b6100cc61017e366004612737565b610649565b6100f4610191366004612709565b610695565b61019e600181565b6040516fffffffffffffffffffffffffffffffff90911681526020016100fe565b6100cc6101cd366004612737565b610730565b60005b81811015610210576101fe8383838181106101f2576101f26127b7565b90506020020135610215565b80610208816127e3565b9150506101d5565b505050565b6002600154141561026d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556003546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b1580156102b657600080fd5b505afa1580156102ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ee91906127fe565b6001600160a01b0316146103345760405162461bcd60e51b815260206004820152600d60248201526c2737ba1027232a1037bbb732b960991b6044820152606401610264565b60025460405163b3e116c760e01b815260048101839052600160248201526000916001600160a01b03169063b3e116c79060440160206040518083038186803b15801561038057600080fd5b505afa158015610394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b8919061281b565b600254604051639715557760e01b815260048101859052600160248201524260448201529192506001600160a01b031690639715557790606401600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b50505050600061043083836107cb565b600480546040516340c10f1960e01b81523392810192909252602482018390529192506001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561048257600080fd5b505af1158015610496573d6000803e3d6000fd5b5050600180555050505050565b600080805b838110156104ef576104d18585838181106104c5576104c56127b7565b90506020020135610695565b6104db9083612834565b9150806104e7816127e3565b9150506104a8565b5090505b92915050565b6000546001600160a01b031633146105235760405162461bcd60e51b81526004016102649061284c565b61052d60006108c6565b565b6000546001600160a01b031633146105595760405162461bcd60e51b81526004016102649061284c565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600061058883610916565b9050600061059584610695565b9050816105b26105ad670de0b6b3a764000084612897565b610935565b6040516020016105c39291906128ab565b6040516020818303038152906040529150816040516020016105e59190612911565b60405160208183030381529060405292505050919050565b6000546001600160a01b031633146106275760405162461bcd60e51b81526004016102649061284c565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106735760405162461bcd60e51b81526004016102649061284c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60025460405163b3e116c760e01b8152600481018390526001602482015260009182916001600160a01b039091169063b3e116c79060440160206040518083038186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d919061281b565b905061072983826107cb565b9392505050565b6000546001600160a01b0316331461075a5760405162461bcd60e51b81526004016102649061284c565b6001600160a01b0381166107bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610264565b6107c8816108c6565b50565b6000806107d784610a3b565b90506000816040015160ff166001146107f15760016107f4565b60025b60ff16905060006103e88261080f856020015160ff16610ab8565b855161081d9060ff16610b30565b6108279190612945565b6108319190612945565b61083b9190612897565b61084d90670de0b6b3a7640000612945565b90508460008161088657507f000000000000000000000000000000000000000000000000000000006270b6cd905068056bc75e2d631000005b60006108928342612964565b905061089e8185612945565b93506108ad6201518085612897565b93506108b98285612834565b9998505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060600061092983642196af5026610b79565b90506107298184610c25565b6060816109595750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610983578061096d816127e3565b915061097c9050600a83612897565b915061095d565b60008167ffffffffffffffff81111561099e5761099e61297b565b6040519080825280601f01601f1916602001820160405280156109c8576020820181803683370190505b5090505b8415610a33576109dd600183612964565b91506109ea600a86612991565b6109f5906030612834565b60f81b818381518110610a0a57610a0a6127b7565b60200101906001600160f81b031916908160001a905350610a2c600a86612897565b94506109cc565b949350505050565b6040805160608101825260008082526020820181905291810182905290610a6183610d8c565b90506000610a70826000610e44565b90506000610a7f836001610e44565b90506000610a8e846002610e44565b6040805160608101825260ff95861681529385166020850152931692820192909252949350505050565b60408051610120810182526103e881526109c46020820152610bb891810191909152610dac6060820152610fa060808201526105dc60a08201526107d060c082015261177060e0820152612710610100820152600090808360098110610b2057610b206127b7565b602002015161ffff169392505050565b60408051608081018252600a815260146020820152601e9181019190915260286060820152600090808360048110610b6a57610b6a6127b7565b602002015160ff169392505050565b60408051602081019091526000808252606091905b60068160ff1610156104ef5760006127108686604051602001610bbb929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c610bde9190612991565b905082610bef8261ffff1684610e5e565b604051602001610c009291906129a5565b6040516020818303038152906040529250508080610c1d906129d4565b915050610b8e565b60606000620186a083642196af5026604051602001610c4e929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c610c719190612991565b90506000610c7d610f31565b9050606060005b60068160ff161015610d56576000610cb5610cb08960ff8516610ca88660016129f4565b60ff16611b47565b611c14565b90506000848360ff1660068110610cce57610cce6127b7565b60200201518260ff1681518110610ce757610ce76127b7565b602002602001015190508381600001518260200151604051602001610d0e93929190612a19565b604051602081830303815290604052935083604051602001610d309190612a9f565b604051602081830303815290604052935050508080610d4e906129d4565b915050610c84565b5080610d6184610935565b604051602001610d72929190612ac4565b60408051808303601f190181529190529695505050505050565b60408051602081019091526000808252606091905b60038160ff161015610e3d57600061271085642196af5026604051602001610dd3929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c610df69190612991565b905082610e078261ffff1684611cd2565b604051602001610e189291906129a5565b6040516020818303038152906040529250508080610e35906129d4565b915050610da1565b5092915050565b6000610729610cb08484610e59816001612834565b611b47565b60606000610e6a611d94565b90506000805b828560ff1660068110610e8557610e856127b7565b6020020151518160ff161015610f2b576000838660ff1660068110610eac57610eac6127b7565b60200201518260ff1681518110610ec557610ec56127b7565b602002602001015190508261ffff168710158015610eef5750610ee88184612b2b565b61ffff1687105b15610f0b57610f008260ff16610935565b9450505050506104f3565b610f158184612b2b565b9250508080610f23906129d4565b915050610e70565b50600080fd5b610f39612653565b60408051600460c0820181815261016083019093526000928291816020015b6040805180820190915260608082526020820152815260200190600190039081610f58579050508152604080516009808252610140820190925260209092019190816020015b6040805180820190915260608082526020820152815260200190600190039081610f9e5790505081526040805160028082526060820190925260209092019190816020015b6040805180820190915260608082526020820152815260200190600190039081610fe35790505081526040805160028082526060820190925260209092019190816020015b604080518082019091526060808252602082015281526020019060019003908161102857905050815260408051600680825260e0820190925260209092019190816020015b604080518082019091526060808252602082015281526020019060019003908161106d5790505081526040805160028082526060820190925260209092019190816020015b60408051808201909152606080825260208201528152602001906001900390816110b25750509052604080516080810182526004818301818152634261736560e01b606084015282528251808401909352825263436c617960e01b602080840191909152810191909152815180519293509091600090611134576111346127b7565b602090810291909101810191909152604080516080810182526004818301908152634261736560e01b606083015281528151808301909252600582526453746f6e6560d81b8284015291820152815180516001908110611196576111966127b7565b602090810291909101810191909152604080516080810182526004818301908152634261736560e01b606083015281528151808301909252600582526413595d185b60da1b82840152918201528151805160029081106111f8576111f86127b7565b602090810291909101810191909152604080516080810182526004818301908152634261736560e01b606083015281528151808301909252600882526727b139b4b234b0b760c11b828401529182015281518051600390811061125d5761125d6127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b60608301528152815180830190925260048252634e6f6e6560e01b828401529182015281600160200201516000815181106112c2576112c26127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526005825264477261737360d81b82840152918201528160016020020151600181518110611328576113286127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b606083015281528151808301909252600682526542726f6e7a6560d01b8284015291820152816001602002015160028151811061138f5761138f6127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b60608301528152815180830190925260048252634a61646560e01b828401529182015281600160200201516003815181106113f4576113f46127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b606083015281528151808301909252600482526311dbdb1960e21b82840152918201528160016020020151600481518110611459576114596127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b60608301528152815180830190925260048252635275627960e01b828401529182015281600160200201516005815181106114be576114be6127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526008825267536170706869726560c01b82840152918201528160016020020151600681518110611527576115276127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526008825267105b595d1a1e5cdd60c21b82840152918201528160016020020151600781518110611590576115906127b7565b602090810291909101810191909152604080516080810182526003818301908152624f726560e81b6060830152815281518083019092526007825266111a585b5bdb9960ca1b828401529182015281600160200201516008815181106115f8576115f86127b7565b60200260200101819052506040518060400160405280604051806040016040528060078152602001664861734579657360c81b8152508152602001604051806040016040528060028152602001614e6f60f01b81525081525081600260068110611664576116646127b7565b602002015160008151811061167b5761167b6127b7565b602090810291909101810191909152604080516080810182526007818301908152664861734579657360c81b606083015281528151808301909252600382526259657360e81b828401529182015281600260200201516001815181106116e3576116e36127b7565b60209081029190910181019190915260408051608081018252600881830190815267090c2e69adeeae8d60c31b60608301528152815180830190925260028252614e6f60f01b8284015291820152816003602002015160008151811061174b5761174b6127b7565b6020026020010181905250604051806040016040528060405180604001604052806008815260200167090c2e69adeeae8d60c31b81525081526020016040518060400160405280600381526020016259657360e81b815250815250816003600681106117b9576117b96127b7565b60200201516001815181106117d0576117d06127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b6060830152815281518083019092526006825265119bdc995cdd60d21b8284015291820152816004602002015160008151811061183b5761183b6127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b606083015281528151808301909252600882526726b7bab73a30b4b760c11b828401529182015281600460200201516001815181106118a8576118a86127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b60608301528152815180830190925260058252642934bb32b960d91b82840152918201528160046020020151600281518110611912576119126127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b6060830152815281518083019092526005825264119a595b1960da1b8284015291820152816004602002015160038151811061197c5761197c6127b7565b60200260200101819052506040518060400160405280604051806040016040528060078152602001662133a1b7b637b960c91b8152508152602001604051806040016040528060048152602001634361766560e01b815250815250816004600681106119ea576119ea6127b7565b6020020151600481518110611a0157611a016127b7565b602090810291909101810191909152604080516080810182526007818301908152662133a1b7b637b960c91b6060830152815281518083019092526006825265436c6f75647360d01b82840152918201528160046020020151600581518110611a6c57611a6c6127b7565b602090810291909101810191909152604080516080810182526008818301908152674c617267654f726560c01b60608301528152815180830190925260028252614e6f60f01b828401529182015260a08201518051600090611ad057611ad06127b7565b602090810291909101810191909152604080516080810182526008818301908152674c617267654f726560c01b606083015281528151808301909252600382526259657360e81b828401529182015260a082015180516001908110611b3757611b376127b7565b6020908102919091010152919050565b6060836000611b568585612964565b67ffffffffffffffff811115611b6e57611b6e61297b565b6040519080825280601f01601f191660200182016040528015611b98576020820181803683370190505b509050845b84811015611c0a57828181518110611bb757611bb76127b7565b01602001516001600160f81b03191682611bd18884612964565b81518110611be157611be16127b7565b60200101906001600160f81b031916908160001a90535080611c02816127e3565b915050611b9d565b5095945050505050565b60008181805b82518160ff161015611cca576030838260ff1681518110611c3d57611c3d6127b7565b016020015160f81c10801590611c7057506039838260ff1681518110611c6557611c656127b7565b016020015160f81c11155b15611cb857611c80600a83612b48565b91506030838260ff1681518110611c9957611c996127b7565b0160200151611cab919060f81c612b71565b611cb590836129f4565b91505b80611cc2816129d4565b915050611c1a565b509392505050565b60606000611cde612331565b90506000805b828560ff1660038110611cf957611cf96127b7565b6020020151518160ff161015610f2b576000838660ff1660038110611d2057611d206127b7565b60200201518260ff1681518110611d3957611d396127b7565b602002602001015190508261ffff168710158015611d635750611d5c8184612b2b565b61ffff1687105b15611d7457610f008260ff16610935565b611d7e8184612b2b565b9250508080611d8c906129d4565b915050611ce4565b611d9c612653565b60408051600460c082018181526101608301909352600092829160e08301608080368337505050815260408051600980825261014082019092526020928301929091908201610120803683375050508152604080516002808252606082018352602093840193919290918301908036833750505081526040805160028082526060820183526020938401939192909183019080368337505050815260408051600680825260e08201909252602092830192909190820160c08036833750505081526040805160028082526060820183526020938401939192909183019080368337505050905280518051919250610fa091600090611e9c57611e9c6127b7565b61ffff90921660209283029190910190910152610bb88160006020020151600181518110611ecc57611ecc6127b7565b61ffff909216602092830291909101909101526107d08160006020020151600281518110611efc57611efc6127b7565b61ffff909216602092830291909101909101526103e88160006020020151600381518110611f2c57611f2c6127b7565b61ffff909216602092830291909101909101526113888160016020020151600081518110611f5c57611f5c6127b7565b61ffff909216602092830291909101909101526105dc8160016020020151600181518110611f8c57611f8c6127b7565b61ffff909216602092830291909101909101526105dc8160016020020151600281518110611fbc57611fbc6127b7565b61ffff909216602092830291909101909101526102ee8160016020020151600381518110611fec57611fec6127b7565b61ffff909216602092830291909101909101526102ee816001602002015160048151811061201c5761201c6127b7565b61ffff9092166020928302919091019091015260c8816001602002015160058151811061204b5761204b6127b7565b61ffff9092166020928302919091019091015260c8816001602002015160068151811061207a5761207a6127b7565b61ffff90921660209283029190910190910152605a81600160200201516007815181106120a9576120a96127b7565b61ffff90921660209283029190910190910152600a81600160200201516008815181106120d8576120d86127b7565b61ffff90921660209283029190910190910152611f408160026020020151600081518110612108576121086127b7565b61ffff909216602092830291909101909101526107d08160026020020151600181518110612138576121386127b7565b61ffff909216602092830291909101909101526123288160036020020151600081518110612168576121686127b7565b61ffff909216602092830291909101909101526103e88160036020020151600181518110612198576121986127b7565b61ffff909216602092830291909101909101526107d081600460200201516000815181106121c8576121c86127b7565b61ffff909216602092830291909101909101526107d081600460200201516001815181106121f8576121f86127b7565b61ffff909216602092830291909101909101526105dc8160046020020151600281518110612228576122286127b7565b61ffff909216602092830291909101909101526105dc8160046020020151600381518110612258576122586127b7565b61ffff909216602092830291909101909101526105dc8160046020020151600481518110612288576122886127b7565b61ffff909216602092830291909101909101526105dc81600460200201516005815181106122b8576122b86127b7565b61ffff90921660209283029190910190910152611d4c81600560200201516000815181106122e8576122e86127b7565b61ffff909216602092830291909101909101526109c48160055b6020020151600181518110612319576123196127b7565b61ffff90921660209283029190910190910152919050565b61233961267a565b6040805160046060820181815261010083019093526000928291608080840190803683375050508152604080516009808252610140820190925260209283019290919082016101208036833750505081526040805160028082526060820183526020938401939192909183019080368337505050905280518051919250610fa0916000906123c9576123c96127b7565b61ffff90921660209283029190910190910152610bb881600060200201516001815181106123f9576123f96127b7565b61ffff909216602092830291909101909101526107d08160006020020151600281518110612429576124296127b7565b61ffff909216602092830291909101909101526103e88160006020020151600381518110612459576124596127b7565b61ffff909216602092830291909101909101526113888160016020020151600081518110612489576124896127b7565b61ffff909216602092830291909101909101526105dc81600160200201516001815181106124b9576124b96127b7565b61ffff909216602092830291909101909101526105dc81600160200201516002815181106124e9576124e96127b7565b61ffff909216602092830291909101909101526102ee8160016020020151600381518110612519576125196127b7565b61ffff909216602092830291909101909101526102ee8160016020020151600481518110612549576125496127b7565b61ffff9092166020928302919091019091015260c88160016020020151600581518110612578576125786127b7565b61ffff9092166020928302919091019091015260c881600160200201516006815181106125a7576125a76127b7565b61ffff90921660209283029190910190910152605a81600160200201516007815181106125d6576125d66127b7565b61ffff90921660209283029190910190910152600a8160016020020151600881518110612605576126056127b7565b61ffff90921660209283029190910190910152611d4c8160026020020151600081518110612635576126356127b7565b61ffff909216602092830291909101909101526109c4816002612302565b6040518060c001604052806006905b60608152602001906001900390816126625790505090565b604080516060808201909252908152600260208201612662565b600080602083850312156126a757600080fd5b823567ffffffffffffffff808211156126bf57600080fd5b818501915085601f8301126126d357600080fd5b8135818111156126e257600080fd5b8660208260051b85010111156126f757600080fd5b60209290920196919550909350505050565b60006020828403121561271b57600080fd5b5035919050565b6001600160a01b03811681146107c857600080fd5b60006020828403121561274957600080fd5b813561072981612722565b60005b8381101561276f578181015183820152602001612757565b8381111561277e576000848401525b50505050565b60208152600082518060208401526127a3816040850160208701612754565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127f7576127f76127cd565b5060010190565b60006020828403121561281057600080fd5b815161072981612722565b60006020828403121561282d57600080fd5b5051919050565b60008219821115612847576128476127cd565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826128a6576128a6612881565b500490565b600083516128bd818460208801612754565b7f2c7b2274726169745f74797065223a224d7564222c2276616c7565223a00000090830190815283516128f781601d840160208801612754565b607d60f81b601d9290910191820152601e01949350505050565b605b60f81b81526000825161292d816001850160208701612754565b605d60f81b6001939091019283015250600201919050565b600081600019048311821515161561295f5761295f6127cd565b500290565b600082821015612976576129766127cd565b500390565b634e487b7160e01b600052604160045260246000fd5b6000826129a0576129a0612881565b500690565b600083516129b7818460208801612754565b8351908301906129cb818360208801612754565b01949350505050565b600060ff821660ff8114156129eb576129eb6127cd565b60010192915050565b600060ff821660ff84168060ff03821115612a1157612a116127cd565b019392505050565b60008451612a2b818460208901612754565b6e3d913a3930b4ba2fba3cb832911d1160891b9083019081528451612a5781600f840160208901612754565b6a1116113b30b63ab2911d1160a91b600f92909101918201528351612a8381601a840160208801612754565b61227d60f01b601a9290910191820152601c0195945050505050565b60008251612ab1818460208701612754565b600b60fa1b920191825250600101919050565b60008351612ad6818460208801612754565b7f7b2274726169745f74797065223a2253656564222c2276616c7565223a2200009083019081528351612b1081601e840160208801612754565b61227d60f01b601e9290910191820152602001949350505050565b600061ffff8083168185168083038211156129cb576129cb6127cd565b600060ff821660ff84168160ff0481118215151615612b6957612b696127cd565b029392505050565b600060ff821660ff841680821015612b8b57612b8b6127cd565b9003939250505056fea26469706673582212206793c02b2fcff45c9dcf19bbd0cae3586d0648dcdd92ef54acefaa00084c317a64736f6c63430008090033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.