Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,864 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Proxy Mint | 15503594 | 809 days ago | IN | 0.08 ETH | 0.00106361 | ||||
Proxy Mint | 15366558 | 831 days ago | IN | 0.08 ETH | 0.00046868 | ||||
Proxy Mint | 15366558 | 831 days ago | IN | 0.08 ETH | 0.00046868 | ||||
Proxy Mint | 15366376 | 831 days ago | IN | 0.08 ETH | 0.00098933 | ||||
Proxy Mint | 15366362 | 831 days ago | IN | 0.08 ETH | 0.0011315 | ||||
Proxy Mint | 15366362 | 831 days ago | IN | 0.08 ETH | 0.00115122 | ||||
Proxy Mint | 15366324 | 831 days ago | IN | 0.08 ETH | 0.00161862 | ||||
Proxy Mint | 15366320 | 831 days ago | IN | 0.16 ETH | 0.00126083 | ||||
Proxy Mint | 15366320 | 831 days ago | IN | 0.24 ETH | 0.00126046 | ||||
Proxy Mint | 15366317 | 831 days ago | IN | 0.8 ETH | 0.00161387 | ||||
Proxy Mint | 15366317 | 831 days ago | IN | 0.32 ETH | 0.00161293 | ||||
Proxy Mint | 15366317 | 831 days ago | IN | 0.08 ETH | 0.00161293 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.16 ETH | 0.00168301 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168671 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168573 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168573 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168671 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168622 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.0016872 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168573 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.16 ETH | 0.00168671 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.00168671 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.08 ETH | 0.0016872 | ||||
Proxy Mint | 15366316 | 831 days ago | IN | 0.8 ETH | 0.00203688 | ||||
Proxy Mint | 15366315 | 831 days ago | IN | 0.16 ETH | 0.00163944 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15366315 | 831 days ago | 0.16 ETH | ||||
15366315 | 831 days ago | 0.16 ETH | ||||
15366315 | 831 days ago | 0.08 ETH | ||||
15366315 | 831 days ago | 0.08 ETH | ||||
15366315 | 831 days ago | 0.08 ETH | ||||
15366315 | 831 days ago | 0.4 ETH | ||||
15366315 | 831 days ago | 0.08 ETH | ||||
15366315 | 831 days ago | 0.24 ETH | ||||
15366315 | 831 days ago | 0.16 ETH | ||||
15366315 | 831 days ago | 0.16 ETH | ||||
15366315 | 831 days ago | 0.16 ETH | ||||
15366315 | 831 days ago | 0.16 ETH | ||||
15366314 | 831 days ago | 0.08 ETH | ||||
15366314 | 831 days ago | 0.24 ETH | ||||
15366314 | 831 days ago | 0.4 ETH | ||||
15366313 | 831 days ago | 0.32 ETH | ||||
15366313 | 831 days ago | 0.08 ETH | ||||
15366313 | 831 days ago | 0.08 ETH | ||||
15366313 | 831 days ago | 0.16 ETH | ||||
15366313 | 831 days ago | 0.08 ETH | ||||
15366313 | 831 days ago | 0.08 ETH | ||||
15366313 | 831 days ago | 0.08 ETH | ||||
15366313 | 831 days ago | 0.16 ETH | ||||
15366313 | 831 days ago | 0.32 ETH | ||||
15366313 | 831 days ago | 0.16 ETH |
Loading...
Loading
Contract Name:
Minter
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.6; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "./interfaces/IToken.sol"; import "./interfaces/IOwnable.sol"; contract Minter is Ownable { // sale details address public tokenAddress; uint256 public nextTokenId = 1999; uint256 public maxHolderAllocation = 5; uint256 public maxWhitelistAllocation = 20; /// @notice minter address => # already minted for MintPhase.HoldersOnly mapping(address => uint256) public hasMintedHolderAllocation; /// @notice minter address => # already minted for MintPhase.WhitelistOnly mapping(address => uint256) public hasMintedWhitelistAllocation; /// @notice merkle root of valid holder addresses and quantities allowed bytes32 public holderMerkleRoot; /// @dev this is a superset of holderMerkleRoot bytes32 public whitelistMerkleRoot; enum MintPhase { Paused, HoldersOnly, WhitelistOnly, Open } MintPhase public mintPhase; /// @notice mint on the main token contract /// @param merkleProof the merkle proof for the minter's address /// @param quantity number of mints desired function proxyMint( bytes32[] calldata merkleProof, uint256 quantity ) external payable { //===================== CHECKS ======================= IToken tokenContract = IToken(tokenAddress); // PRIMARY CHECKS // check mint is not paused if (mintPhase == MintPhase.Paused) { revert("Minting paused"); } // check we won't exceed max tokens allowed uint256 maxTokens = tokenContract.maxTokens(); require(nextTokenId + quantity <= maxTokens, "Exceeds max supply"); // check enough ether is sent uint256 price = tokenContract.price(); require(msg.value >= price * quantity, "Not enough ether"); // block contracts require(msg.sender == tx.origin, "No contract mints"); // `HoldersOnly` PHASE CHECKS if (mintPhase == MintPhase.HoldersOnly) { // check merkle proof against holder root require(checkMerkleProof(merkleProof, msg.sender, holderMerkleRoot), "Invalid holder proof"); // make sure user won't have already minted max HolderOnly amount require(hasMintedHolderAllocation[msg.sender] + quantity <= maxHolderAllocation, "Exceeds holder allocation"); // EFFECT. log the amount this user has minted for holder allocation hasMintedHolderAllocation[msg.sender] = hasMintedHolderAllocation[msg.sender] + quantity; } // `WhitelistOnly` PHASE CHECKS if (mintPhase == MintPhase.WhitelistOnly) { // check merkle proof against whitelist root require(checkMerkleProof(merkleProof, msg.sender, whitelistMerkleRoot), "Invalid whitelist proof"); // make sure user won't have already minted maxWhitelistAllocation amount require(hasMintedWhitelistAllocation[msg.sender] + quantity <= maxWhitelistAllocation, "Exceeds whitelist allocation"); // EFFECT. log the amount this user has minted for whitelist allocation hasMintedWhitelistAllocation[msg.sender] = hasMintedWhitelistAllocation[msg.sender] + quantity; } // `Open` PHASE CHECKS if (mintPhase == MintPhase.Open) { // check maxMintsPerTx from token contract. note that in all other phases, // we have phase-specific limits and thus don't need to check this. uint256 maxMintsPerTx = tokenContract.maxMintsPerTx(); require(quantity <= maxMintsPerTx, "Too many mints per txn"); } //=================== EFFECTS ========================= // forward funds to token contract (bool success, ) = tokenAddress.call{value: msg.value }(""); require(success, "Payment forwarding failed"); // increase our local tokenId. we only need to do this bc we made the // tokenId on the main token contract private. nextTokenId += quantity; //=================== INTERACTIONS ======================= tokenContract.mintAdmin(quantity, msg.sender); } /// @notice check whether the merkleProof is valid for a given address and root function checkMerkleProof( bytes32[] calldata merkleProof, address _address, bytes32 _root ) public pure returns (bool) { bytes32 leaf = keccak256(abi.encodePacked(_address)); return MerkleProof.verify(merkleProof, _root, leaf); } /// @notice let owner set main token address function setTokenAddress(address _tokenAddress) external onlyOwner { tokenAddress = _tokenAddress; } /// @notice let owner set the holder merkle root function setHolderMerkleRoot(bytes32 _merkleRoot) external onlyOwner { holderMerkleRoot = _merkleRoot; } /// @notice let owner set the whitelist merkle root function setWhitelistMerkleRoot(bytes32 _merkleRoot) external onlyOwner { whitelistMerkleRoot = _merkleRoot; } /// @notice Sets mint phase, takes uint that refers to MintPhase enum (0 indexed). function setMintPhase(MintPhase phase) external onlyOwner { mintPhase = phase; } /// @notice set max holder allocation amount function setMaxHolderAllocation(uint256 amount) external onlyOwner { maxHolderAllocation = amount; } /// @notice set max whitelist allocation amount function setMaxWhitelistAllocation(uint256 amount) external onlyOwner { maxWhitelistAllocation = amount; } /// @notice change the next token id (to match token contract) function setNextTokenId(uint256 id) external onlyOwner { nextTokenId = id; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } return computedHash; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (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: GPL-3.0 /// @title IToken interface pragma solidity ^0.8.6; interface IToken { function saleActive() external returns (bool); function maxMintsPerTx() external returns (uint256); function maxTokens() external returns (uint256); function price() external returns (uint256); function mintAdmin(uint256 quantity, address to) external; function battleTransfer(address from, address to, uint256 tokenId) external; }
// SPDX-License-Identifier: GPL-3.0 /// @title IOwnable interface pragma solidity ^0.8.6; interface IOwnable { function owner() external returns (address); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (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; } }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"checkMerkleProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasMintedHolderAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasMintedWhitelistAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHolderAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWhitelistAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintPhase","outputs":[{"internalType":"enum Minter.MintPhase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTokenId","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":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"proxyMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setHolderMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxHolderAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWhitelistAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum Minter.MintPhase","name":"phase","type":"uint8"}],"name":"setMintPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"setNextTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setWhitelistMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526107cf6002556005600355601460045534801561002057600080fd5b5061002a3361002f565b61007f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61151c8061008e6000396000f3fe60806040526004361061016a5760003560e01c806383e3500f116100cb578063aa98e0c61161007f578063d47efc7211610059578063d47efc72146103ee578063e2ee78fb14610404578063f2fde38b1461042457600080fd5b8063aa98e0c6146103a2578063bd32fb66146103b8578063c2a99b26146103d857600080fd5b806395d6a3cc116100b057806395d6a3cc146103185780639d76ea58146103485780639e7f0b601461037557600080fd5b806383e3500f146102ac5780638da5cb5b146102cc57600080fd5b806331c07bbf1161012257806363556a3d1161010757806363556a3d14610254578063715018a61461028157806375794a3c1461029657600080fd5b806331c07bbf146102145780635c976b811461023457600080fd5b80632646da71116101535780632646da71146101bf57806326a4e8d2146101e1578063271715f71461020157600080fd5b8063143efd1c1461016f57806317881cbf14610198575b600080fd5b34801561017b57600080fd5b5061018560075481565b6040519081526020015b60405180910390f35b3480156101a457600080fd5b506009546101b29060ff1681565b60405161018f919061138a565b3480156101cb57600080fd5b506101df6101da366004611337565b610444565b005b3480156101ed57600080fd5b506101df6101fc36600461126d565b6104b5565b6101df61020f3660046112eb565b610563565b34801561022057600080fd5b506101df61022f366004611350565b610c5d565b34801561024057600080fd5b506101df61024f366004611337565b610d09565b34801561026057600080fd5b5061018561026f36600461126d565b60056020526000908152604090205481565b34801561028d57600080fd5b506101df610d75565b3480156102a257600080fd5b5061018560025481565b3480156102b857600080fd5b506101df6102c7366004611337565b610de8565b3480156102d857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018f565b34801561032457600080fd5b5061033861033336600461128f565b610e54565b604051901515815260200161018f565b34801561035457600080fd5b506001546102f39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561038157600080fd5b5061018561039036600461126d565b60066020526000908152604090205481565b3480156103ae57600080fd5b5061018560085481565b3480156103c457600080fd5b506101df6103d3366004611337565b610eed565b3480156103e457600080fd5b5061018560035481565b3480156103fa57600080fd5b5061018560045481565b34801561041057600080fd5b506101df61041f366004611337565b610f59565b34801561043057600080fd5b506101df61043f36600461126d565b610fc5565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600455565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16600060095460ff16600381111561059557610595611488565b14156105e35760405162461bcd60e51b815260206004820152600e60248201527f4d696e74696e672070617573656400000000000000000000000000000000000060448201526064016104a7565b60008173ffffffffffffffffffffffffffffffffffffffff1663e83157426040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190611371565b9050808360025461067691906113cb565b11156106c45760405162461bcd60e51b815260206004820152601260248201527f45786365656473206d617820737570706c79000000000000000000000000000060448201526064016104a7565b60008273ffffffffffffffffffffffffffffffffffffffff1663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611371565b905061075284826113e3565b3410156107a15760405162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f7567682065746865720000000000000000000000000000000060448201526064016104a7565b3332146107f05760405162461bcd60e51b815260206004820152601160248201527f4e6f20636f6e7472616374206d696e747300000000000000000000000000000060448201526064016104a7565b600160095460ff16600381111561080957610809611488565b14156109015761081d868633600754610e54565b6108695760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420686f6c6465722070726f6f6600000000000000000000000060448201526064016104a7565b600354336000908152600560205260409020546108879086906113cb565b11156108d55760405162461bcd60e51b815260206004820152601960248201527f4578636565647320686f6c64657220616c6c6f636174696f6e0000000000000060448201526064016104a7565b336000908152600560205260409020546108f09085906113cb565b336000908152600560205260409020555b600260095460ff16600381111561091a5761091a611488565b1415610a125761092e868633600854610e54565b61097a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c69642077686974656c6973742070726f6f6600000000000000000060448201526064016104a7565b600454336000908152600660205260409020546109989086906113cb565b11156109e65760405162461bcd60e51b815260206004820152601c60248201527f457863656564732077686974656c69737420616c6c6f636174696f6e0000000060448201526064016104a7565b33600090815260066020526040902054610a019085906113cb565b336000908152600660205260409020555b600360095460ff166003811115610a2b57610a2b611488565b1415610b075760008373ffffffffffffffffffffffffffffffffffffffff1663dc30158b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a7b57600080fd5b505af1158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190611371565b905080851115610b055760405162461bcd60e51b815260206004820152601660248201527f546f6f206d616e79206d696e7473207065722074786e0000000000000000000060448201526064016104a7565b505b60015460405160009173ffffffffffffffffffffffffffffffffffffffff169034908381818185875af1925050503d8060008114610b61576040519150601f19603f3d011682016040523d82523d6000602084013e610b66565b606091505b5050905080610bb75760405162461bcd60e51b815260206004820152601960248201527f5061796d656e7420666f7277617264696e67206661696c65640000000000000060448201526064016104a7565b8460026000828254610bc991906113cb565b90915550506040517f9d034fe90000000000000000000000000000000000000000000000000000000081526004810186905233602482015273ffffffffffffffffffffffffffffffffffffffff851690639d034fe990604401600060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b5050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600980548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610d0157610d01611488565b021790555050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ddc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b610de660006110c1565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600255565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526000908190603401604051602081830303815290604052805190602001209050610ee38686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508591506111369050565b9695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600855565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600755565b60005473ffffffffffffffffffffffffffffffffffffffff16331461102c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b73ffffffffffffffffffffffffffffffffffffffff81166110b55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104a7565b6110be816110c1565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082611143858461114c565b14949350505050565b600081815b84518110156111f057600085828151811061116e5761116e6114b7565b602002602001015190508083116111b05760408051602081018590529081018290526060016040516020818303038152906040528051906020012092506111dd565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806111e881611420565b915050611151565b509392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461121c57600080fd5b919050565b60008083601f84011261123357600080fd5b50813567ffffffffffffffff81111561124b57600080fd5b6020830191508360208260051b850101111561126657600080fd5b9250929050565b60006020828403121561127f57600080fd5b611288826111f8565b9392505050565b600080600080606085870312156112a557600080fd5b843567ffffffffffffffff8111156112bc57600080fd5b6112c887828801611221565b90955093506112db9050602086016111f8565b9396929550929360400135925050565b60008060006040848603121561130057600080fd5b833567ffffffffffffffff81111561131757600080fd5b61132386828701611221565b909790965060209590950135949350505050565b60006020828403121561134957600080fd5b5035919050565b60006020828403121561136257600080fd5b81356004811061128857600080fd5b60006020828403121561138357600080fd5b5051919050565b60208101600483106113c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600082198211156113de576113de611459565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561141b5761141b611459565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561145257611452611459565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212200c4a73e467d0885b5b0b9c8a8e0727b51a7e8c46cbac8743c11d4962dd917efa64736f6c63430008060033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c806383e3500f116100cb578063aa98e0c61161007f578063d47efc7211610059578063d47efc72146103ee578063e2ee78fb14610404578063f2fde38b1461042457600080fd5b8063aa98e0c6146103a2578063bd32fb66146103b8578063c2a99b26146103d857600080fd5b806395d6a3cc116100b057806395d6a3cc146103185780639d76ea58146103485780639e7f0b601461037557600080fd5b806383e3500f146102ac5780638da5cb5b146102cc57600080fd5b806331c07bbf1161012257806363556a3d1161010757806363556a3d14610254578063715018a61461028157806375794a3c1461029657600080fd5b806331c07bbf146102145780635c976b811461023457600080fd5b80632646da71116101535780632646da71146101bf57806326a4e8d2146101e1578063271715f71461020157600080fd5b8063143efd1c1461016f57806317881cbf14610198575b600080fd5b34801561017b57600080fd5b5061018560075481565b6040519081526020015b60405180910390f35b3480156101a457600080fd5b506009546101b29060ff1681565b60405161018f919061138a565b3480156101cb57600080fd5b506101df6101da366004611337565b610444565b005b3480156101ed57600080fd5b506101df6101fc36600461126d565b6104b5565b6101df61020f3660046112eb565b610563565b34801561022057600080fd5b506101df61022f366004611350565b610c5d565b34801561024057600080fd5b506101df61024f366004611337565b610d09565b34801561026057600080fd5b5061018561026f36600461126d565b60056020526000908152604090205481565b34801561028d57600080fd5b506101df610d75565b3480156102a257600080fd5b5061018560025481565b3480156102b857600080fd5b506101df6102c7366004611337565b610de8565b3480156102d857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161018f565b34801561032457600080fd5b5061033861033336600461128f565b610e54565b604051901515815260200161018f565b34801561035457600080fd5b506001546102f39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561038157600080fd5b5061018561039036600461126d565b60066020526000908152604090205481565b3480156103ae57600080fd5b5061018560085481565b3480156103c457600080fd5b506101df6103d3366004611337565b610eed565b3480156103e457600080fd5b5061018560035481565b3480156103fa57600080fd5b5061018560045481565b34801561041057600080fd5b506101df61041f366004611337565b610f59565b34801561043057600080fd5b506101df61043f36600461126d565b610fc5565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600455565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16600060095460ff16600381111561059557610595611488565b14156105e35760405162461bcd60e51b815260206004820152600e60248201527f4d696e74696e672070617573656400000000000000000000000000000000000060448201526064016104a7565b60008173ffffffffffffffffffffffffffffffffffffffff1663e83157426040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190611371565b9050808360025461067691906113cb565b11156106c45760405162461bcd60e51b815260206004820152601260248201527f45786365656473206d617820737570706c79000000000000000000000000000060448201526064016104a7565b60008273ffffffffffffffffffffffffffffffffffffffff1663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611371565b905061075284826113e3565b3410156107a15760405162461bcd60e51b815260206004820152601060248201527f4e6f7420656e6f7567682065746865720000000000000000000000000000000060448201526064016104a7565b3332146107f05760405162461bcd60e51b815260206004820152601160248201527f4e6f20636f6e7472616374206d696e747300000000000000000000000000000060448201526064016104a7565b600160095460ff16600381111561080957610809611488565b14156109015761081d868633600754610e54565b6108695760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420686f6c6465722070726f6f6600000000000000000000000060448201526064016104a7565b600354336000908152600560205260409020546108879086906113cb565b11156108d55760405162461bcd60e51b815260206004820152601960248201527f4578636565647320686f6c64657220616c6c6f636174696f6e0000000000000060448201526064016104a7565b336000908152600560205260409020546108f09085906113cb565b336000908152600560205260409020555b600260095460ff16600381111561091a5761091a611488565b1415610a125761092e868633600854610e54565b61097a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c69642077686974656c6973742070726f6f6600000000000000000060448201526064016104a7565b600454336000908152600660205260409020546109989086906113cb565b11156109e65760405162461bcd60e51b815260206004820152601c60248201527f457863656564732077686974656c69737420616c6c6f636174696f6e0000000060448201526064016104a7565b33600090815260066020526040902054610a019085906113cb565b336000908152600660205260409020555b600360095460ff166003811115610a2b57610a2b611488565b1415610b075760008373ffffffffffffffffffffffffffffffffffffffff1663dc30158b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a7b57600080fd5b505af1158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190611371565b905080851115610b055760405162461bcd60e51b815260206004820152601660248201527f546f6f206d616e79206d696e7473207065722074786e0000000000000000000060448201526064016104a7565b505b60015460405160009173ffffffffffffffffffffffffffffffffffffffff169034908381818185875af1925050503d8060008114610b61576040519150601f19603f3d011682016040523d82523d6000602084013e610b66565b606091505b5050905080610bb75760405162461bcd60e51b815260206004820152601960248201527f5061796d656e7420666f7277617264696e67206661696c65640000000000000060448201526064016104a7565b8460026000828254610bc991906113cb565b90915550506040517f9d034fe90000000000000000000000000000000000000000000000000000000081526004810186905233602482015273ffffffffffffffffffffffffffffffffffffffff851690639d034fe990604401600060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b5050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600980548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610d0157610d01611488565b021790555050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600355565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ddc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b610de660006110c1565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600255565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526000908190603401604051602081830303815290604052805190602001209050610ee38686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508591506111369050565b9695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600855565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b600755565b60005473ffffffffffffffffffffffffffffffffffffffff16331461102c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b73ffffffffffffffffffffffffffffffffffffffff81166110b55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104a7565b6110be816110c1565b50565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082611143858461114c565b14949350505050565b600081815b84518110156111f057600085828151811061116e5761116e6114b7565b602002602001015190508083116111b05760408051602081018590529081018290526060016040516020818303038152906040528051906020012092506111dd565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806111e881611420565b915050611151565b509392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461121c57600080fd5b919050565b60008083601f84011261123357600080fd5b50813567ffffffffffffffff81111561124b57600080fd5b6020830191508360208260051b850101111561126657600080fd5b9250929050565b60006020828403121561127f57600080fd5b611288826111f8565b9392505050565b600080600080606085870312156112a557600080fd5b843567ffffffffffffffff8111156112bc57600080fd5b6112c887828801611221565b90955093506112db9050602086016111f8565b9396929550929360400135925050565b60008060006040848603121561130057600080fd5b833567ffffffffffffffff81111561131757600080fd5b61132386828701611221565b909790965060209590950135949350505050565b60006020828403121561134957600080fd5b5035919050565b60006020828403121561136257600080fd5b81356004811061128857600080fd5b60006020828403121561138357600080fd5b5051919050565b60208101600483106113c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600082198211156113de576113de611459565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561141b5761141b611459565b500290565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561145257611452611459565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212200c4a73e467d0885b5b0b9c8a8e0727b51a7e8c46cbac8743c11d4962dd917efa64736f6c63430008060033
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.