Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60808060 | 16848110 | 598 days ago | IN | 0 ETH | 0.02923914 |
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 {TransferHelperUtils} from "../../utils/TransferHelperUtils.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; } mapping(address => mapping(uint256 => SalesConfig)) internal salesConfigs; // target -> tokenId -> settings // target -> tokenId -> minter -> count 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.0.0"; } error WrongValueSent(); error SaleEnded(); error SaleHasNotStarted(); event SaleSet(address indexed mediaContract, uint256 indexed tokenId, SalesConfig salesConfig); /// @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 = abi.decode(minterArguments, (address)); SalesConfig memory 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); // 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 // OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol) pragma solidity ^0.8.0; import "../utils/introspection/IERC165Upgradeable.sol";
// 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); }
// 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; /// @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"; 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 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; 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"; 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 {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 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; /// @title TransferHelperUtils /// @notice Helper functions for sending ETH library TransferHelperUtils { /// @dev Gas limit to send funds uint256 internal constant FUNDS_SEND_LOW_GAS_LIMIT = 110_000; // @dev Gas limit to send funds – usable for splits, can use with withdraws uint256 internal constant FUNDS_SEND_GAS_LIMIT = 310_000; /// @notice Sends ETH to a recipient, making conservative estimates to not run out of gas /// @param recipient The address to send ETH to /// @param value The amount of ETH to send function safeSendETHLowLimit(address recipient, uint256 value) internal returns (bool success) { (success, ) = recipient.call{value: value, gas: FUNDS_SEND_LOW_GAS_LIMIT}(""); } /// @notice Sends ETH to a recipient, making an attempt to not run out of gas /// @param recipient The address to send ETH to /// @param value The amount of ETH to send function safeSendETH(address recipient, uint256 value) internal returns (bool success) { (success, ) = recipient.call{value: value, gas: FUNDS_SEND_GAS_LIMIT}(""); } }
{ "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":"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
6080806040523461001657610e3e908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610bf65750806319b45c4f14610b3857806334db7eee146108ec578063611efc09146107b95780636890e5b31461023b57806375d0c0dc146101dd5780637b49ff2c1461016d578063a0a8e4601461010f5763e8a3d4851461008257600080fd5b3461010a57600060031936011261010a576101066040516100a281610d0b565b602f81527f68747470733a2f2f6769746875622e636f6d2f6f75727a6f72612f7a6f72612d60208201527f313135352d636f6e7472616374732f00000000000000000000000000000000006040820152604051918291602083526020830190610d6d565b0390f35b600080fd5b3461010a57600060031936011261010a5761010660405161012f81610cef565b600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610d6d565b3461010a57606060031936011261010a57610186610d4a565b6044359073ffffffffffffffffffffffffffffffffffffffff9081831680930361010a5716600052600060205260406000206024356000526020526040600020906000526020526020604060002054604051908152f35b3461010a57600060031936011261010a576101066040516101fd81610cef565b601981527f46697865642050726963652053616c65205374726174656779000000000000006020820152604051918291602083526020830190610d6d565b3461010a5760a060031936011261010a57610254610d4a565b5060843567ffffffffffffffff80821161010a573660238301121561010a57816004013581811161010a5782019136602484011161010a576020816040519461029c86610cef565b60608652600083870152031261010a576024013573ffffffffffffffffffffffffffffffffffffffff8116810361010a573360005260016020526040600020602435600052602052604060002091604051926102f784610cd3565b80549082821685526001838360401c169182602088015284604088019460801c16845201549060608601906bffffffffffffffffffffffff92838116835260601c6080880152421161078f57838651164210610765575116604435810290808204604435149015171561070c576064350361073b575116806105d4575b50608082015173ffffffffffffffffffffffffffffffffffffffff1615801591906105cb5760ff60025b16601f196103c46103ae83610dad565b926103bc6040519485610d27565b808452610dad565b0160005b8181106105a657505084526040805173ffffffffffffffffffffffffffffffffffffffff92909216602083015260243590820152604435606080830191909152815261045090610419608082610d27565b6040519061042682610cef565b600282526020820152845160208601519160018301602088015261044a8383610dc5565b52610dc5565b50610532575b50604051602081526060810182519060406020840152815180915260808301602060808360051b86010193019160005b81811061049d576020870151604087015285850386f35b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808682030184528451908151916003831015610503576104f7826040602080959460019782965201519181858201520190610d6d565b96019401929101610486565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff608061059f9201511660405190602082015260643560408201526040815261056e81610d0b565b6040519061057b82610cef565b600182526020820152825160208401519160018301602086015261044a8383610dc5565b5081610456565b6020906040516105b581610cef565b60008152606083820152828286010152016103c8565b60ff600161039e565b3360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff83166000526020526040600020805490604435820180921161070c57553360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff8316600052602052806040600020541115610374579061070873ffffffffffffffffffffffffffffffffffffffff9233600052600060205260406000206024356000526020526040600020848416600052602052604060002054906040519485947fe2d91564000000000000000000000000000000000000000000000000000000008652166004850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517f2f4613eb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fe8c4db82000000000000000000000000000000000000000000000000000000008152fd5b60046040517f0bd8a3eb000000000000000000000000000000000000000000000000000000008152fd5b3461010a57604060031936011261010a5773ffffffffffffffffffffffffffffffffffffffff6107e7610d4a565b600060806040516107f781610cd3565b82815282602082015282604082015282606082015201521660005260016020526040600020602435600052602052610106604060002060016040519161083c83610cd3565b805467ffffffffffffffff908181168552818160401c16602086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c608082015260405191829182919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b3461010a5760c060031936011261010a5760043560a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261010a5760405167ffffffffffffffff60a0820181811183821017610b0957604052602435818116810361010a578252604435818116810361010a5760208301908152606435828116810361010a5760408401908152608435906bffffffffffffffffffffffff808316830361010a576060860192835260a4359273ffffffffffffffffffffffffffffffffffffffff8416840361010a576001947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009360808901958652336000528660205260406000208a6000526020526040600020978951167fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffffffffffff000000000000000000000000000000006fffffffffffffffff00000000000000008b54955160401b16935160801b16931617171786555116915160601b16179101557f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60405180610b04339482919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b0390a3005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b3461010a5760208060031936011261010a57600435903360005260018152604060002082600052815260006001604082208281550155336000526001815260406000208260005281526001604060002060405192815467ffffffffffffffff918282168652828260401c169086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c60808201527f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60a03392a3005b3461010a57602060031936011261010a57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361010a57817f7b49ff2c0000000000000000000000000000000000000000000000000000000060209314908115610cce575b8115610c71575b5015158152f35b7f6890e5b300000000000000000000000000000000000000000000000000000000811491508115610ca4575b5083610c6a565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610c9d565b610c63565b60a0810190811067ffffffffffffffff821117610b0957604052565b6040810190811067ffffffffffffffff821117610b0957604052565b6060810190811067ffffffffffffffff821117610b0957604052565b90601f601f19910116810190811067ffffffffffffffff821117610b0957604052565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010a57565b919082519283825260005b848110610d99575050601f19601f8460006020809697860101520116010190565b602081830181015184830182015201610d78565b67ffffffffffffffff8111610b095760051b60200190565b8051821015610dd95760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220831cd5e17123d5935f26988cb78f362b3107a725981f8372c55e6cab3721cdf064736f6c63430008110033
Deployed Bytecode
0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610bf65750806319b45c4f14610b3857806334db7eee146108ec578063611efc09146107b95780636890e5b31461023b57806375d0c0dc146101dd5780637b49ff2c1461016d578063a0a8e4601461010f5763e8a3d4851461008257600080fd5b3461010a57600060031936011261010a576101066040516100a281610d0b565b602f81527f68747470733a2f2f6769746875622e636f6d2f6f75727a6f72612f7a6f72612d60208201527f313135352d636f6e7472616374732f00000000000000000000000000000000006040820152604051918291602083526020830190610d6d565b0390f35b600080fd5b3461010a57600060031936011261010a5761010660405161012f81610cef565b600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610d6d565b3461010a57606060031936011261010a57610186610d4a565b6044359073ffffffffffffffffffffffffffffffffffffffff9081831680930361010a5716600052600060205260406000206024356000526020526040600020906000526020526020604060002054604051908152f35b3461010a57600060031936011261010a576101066040516101fd81610cef565b601981527f46697865642050726963652053616c65205374726174656779000000000000006020820152604051918291602083526020830190610d6d565b3461010a5760a060031936011261010a57610254610d4a565b5060843567ffffffffffffffff80821161010a573660238301121561010a57816004013581811161010a5782019136602484011161010a576020816040519461029c86610cef565b60608652600083870152031261010a576024013573ffffffffffffffffffffffffffffffffffffffff8116810361010a573360005260016020526040600020602435600052602052604060002091604051926102f784610cd3565b80549082821685526001838360401c169182602088015284604088019460801c16845201549060608601906bffffffffffffffffffffffff92838116835260601c6080880152421161078f57838651164210610765575116604435810290808204604435149015171561070c576064350361073b575116806105d4575b50608082015173ffffffffffffffffffffffffffffffffffffffff1615801591906105cb5760ff60025b16601f196103c46103ae83610dad565b926103bc6040519485610d27565b808452610dad565b0160005b8181106105a657505084526040805173ffffffffffffffffffffffffffffffffffffffff92909216602083015260243590820152604435606080830191909152815261045090610419608082610d27565b6040519061042682610cef565b600282526020820152845160208601519160018301602088015261044a8383610dc5565b52610dc5565b50610532575b50604051602081526060810182519060406020840152815180915260808301602060808360051b86010193019160005b81811061049d576020870151604087015285850386f35b909192937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808682030184528451908151916003831015610503576104f7826040602080959460019782965201519181858201520190610d6d565b96019401929101610486565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff608061059f9201511660405190602082015260643560408201526040815261056e81610d0b565b6040519061057b82610cef565b600182526020820152825160208401519160018301602086015261044a8383610dc5565b5081610456565b6020906040516105b581610cef565b60008152606083820152828286010152016103c8565b60ff600161039e565b3360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff83166000526020526040600020805490604435820180921161070c57553360005260006020526040600020602435600052602052604060002073ffffffffffffffffffffffffffffffffffffffff8316600052602052806040600020541115610374579061070873ffffffffffffffffffffffffffffffffffffffff9233600052600060205260406000206024356000526020526040600020848416600052602052604060002054906040519485947fe2d91564000000000000000000000000000000000000000000000000000000008652166004850160409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b0390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517f2f4613eb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fe8c4db82000000000000000000000000000000000000000000000000000000008152fd5b60046040517f0bd8a3eb000000000000000000000000000000000000000000000000000000008152fd5b3461010a57604060031936011261010a5773ffffffffffffffffffffffffffffffffffffffff6107e7610d4a565b600060806040516107f781610cd3565b82815282602082015282604082015282606082015201521660005260016020526040600020602435600052602052610106604060002060016040519161083c83610cd3565b805467ffffffffffffffff908181168552818160401c16602086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c608082015260405191829182919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b3461010a5760c060031936011261010a5760043560a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261010a5760405167ffffffffffffffff60a0820181811183821017610b0957604052602435818116810361010a578252604435818116810361010a5760208301908152606435828116810361010a5760408401908152608435906bffffffffffffffffffffffff808316830361010a576060860192835260a4359273ffffffffffffffffffffffffffffffffffffffff8416840361010a576001947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009360808901958652336000528660205260406000208a6000526020526040600020978951167fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffffffffffff000000000000000000000000000000006fffffffffffffffff00000000000000008b54955160401b16935160801b16931617171786555116915160601b16179101557f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60405180610b04339482919091608073ffffffffffffffffffffffffffffffffffffffff8160a084019567ffffffffffffffff80825116865280602083015116602087015260408201511660408601526bffffffffffffffffffffffff6060820151166060860152015116910152565b0390a3005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b3461010a5760208060031936011261010a57600435903360005260018152604060002082600052815260006001604082208281550155336000526001815260406000208260005281526001604060002060405192815467ffffffffffffffff918282168652828260401c169086015260801c16604084015201546bffffffffffffffffffffffff8116606083015260601c60808201527f5e4ad74f00b9a9d4a8452359a7fbd80cc5a6930a9df5e5b797ddc024b24b252c60a03392a3005b3461010a57602060031936011261010a57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361010a57817f7b49ff2c0000000000000000000000000000000000000000000000000000000060209314908115610cce575b8115610c71575b5015158152f35b7f6890e5b300000000000000000000000000000000000000000000000000000000811491508115610ca4575b5083610c6a565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610c9d565b610c63565b60a0810190811067ffffffffffffffff821117610b0957604052565b6040810190811067ffffffffffffffff821117610b0957604052565b6060810190811067ffffffffffffffff821117610b0957604052565b90601f601f19910116810190811067ffffffffffffffff821117610b0957604052565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010a57565b919082519283825260005b848110610d99575050601f19601f8460006020809697860101520116010190565b602081830181015184830182015201610d78565b67ffffffffffffffff8111610b095760051b60200190565b8051821015610dd95760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220831cd5e17123d5935f26988cb78f362b3107a725981f8372c55e6cab3721cdf064736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.