More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,095 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 15685220 | 823 days ago | IN | 0 ETH | 0.0024862 | ||||
Mint | 15685214 | 823 days ago | IN | 0 ETH | 0.00253179 | ||||
Mint | 15685169 | 823 days ago | IN | 0 ETH | 0.0026 | ||||
Mint | 15685165 | 823 days ago | IN | 0 ETH | 0.00281304 | ||||
Mint | 15685158 | 823 days ago | IN | 0 ETH | 0.00282809 | ||||
Mint | 15685150 | 823 days ago | IN | 0 ETH | 0.0027359 | ||||
Mint | 15685135 | 823 days ago | IN | 0 ETH | 0.00246299 | ||||
Mint | 15685132 | 823 days ago | IN | 0 ETH | 0.00272597 | ||||
Mint | 15685128 | 823 days ago | IN | 0 ETH | 0.00271932 | ||||
Mint | 15685117 | 823 days ago | IN | 0 ETH | 0.00284025 | ||||
Mint | 15685114 | 823 days ago | IN | 0 ETH | 0.00307172 | ||||
Mint | 15685110 | 823 days ago | IN | 0 ETH | 0.00311793 | ||||
Mint | 15685093 | 823 days ago | IN | 0 ETH | 0.00593939 | ||||
Mint | 15685023 | 823 days ago | IN | 0 ETH | 0.00176636 | ||||
Mint | 15685019 | 823 days ago | IN | 0 ETH | 0.00204817 | ||||
Mint | 15685015 | 823 days ago | IN | 0 ETH | 0.00249858 | ||||
Mint | 15685004 | 823 days ago | IN | 0 ETH | 0.00348329 | ||||
Mint | 15684985 | 823 days ago | IN | 0 ETH | 0.01137358 | ||||
Mint | 15684974 | 823 days ago | IN | 0 ETH | 0.00390886 | ||||
Mint | 15684946 | 823 days ago | IN | 0 ETH | 0.01195043 | ||||
Mint | 15684911 | 823 days ago | IN | 0 ETH | 0.00189234 | ||||
Mint | 15684903 | 823 days ago | IN | 0 ETH | 0.00213842 | ||||
Mint | 15684868 | 823 days ago | IN | 0 ETH | 0.00226351 | ||||
Mint | 15684860 | 823 days ago | IN | 0 ETH | 0.00279495 | ||||
Mint | 15684855 | 823 days ago | IN | 0 ETH | 0.0029588 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BapesGenesisKeyDrop
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/utils/Strings.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; contract BapesGenesisKeyDrop is Ownable { using Strings for uint256; bool private isPaused = false; bytes32 private merkleRoot; uint256 public mintPerWallet = 1; uint256 public currentTokenId = 2143; mapping(address => uint256) private mintedWallets; IERC721 private bgk1; constructor() { bgk1 = IERC721(0x3A472c4D0dfbbb91ed050d3bb6B3623037c6263c); } function onERC721Received( address, address, uint256, bytes calldata ) external returns (bytes4) { return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")); } function addressToString() internal view returns (string memory) { return Strings.toHexString(uint160(msg.sender), 20); } function mint(uint256 _mintAmount, bytes32[] calldata _merkleProof) public { uint256 minted = mintedWallets[msg.sender]; require(!isPaused, "Minting is paused"); require(minted < mintPerWallet, "This wallet has already minted"); bytes32 leaf = keccak256(abi.encodePacked(addressToString(), "-", _mintAmount.toString())); require( MerkleProof.verify(_merkleProof, merkleRoot, leaf), "Invalid proof, this wallet is not eligible for selected amount of NFTs" ); mintedWallets[msg.sender] = mintPerWallet; for (uint256 i = 0; i < _mintAmount; i++) { bgk1.safeTransferFrom(address(this), msg.sender, currentTokenId); currentTokenId++; } } function togglePause(bool _state) external onlyOwner { isPaused = _state; } function updateMintPerWallet(uint256 _amount) external onlyOwner { mintPerWallet = _amount; } function updateMerkleRoot(bytes32 _merkleRoot) external onlyOwner { merkleRoot = _merkleRoot; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.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 = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"currentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"updateMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805460ff60a01b19169055600160025561085f60035534801561002857600080fd5b506100323361005d565b600580546001600160a01b031916733a472c4d0dfbbb91ed050d3bb6b3623037c6263c1790556100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e30806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c8063700c35d2116100765780638da5cb5b1161005b5780638da5cb5b14610193578063ba41b0c6146101ae578063f2fde38b146101c157600080fd5b8063700c35d214610182578063715018a61461018b57600080fd5b8063150b7a02116100a7578063150b7a02146100f35780634783f0ef1461015c57806357d159c61461016f57600080fd5b80629a9b7b146100c25780630a5ea08d146100de575b600080fd5b6100cb60035481565b6040519081526020015b60405180910390f35b6100f16100ec366004610be2565b6101d4565b005b61012b610101366004610b25565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100d5565b6100f161016a366004610be2565b610238565b6100f161017d366004610bc0565b610297565b6100cb60025481565b6100f161032a565b6000546040516001600160a01b0390911681526020016100d5565b6100f16101bc366004610bfb565b610390565b6100f16101cf366004610b0a565b610636565b6000546001600160a01b031633146102335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600255565b6000546001600160a01b031633146102925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b600155565b6000546001600160a01b031633146102f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b60008054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146103845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b61038e6000610718565b565b336000908152600460205260408120549054600160a01b900460ff16156103f95760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e6720697320706175736564000000000000000000000000000000604482015260640161022a565b600254811061044a5760405162461bcd60e51b815260206004820152601e60248201527f546869732077616c6c65742068617320616c7265616479206d696e7465640000604482015260640161022a565b6000610454610780565b61045d86610792565b60405160200161046e929190610cb5565b6040516020818303038152906040528051906020012090506104c7848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506001549150849050610898565b61055f5760405162461bcd60e51b815260206004820152604660248201527f496e76616c69642070726f6f662c20746869732077616c6c6574206973206e6f60448201527f7420656c696769626c6520666f722073656c656374656420616d6f756e74206f60648201527f66204e4654730000000000000000000000000000000000000000000000000000608482015260a40161022a565b600254336000908152600460205260408120919091555b8581101561062e576005546003546040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015233602482015260448101919091526001600160a01b03909116906342842e0e90606401600060405180830381600087803b1580156105ed57600080fd5b505af1158015610601573d6000803e3d6000fd5b50506003805492509050600061061683610d73565b9190505550808061062690610d73565b915050610576565b505050505050565b6000546001600160a01b031633146106905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b6001600160a01b03811661070c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161022a565b61071581610718565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606061078d3360146108ae565b905090565b6060816107b65750506040805180820190915260018152600360fc1b602082015290565b8160005b81156107e057806107ca81610d73565b91506107d99050600a83610d12565b91506107ba565b60008167ffffffffffffffff8111156107fb576107fb610de4565b6040519080825280601f01601f191660200182016040528015610825576020820181803683370190505b5090505b84156108905761083a600183610d45565b9150610847600a86610d8e565b610852906030610cfa565b60f81b81838151811061086757610867610dce565b60200101906001600160f81b031916908160001a905350610889600a86610d12565b9450610829565b949350505050565b6000826108a58584610a7a565b14949350505050565b606060006108bd836002610d26565b6108c8906002610cfa565b67ffffffffffffffff8111156108e0576108e0610de4565b6040519080825280601f01601f19166020018201604052801561090a576020820181803683370190505b509050600360fc1b8160008151811061092557610925610dce565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061097057610970610dce565b60200101906001600160f81b031916908160001a9053506000610994846002610d26565b61099f906001610cfa565b90505b6001811115610a24577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106109e0576109e0610dce565b1a60f81b8282815181106109f6576109f6610dce565b60200101906001600160f81b031916908160001a90535060049490941c93610a1d81610d5c565b90506109a2565b508315610a735760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161022a565b9392505050565b600081815b8451811015610ae6576000858281518110610a9c57610a9c610dce565b60200260200101519050808311610ac25760008381526020829052604090209250610ad3565b600081815260208490526040902092505b5080610ade81610d73565b915050610a7f565b509392505050565b80356001600160a01b0381168114610b0557600080fd5b919050565b600060208284031215610b1c57600080fd5b610a7382610aee565b600080600080600060808688031215610b3d57600080fd5b610b4686610aee565b9450610b5460208701610aee565b935060408601359250606086013567ffffffffffffffff80821115610b7857600080fd5b818801915088601f830112610b8c57600080fd5b813581811115610b9b57600080fd5b896020828501011115610bad57600080fd5b9699959850939650602001949392505050565b600060208284031215610bd257600080fd5b81358015158114610a7357600080fd5b600060208284031215610bf457600080fd5b5035919050565b600080600060408486031215610c1057600080fd5b83359250602084013567ffffffffffffffff80821115610c2f57600080fd5b818601915086601f830112610c4357600080fd5b813581811115610c5257600080fd5b8760208260051b8501011115610c6757600080fd5b6020830194508093505050509250925092565b6000815160005b81811015610c9b5760208185018101518683015201610c81565b81811115610caa576000828601525b509290920192915050565b6000610cc18285610c7a565b7f2d000000000000000000000000000000000000000000000000000000000000008152610cf16001820185610c7a565b95945050505050565b60008219821115610d0d57610d0d610da2565b500190565b600082610d2157610d21610db8565b500490565b6000816000190483118215151615610d4057610d40610da2565b500290565b600082821015610d5757610d57610da2565b500390565b600081610d6b57610d6b610da2565b506000190190565b6000600019821415610d8757610d87610da2565b5060010190565b600082610d9d57610d9d610db8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122044236823260496864a38f0a3d824ac832595e095fb8553da2a7556c25cb796bd64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100bd5760003560e01c8063700c35d2116100765780638da5cb5b1161005b5780638da5cb5b14610193578063ba41b0c6146101ae578063f2fde38b146101c157600080fd5b8063700c35d214610182578063715018a61461018b57600080fd5b8063150b7a02116100a7578063150b7a02146100f35780634783f0ef1461015c57806357d159c61461016f57600080fd5b80629a9b7b146100c25780630a5ea08d146100de575b600080fd5b6100cb60035481565b6040519081526020015b60405180910390f35b6100f16100ec366004610be2565b6101d4565b005b61012b610101366004610b25565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100d5565b6100f161016a366004610be2565b610238565b6100f161017d366004610bc0565b610297565b6100cb60025481565b6100f161032a565b6000546040516001600160a01b0390911681526020016100d5565b6100f16101bc366004610bfb565b610390565b6100f16101cf366004610b0a565b610636565b6000546001600160a01b031633146102335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600255565b6000546001600160a01b031633146102925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b600155565b6000546001600160a01b031633146102f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b60008054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146103845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b61038e6000610718565b565b336000908152600460205260408120549054600160a01b900460ff16156103f95760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e6720697320706175736564000000000000000000000000000000604482015260640161022a565b600254811061044a5760405162461bcd60e51b815260206004820152601e60248201527f546869732077616c6c65742068617320616c7265616479206d696e7465640000604482015260640161022a565b6000610454610780565b61045d86610792565b60405160200161046e929190610cb5565b6040516020818303038152906040528051906020012090506104c7848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506001549150849050610898565b61055f5760405162461bcd60e51b815260206004820152604660248201527f496e76616c69642070726f6f662c20746869732077616c6c6574206973206e6f60448201527f7420656c696769626c6520666f722073656c656374656420616d6f756e74206f60648201527f66204e4654730000000000000000000000000000000000000000000000000000608482015260a40161022a565b600254336000908152600460205260408120919091555b8581101561062e576005546003546040517f42842e0e00000000000000000000000000000000000000000000000000000000815230600482015233602482015260448101919091526001600160a01b03909116906342842e0e90606401600060405180830381600087803b1580156105ed57600080fd5b505af1158015610601573d6000803e3d6000fd5b50506003805492509050600061061683610d73565b9190505550808061062690610d73565b915050610576565b505050505050565b6000546001600160a01b031633146106905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022a565b6001600160a01b03811661070c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161022a565b61071581610718565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606061078d3360146108ae565b905090565b6060816107b65750506040805180820190915260018152600360fc1b602082015290565b8160005b81156107e057806107ca81610d73565b91506107d99050600a83610d12565b91506107ba565b60008167ffffffffffffffff8111156107fb576107fb610de4565b6040519080825280601f01601f191660200182016040528015610825576020820181803683370190505b5090505b84156108905761083a600183610d45565b9150610847600a86610d8e565b610852906030610cfa565b60f81b81838151811061086757610867610dce565b60200101906001600160f81b031916908160001a905350610889600a86610d12565b9450610829565b949350505050565b6000826108a58584610a7a565b14949350505050565b606060006108bd836002610d26565b6108c8906002610cfa565b67ffffffffffffffff8111156108e0576108e0610de4565b6040519080825280601f01601f19166020018201604052801561090a576020820181803683370190505b509050600360fc1b8160008151811061092557610925610dce565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061097057610970610dce565b60200101906001600160f81b031916908160001a9053506000610994846002610d26565b61099f906001610cfa565b90505b6001811115610a24577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106109e0576109e0610dce565b1a60f81b8282815181106109f6576109f6610dce565b60200101906001600160f81b031916908160001a90535060049490941c93610a1d81610d5c565b90506109a2565b508315610a735760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161022a565b9392505050565b600081815b8451811015610ae6576000858281518110610a9c57610a9c610dce565b60200260200101519050808311610ac25760008381526020829052604090209250610ad3565b600081815260208490526040902092505b5080610ade81610d73565b915050610a7f565b509392505050565b80356001600160a01b0381168114610b0557600080fd5b919050565b600060208284031215610b1c57600080fd5b610a7382610aee565b600080600080600060808688031215610b3d57600080fd5b610b4686610aee565b9450610b5460208701610aee565b935060408601359250606086013567ffffffffffffffff80821115610b7857600080fd5b818801915088601f830112610b8c57600080fd5b813581811115610b9b57600080fd5b896020828501011115610bad57600080fd5b9699959850939650602001949392505050565b600060208284031215610bd257600080fd5b81358015158114610a7357600080fd5b600060208284031215610bf457600080fd5b5035919050565b600080600060408486031215610c1057600080fd5b83359250602084013567ffffffffffffffff80821115610c2f57600080fd5b818601915086601f830112610c4357600080fd5b813581811115610c5257600080fd5b8760208260051b8501011115610c6757600080fd5b6020830194508093505050509250925092565b6000815160005b81811015610c9b5760208185018101518683015201610c81565b81811115610caa576000828601525b509290920192915050565b6000610cc18285610c7a565b7f2d000000000000000000000000000000000000000000000000000000000000008152610cf16001820185610c7a565b95945050505050565b60008219821115610d0d57610d0d610da2565b500190565b600082610d2157610d21610db8565b500490565b6000816000190483118215151615610d4057610d40610da2565b500290565b600082821015610d5757610d57610da2565b500390565b600081610d6b57610d6b610da2565b506000190190565b6000600019821415610d8757610d87610da2565b5060010190565b600082610d9d57610d9d610db8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122044236823260496864a38f0a3d824ac832595e095fb8553da2a7556c25cb796bd64736f6c63430008070033
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.