Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ZoraCreatorFixedPriceSaleStrategy
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 5000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {Enjoy} from "_imagine/mint/Enjoy.sol"; import {IMinter1155} from "../../interfaces/IMinter1155.sol"; import {ICreatorCommands} from "../../interfaces/ICreatorCommands.sol"; import {SaleStrategy} from "../SaleStrategy.sol"; import {SaleCommandHelper} from "../utils/SaleCommandHelper.sol"; import {LimitedMintPerAddress} from "../utils/LimitedMintPerAddress.sol"; /* ░░░░░░░░░░░░░░ ░░▒▒░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░ ░▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░ ░▓▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░░ ░▓▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░░░ ░▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░▓▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░ ░▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░ ░░▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░ ░░▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░▒▒▒▒▒░░ ░░▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░░▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░ OURS TRULY, github.com/ourzora/zora-1155-contracts */ /// @title ZoraCreatorFixedPriceSaleStrategy /// @notice A sale strategy for ZoraCreator that allows for fixed price sales over a given time period /// @author @iainnash / @tbtstl contract ZoraCreatorFixedPriceSaleStrategy is Enjoy, SaleStrategy, LimitedMintPerAddress { struct SalesConfig { /// @notice Unix timestamp for the sale start uint64 saleStart; /// @notice Unix timestamp for the sale end uint64 saleEnd; /// @notice Max tokens that can be minted for an address, 0 if unlimited uint64 maxTokensPerAddress; /// @notice Price per token in eth wei uint96 pricePerToken; /// @notice Funds recipient (0 if no different funds recipient than the contract global) address fundsRecipient; } // target -> tokenId -> settings mapping(address => mapping(uint256 => SalesConfig)) internal salesConfigs; using SaleCommandHelper for ICreatorCommands.CommandSet; function contractURI() external pure override returns (string memory) { return "https://github.com/ourzora/zora-1155-contracts/"; } /// @notice The name of the sale strategy function contractName() external pure override returns (string memory) { return "Fixed Price Sale Strategy"; } /// @notice The version of the sale strategy function contractVersion() external pure override returns (string memory) { return "1.1.0"; } error WrongValueSent(); error SaleEnded(); error SaleHasNotStarted(); event SaleSet(address indexed mediaContract, uint256 indexed tokenId, SalesConfig salesConfig); event MintComment(address indexed sender, address indexed tokenContract, uint256 indexed tokenId, uint256 quantity, string comment); /// @notice Compiles and returns the commands needed to mint a token using this sales strategy /// @param tokenId The token ID to mint /// @param quantity The quantity of tokens to mint /// @param ethValueSent The amount of ETH sent with the transaction /// @param minterArguments The arguments passed to the minter, which should be the address to mint to function requestMint( address, uint256 tokenId, uint256 quantity, uint256 ethValueSent, bytes calldata minterArguments ) external returns (ICreatorCommands.CommandSet memory commands) { address mintTo; string memory comment = ""; if (minterArguments.length == 32) { mintTo = abi.decode(minterArguments, (address)); } else { (mintTo, comment) = abi.decode(minterArguments, (address, string)); } SalesConfig storage config = salesConfigs[msg.sender][tokenId]; // If sales config does not exist this first check will always fail. // Check sale end if (block.timestamp > config.saleEnd) { revert SaleEnded(); } // Check sale start if (block.timestamp < config.saleStart) { revert SaleHasNotStarted(); } // Check value sent if (config.pricePerToken * quantity != ethValueSent) { revert WrongValueSent(); } // Check minted per address limit if (config.maxTokensPerAddress > 0) { _requireMintNotOverLimitAndUpdate(config.maxTokensPerAddress, quantity, msg.sender, tokenId, mintTo); } bool shouldTransferFunds = config.fundsRecipient != address(0); commands.setSize(shouldTransferFunds ? 2 : 1); // Mint command commands.mint(mintTo, tokenId, quantity); if (bytes(comment).length > 0) { emit MintComment(mintTo, msg.sender, tokenId, quantity, comment); } // Should transfer funds if funds recipient is set to a non-default address if (shouldTransferFunds) { commands.transfer(config.fundsRecipient, ethValueSent); } } /// @notice Sets the sale config for a given token function setSale(uint256 tokenId, SalesConfig memory salesConfig) external { salesConfigs[msg.sender][tokenId] = salesConfig; // Emit event emit SaleSet(msg.sender, tokenId, salesConfig); } /// @notice Deletes the sale config for a given token function resetSale(uint256 tokenId) external override { delete salesConfigs[msg.sender][tokenId]; // Deleted sale emit event emit SaleSet(msg.sender, tokenId, salesConfigs[msg.sender][tokenId]); } /// @notice Returns the sale config for a given token function sale(address tokenContract, uint256 tokenId) external view returns (SalesConfig memory) { return salesConfigs[tokenContract][tokenId]; } function supportsInterface(bytes4 interfaceId) public pure virtual override(LimitedMintPerAddress, SaleStrategy) returns (bool) { return super.supportsInterface(interfaceId) || LimitedMintPerAddress.supportsInterface(interfaceId) || SaleStrategy.supportsInterface(interfaceId); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /* ░░░░░░░░░░░░░░ ░░▒▒░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░ ░░▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░ ░▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░ ░▓▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░░ ░▓▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░░░ ░▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░▓▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░ ░▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░ ░░▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░ ░░▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░▒▒▒▒▒░░ ░░▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ ░░▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░ OURS TRULY, */ interface Enjoy { }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/interfaces/IERC165Upgradeable.sol"; import {ICreatorCommands} from "./ICreatorCommands.sol"; /// @notice Minter standard interface /// @dev Minters need to confirm to the ERC165 selector of type(IMinter1155).interfaceId interface IMinter1155 is IERC165Upgradeable { function requestMint( address sender, uint256 tokenId, uint256 quantity, uint256 ethValueSent, bytes calldata minterArguments ) external returns (ICreatorCommands.CommandSet memory commands); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /// @notice Creator Commands used by minter modules passed back to the main modules interface ICreatorCommands { /// @notice This enum is used to define supported creator action types. /// This can change in the future enum CreatorActions { // No operation - also the default for mintings that may not return a command NO_OP, // Send ether SEND_ETH, // Mint operation MINT } /// @notice This command is for struct Command { // Method for operation CreatorActions method; // Arguments used for this operation bytes args; } /// @notice This command set is returned from the minter back to the user struct CommandSet { Command[] commands; uint256 at; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/interfaces/IERC165Upgradeable.sol"; import {IMinter1155} from "../interfaces/IMinter1155.sol"; import {IContractMetadata} from "../interfaces/IContractMetadata.sol"; import {IVersionedContract} from "../interfaces/IVersionedContract.sol"; import {ICreatorCommands} from "../interfaces/ICreatorCommands.sol"; import {SaleCommandHelper} from "./utils/SaleCommandHelper.sol"; /// @notice Sales Strategy Helper contract template on top of IMinter1155 /// @author @iainnash / @tbtstl abstract contract SaleStrategy is IMinter1155, IVersionedContract, IContractMetadata { /// @notice This function resets the sales configuration for a given tokenId and contract. /// @dev This function is intentioned to be called directly from the affected sales contract function resetSale(uint256 tokenId) external virtual; function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == type(IMinter1155).interfaceId || interfaceId == type(IERC165Upgradeable).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {ICreatorCommands} from "../../interfaces/ICreatorCommands.sol"; /// @title SaleCommandHelper /// @notice Helper library for creating commands for the sale contract /// @author @iainnash / @tbtstl library SaleCommandHelper { /// @notice Sets the size of commands and initializes command array. Empty entries are skipped by the resolver. /// @dev Beware: this removes all previous command entries from memory /// @param commandSet command set struct storage. /// @param size size to set for the new struct function setSize(ICreatorCommands.CommandSet memory commandSet, uint256 size) internal pure { commandSet.commands = new ICreatorCommands.Command[](size); } /// @notice Creates a command to mint a token /// @param commandSet The command set to add the command to /// @param to The address to mint to /// @param tokenId The token ID to mint /// @param quantity The quantity of tokens to mint function mint(ICreatorCommands.CommandSet memory commandSet, address to, uint256 tokenId, uint256 quantity) internal pure { unchecked { commandSet.commands[commandSet.at++] = ICreatorCommands.Command({ method: ICreatorCommands.CreatorActions.MINT, args: abi.encode(to, tokenId, quantity) }); } } /// @notice Creates a command to transfer ETH /// @param commandSet The command set to add the command to /// @param to The address to transfer to /// @param amount The amount of ETH to transfer function transfer(ICreatorCommands.CommandSet memory commandSet, address to, uint256 amount) internal pure { unchecked { commandSet.commands[commandSet.at++] = ICreatorCommands.Command({method: ICreatorCommands.CreatorActions.SEND_ETH, args: abi.encode(to, amount)}); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {ILimitedMintPerAddress} from "../../interfaces/ILimitedMintPerAddress.sol"; contract LimitedMintPerAddress is ILimitedMintPerAddress { /// @notice Storage for slot to check user mints /// @notice target contract -> tokenId -> minter user -> numberMinted /// @dev No gap or stroage interface since this is used within non-upgradeable contracts mapping(address => mapping(uint256 => mapping(address => uint256))) internal mintedPerAddress; function getMintedPerWallet(address tokenContract, uint256 tokenId, address wallet) external view returns (uint256) { return mintedPerAddress[tokenContract][tokenId][wallet]; } function _requireMintNotOverLimitAndUpdate(uint256 limit, uint256 numRequestedMint, address tokenContract, uint256 tokenId, address wallet) internal { mintedPerAddress[tokenContract][tokenId][wallet] += numRequestedMint; if (mintedPerAddress[tokenContract][tokenId][wallet] > limit) { revert UserExceedsMintLimit(wallet, limit, mintedPerAddress[tokenContract][tokenId][wallet]); } } function supportsInterface(bytes4 interfaceId) public pure virtual override returns (bool) { return interfaceId == type(ILimitedMintPerAddress).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165Upgradeable.sol";
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IContractMetadata { /// @notice Contract name returns the pretty contract name function contractName() external returns (string memory); /// @notice Contract URI returns the uri for more information about the given contract function contractURI() external returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IVersionedContract { function contractVersion() external returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import {IERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/interfaces/IERC165Upgradeable.sol"; interface ILimitedMintPerAddress is IERC165Upgradeable { error UserExceedsMintLimit(address user, uint256 limit, uint256 requestedAmount); function getMintedPerWallet(address token, uint256 tokenId, address wallet) external view returns (uint256); }
// 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 IERC165Upgradeable { /** * @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); }
{ "remappings": [ "@openzeppelin/=node_modules/@openzeppelin/", "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/", "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/", "_imagine/=_imagine/", "ds-test/=node_modules/ds-test/src/", "forge-std/=node_modules/forge-std/src/", "mint/=_imagine/mint/" ], "optimizer": { "enabled": true, "runs": 5000 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "viaIR": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"SaleEnded","type":"error"},{"inputs":[],"name":"SaleHasNotStarted","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"name":"UserExceedsMintLimit","type":"error"},{"inputs":[],"name":"WrongValueSent","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"string","name":"comment","type":"string"}],"name":"MintComment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"mediaContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"uint64","name":"saleStart","type":"uint64"},{"internalType":"uint64","name":"saleEnd","type":"uint64"},{"internalType":"uint64","name":"maxTokensPerAddress","type":"uint64"},{"internalType":"uint96","name":"pricePerToken","type":"uint96"},{"internalType":"address","name":"fundsRecipient","type":"address"}],"indexed":false,"internalType":"struct ZoraCreatorFixedPriceSaleStrategy.SalesConfig","name":"salesConfig","type":"tuple"}],"name":"SaleSet","type":"event"},{"inputs":[],"name":"contractName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"getMintedPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"ethValueSent","type":"uint256"},{"internalType":"bytes","name":"minterArguments","type":"bytes"}],"name":"requestMint","outputs":[{"components":[{"components":[{"internalType":"enum ICreatorCommands.CreatorActions","name":"method","type":"uint8"},{"internalType":"bytes","name":"args","type":"bytes"}],"internalType":"struct ICreatorCommands.Command[]","name":"commands","type":"tuple[]"},{"internalType":"uint256","name":"at","type":"uint256"}],"internalType":"struct ICreatorCommands.CommandSet","name":"commands","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"resetSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"sale","outputs":[{"components":[{"internalType":"uint64","name":"saleStart","type":"uint64"},{"internalType":"uint64","name":"saleEnd","type":"uint64"},{"internalType":"uint64","name":"maxTokensPerAddress","type":"uint64"},{"internalType":"uint96","name":"pricePerToken","type":"uint96"},{"internalType":"address","name":"fundsRecipient","type":"address"}],"internalType":"struct ZoraCreatorFixedPriceSaleStrategy.SalesConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"uint64","name":"saleStart","type":"uint64"},{"internalType":"uint64","name":"saleEnd","type":"uint64"},{"internalType":"uint64","name":"maxTokensPerAddress","type":"uint64"},{"internalType":"uint96","name":"pricePerToken","type":"uint96"},{"internalType":"address","name":"fundsRecipient","type":"address"}],"internalType":"struct ZoraCreatorFixedPriceSaleStrategy.SalesConfig","name":"salesConfig","type":"tuple"}],"name":"setSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
6080806040523461001657610f88908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610d1f5750806319b45c4f14610c6157806334db7eee14610a44578063611efc09146109115780636890e5b31461023b57806375d0c0dc146101dd5780637b49ff2c1461016d578063a0a8e4601461010f5763e8a3d4851461008257600080fd5b3461010a57600060031936011261010a576101066040516100a281610e34565b602f81527f68747470733a2f2f6769746875622e636f6d2f6f75727a6f72612f7a6f72612d60208201527f313135352d636f6e7472616374732f00000000000000000000000000000000006040820152604051918291602083526020830190610e96565b0390f35b600080fd5b3461010a57600060031936011261010a5761010660405161012f81610e18565b600581527f312e312e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610e96565b3461010a57606060031936011261010a57610186610e73565b6044359073ffffffffffffffffffffffffffffffffffffffff9081831680930361010a5716600052600060205260406000206024356000526020526040600020906000526020526020604060002054604051908152f35b3461010a57600060031936011261010a576101066040516101fd81610e18565b601981527f46697865642050726963652053616c65205374726174656779000000000000006020820152604051918291602083526020830190610e96565b3461010a5760a060031936011261010a57610254610e73565b5060843567ffffffffffffffff811161010a573660238201121561010a57806004013567ffffffffffffffff811161010a576024820181830192602484019336851161010a57604051946102a786610e18565b6060865260006020870152604051602081019080821067ffffffffffffffff8311176108e25760209160405260008152951460001461083f575090602091031261010a5761030973ffffffffffffffffffffffffffffffffffffffff91610ed6565b16905b33600052600160205260406000206024356000526020526040600020805467ffffffffffffffff8160401c1642116108155767ffffffffffffffff811642106107eb576bffffffffffffffffffffffff600183015416604435810290808204604435149015171561079257606435036107c15767ffffffffffffffff8160801c1661063e575b506001015460601c9182156106355760ff60025b16601f196103cc6103b683610ef7565b926103c46040519485610e50565b808452610ef7565b0160005b818110610610575050845261046460405161042d8161041f604435602435876020850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b03601f198101835282610e50565b6040519061043a82610e18565b600282526020820152855160208701519160018301602089015261045e8383610f0f565b52610f0f565b5081516105aa575b505080610550575b50604051602081526060810182519060406020840152815180915260808301602060808360051b86010193019160005b8181106104bb576020870151604087015285850386f35b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80868203018452845190815191600383101561052157610515826040602080959460019782965201519181858201520190610e96565b960194019291016104a4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6105a39060405190602082015260643560408201526040815261057281610e34565b6040519061057f82610e18565b600182526020820152825160208401519160018301602086015261045e8383610f0f565b5081610474565b604051916044358352604060208401527fb9490aee663998179ad13f9e1c1eb6189c71ad1a9ec87f33ad2766f98d9a268a602435938061060673ffffffffffffffffffffffffffffffffffffffff339616946040830190610e96565b0390a4828061046c565b60209060405161061f81610e18565b60008152606083820152828286010152016103d0565b60ff60016103a6565b3360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff85166000526020526040600020805460443581018111610792576044350190553360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff851660005260205267ffffffffffffffff8160801c1660406000205411156103925767ffffffffffffffff9061078e853360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054906040519485947fe2d9156400000000000000000000000000000000000000000000000000000000865260801c16906004850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517f2f4613eb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fe8c4db82000000000000000000000000000000000000000000000000000000008152fd5b60046040517f0bd8a3eb000000000000000000000000000000000000000000000000000000008152fd5b9291809450604091031261010a5761085690610ed6565b9160448101359067ffffffffffffffff821161010a5701908060438301121561010a57602482013567ffffffffffffffff81116108e257604051916108a56020601f19601f8501160184610e50565b8183526044828501011161010a57602081600092604473ffffffffffffffffffffffffffffffffffffffff9601838601378301015291169061030c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b3461010a57604060031936011261010a5773ffffffffffffffffffffffffffffffffffffffff61093f610e73565b6000608060405161094f81610dfc565b82815282602082015282604082015282606082015201521660005260016020526040600020602435600052602052610106604060002060016040519161099483610dfc565b805467ffffffffffffffff908181168552818160401c16602086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c608082015260405191829182919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b3461010a5760c060031936011261010a5760043560a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261010a5760405167ffffffffffffffff60a08201818111838210176108e257604052602435818116810361010a578252604435818116810361010a5760208301908152606435828116810361010a5760408401908152608435906bffffffffffffffffffffffff808316830361010a576060860192835260a4359273ffffffffffffffffffffffffffffffffffffffff8416840361010a576001947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009360808901958652336000528660205260406000208a6000526020526040600020978951167fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffffffffffff000000000000000000000000000000006fffffffffffffffff00000000000000008b54955160401b16935160801b16931617171786555116915160601b16179101557f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60405180610c5c339482919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b0390a3005b3461010a5760208060031936011261010a57600435903360005260018152604060002082600052815260006001604082208281550155336000526001815260406000208260005281526001604060002060405192815467ffffffffffffffff918282168652828260401c169086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c60808201527f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60a03392a3005b3461010a57602060031936011261010a57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361010a57817f7b49ff2c0000000000000000000000000000000000000000000000000000000060209314908115610df7575b8115610d9a575b5015158152f35b7f6890e5b300000000000000000000000000000000000000000000000000000000811491508115610dcd575b5083610d93565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610dc6565b610d8c565b60a0810190811067ffffffffffffffff8211176108e257604052565b6040810190811067ffffffffffffffff8211176108e257604052565b6060810190811067ffffffffffffffff8211176108e257604052565b90601f601f19910116810190811067ffffffffffffffff8211176108e257604052565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010a57565b919082519283825260005b848110610ec2575050601f19601f8460006020809697860101520116010190565b602081830181015184830182015201610ea1565b359073ffffffffffffffffffffffffffffffffffffffff8216820361010a57565b67ffffffffffffffff81116108e25760051b60200190565b8051821015610f235760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220e4d01e7973c418d440472f9a8a1217d32719c82d592c2ccade9a63b9efe71f0064736f6c63430008110033
Deployed Bytecode
0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610d1f5750806319b45c4f14610c6157806334db7eee14610a44578063611efc09146109115780636890e5b31461023b57806375d0c0dc146101dd5780637b49ff2c1461016d578063a0a8e4601461010f5763e8a3d4851461008257600080fd5b3461010a57600060031936011261010a576101066040516100a281610e34565b602f81527f68747470733a2f2f6769746875622e636f6d2f6f75727a6f72612f7a6f72612d60208201527f313135352d636f6e7472616374732f00000000000000000000000000000000006040820152604051918291602083526020830190610e96565b0390f35b600080fd5b3461010a57600060031936011261010a5761010660405161012f81610e18565b600581527f312e312e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610e96565b3461010a57606060031936011261010a57610186610e73565b6044359073ffffffffffffffffffffffffffffffffffffffff9081831680930361010a5716600052600060205260406000206024356000526020526040600020906000526020526020604060002054604051908152f35b3461010a57600060031936011261010a576101066040516101fd81610e18565b601981527f46697865642050726963652053616c65205374726174656779000000000000006020820152604051918291602083526020830190610e96565b3461010a5760a060031936011261010a57610254610e73565b5060843567ffffffffffffffff811161010a573660238201121561010a57806004013567ffffffffffffffff811161010a576024820181830192602484019336851161010a57604051946102a786610e18565b6060865260006020870152604051602081019080821067ffffffffffffffff8311176108e25760209160405260008152951460001461083f575090602091031261010a5761030973ffffffffffffffffffffffffffffffffffffffff91610ed6565b16905b33600052600160205260406000206024356000526020526040600020805467ffffffffffffffff8160401c1642116108155767ffffffffffffffff811642106107eb576bffffffffffffffffffffffff600183015416604435810290808204604435149015171561079257606435036107c15767ffffffffffffffff8160801c1661063e575b506001015460601c9182156106355760ff60025b16601f196103cc6103b683610ef7565b926103c46040519485610e50565b808452610ef7565b0160005b818110610610575050845261046460405161042d8161041f604435602435876020850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b03601f198101835282610e50565b6040519061043a82610e18565b600282526020820152855160208701519160018301602089015261045e8383610f0f565b52610f0f565b5081516105aa575b505080610550575b50604051602081526060810182519060406020840152815180915260808301602060808360051b86010193019160005b8181106104bb576020870151604087015285850386f35b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80868203018452845190815191600383101561052157610515826040602080959460019782965201519181858201520190610e96565b960194019291016104a4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6105a39060405190602082015260643560408201526040815261057281610e34565b6040519061057f82610e18565b600182526020820152825160208401519160018301602086015261045e8383610f0f565b5081610474565b604051916044358352604060208401527fb9490aee663998179ad13f9e1c1eb6189c71ad1a9ec87f33ad2766f98d9a268a602435938061060673ffffffffffffffffffffffffffffffffffffffff339616946040830190610e96565b0390a4828061046c565b60209060405161061f81610e18565b60008152606083820152828286010152016103d0565b60ff60016103a6565b3360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff85166000526020526040600020805460443581018111610792576044350190553360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff851660005260205267ffffffffffffffff8160801c1660406000205411156103925767ffffffffffffffff9061078e853360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054906040519485947fe2d9156400000000000000000000000000000000000000000000000000000000865260801c16906004850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517f2f4613eb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fe8c4db82000000000000000000000000000000000000000000000000000000008152fd5b60046040517f0bd8a3eb000000000000000000000000000000000000000000000000000000008152fd5b9291809450604091031261010a5761085690610ed6565b9160448101359067ffffffffffffffff821161010a5701908060438301121561010a57602482013567ffffffffffffffff81116108e257604051916108a56020601f19601f8501160184610e50565b8183526044828501011161010a57602081600092604473ffffffffffffffffffffffffffffffffffffffff9601838601378301015291169061030c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b3461010a57604060031936011261010a5773ffffffffffffffffffffffffffffffffffffffff61093f610e73565b6000608060405161094f81610dfc565b82815282602082015282604082015282606082015201521660005260016020526040600020602435600052602052610106604060002060016040519161099483610dfc565b805467ffffffffffffffff908181168552818160401c16602086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c608082015260405191829182919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b3461010a5760c060031936011261010a5760043560a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261010a5760405167ffffffffffffffff60a08201818111838210176108e257604052602435818116810361010a578252604435818116810361010a5760208301908152606435828116810361010a5760408401908152608435906bffffffffffffffffffffffff808316830361010a576060860192835260a4359273ffffffffffffffffffffffffffffffffffffffff8416840361010a576001947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009360808901958652336000528660205260406000208a6000526020526040600020978951167fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffffffffffff000000000000000000000000000000006fffffffffffffffff00000000000000008b54955160401b16935160801b16931617171786555116915160601b16179101557f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60405180610c5c339482919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b0390a3005b3461010a5760208060031936011261010a57600435903360005260018152604060002082600052815260006001604082208281550155336000526001815260406000208260005281526001604060002060405192815467ffffffffffffffff918282168652828260401c169086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c60808201527f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60a03392a3005b3461010a57602060031936011261010a57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361010a57817f7b49ff2c0000000000000000000000000000000000000000000000000000000060209314908115610df7575b8115610d9a575b5015158152f35b7f6890e5b300000000000000000000000000000000000000000000000000000000811491508115610dcd575b5083610d93565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610dc6565b610d8c565b60a0810190811067ffffffffffffffff8211176108e257604052565b6040810190811067ffffffffffffffff8211176108e257604052565b6060810190811067ffffffffffffffff8211176108e257604052565b90601f601f19910116810190811067ffffffffffffffff8211176108e257604052565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010a57565b919082519283825260005b848110610ec2575050601f19601f8460006020809697860101520116010190565b602081830181015184830182015201610ea1565b359073ffffffffffffffffffffffffffffffffffffffff8216820361010a57565b67ffffffffffffffff81116108e25760051b60200190565b8051821015610f235760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220e4d01e7973c418d440472f9a8a1217d32719c82d592c2ccade9a63b9efe71f0064736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.