More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 422 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Toggle Mint | 15719364 | 680 days ago | IN | 0 ETH | 0.00096032 | ||||
Mint For | 15719359 | 680 days ago | IN | 0 ETH | 0.00816821 | ||||
Mint | 15718665 | 680 days ago | IN | 0 ETH | 0.00361884 | ||||
Mint | 15717869 | 681 days ago | IN | 0 ETH | 0.04462322 | ||||
Mint | 15717606 | 681 days ago | IN | 0 ETH | 0.00414545 | ||||
Mint | 15717603 | 681 days ago | IN | 0 ETH | 0.0056789 | ||||
Mint | 15716870 | 681 days ago | IN | 0 ETH | 0.00510505 | ||||
Mint | 15716846 | 681 days ago | IN | 0 ETH | 0.0061594 | ||||
Mint | 15716820 | 681 days ago | IN | 0 ETH | 0.00551254 | ||||
Mint | 15716503 | 681 days ago | IN | 0 ETH | 0.00808364 | ||||
Mint | 15715164 | 681 days ago | IN | 0 ETH | 0.00628131 | ||||
Mint | 15713625 | 681 days ago | IN | 0 ETH | 0.00415647 | ||||
Mint | 15712356 | 681 days ago | IN | 0 ETH | 0.00330899 | ||||
Mint | 15711757 | 681 days ago | IN | 0 ETH | 0.0026918 | ||||
Mint | 15711682 | 681 days ago | IN | 0 ETH | 0.003078 | ||||
Mint | 15711498 | 681 days ago | IN | 0 ETH | 0.00274431 | ||||
Mint | 15711132 | 682 days ago | IN | 0 ETH | 0.00368454 | ||||
Mint | 15710961 | 682 days ago | IN | 0 ETH | 0.00354327 | ||||
Mint | 15710068 | 682 days ago | IN | 0 ETH | 0.00251024 | ||||
Mint | 15709596 | 682 days ago | IN | 0 ETH | 0.01006597 | ||||
Mint | 15707522 | 682 days ago | IN | 0 ETH | 0.00385001 | ||||
Mint | 15706964 | 682 days ago | IN | 0 ETH | 0.00340136 | ||||
Mint | 15706313 | 682 days ago | IN | 0 ETH | 0.00392871 | ||||
Mint | 15705961 | 682 days ago | IN | 0 ETH | 0.00509887 | ||||
Mint | 15705496 | 682 days ago | IN | 0 ETH | 0.00708214 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BapesGenesisKeyDrop2
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 BapesGenesisKeyDrop2 is Ownable { using Strings for uint256; bool private isMintStarted = false; bytes32 private merkleRoot; uint256 public mintPerWallet = 1; uint256 public startTokenId = 7938; 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 transferTo(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { bgk1.safeTransferFrom(address(this), _receiver, startTokenId); startTokenId++; } } function mint(uint256 _mintAmount, bytes32[] calldata _merkleProof) public { uint256 minted = mintedWallets[msg.sender]; require(isMintStarted, "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; transferTo(msg.sender, _mintAmount); } function mintFor(uint256 _mintAmount, address _receiver) external onlyOwner { require(isMintStarted, "Minting is paused"); transferTo(_receiver, _mintAmount); } function toggleMint(bool _state) external onlyOwner { isMintStarted = _state; } function updateMintPerWallet(uint256 _amount) external onlyOwner { mintPerWallet = _amount; } function updateStartTokenId(uint256 _tokenId) external onlyOwner { startTokenId = _tokenId; } 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":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintFor","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":[],"name":"startTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"toggleMint","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"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"updateStartTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805460ff60a01b191690556001600255611f0260035534801561002857600080fd5b506100323361005d565b600580546001600160a01b031916733a472c4d0dfbbb91ed050d3bb6b3623037c6263c1790556100ad565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fc9806100bc6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063e6798baa1161005b578063e6798baa146101e2578063f2fde38b146101eb578063fa8b372f146101fe57600080fd5b80638da5cb5b146101a1578063ad62f1ca146101bc578063ba41b0c6146101cf57600080fd5b8063700c35d2116100b2578063700c35d21461016f578063715018a6146101865780638a4dcd851461018e57600080fd5b80630a5ea08d146100d9578063150b7a02146100ee5780634783f0ef1461015c575b600080fd5b6100ec6100e7366004610d4f565b610211565b005b6101266100fc366004610c92565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ec61016a366004610d4f565b610275565b61017860025481565b604051908152602001610153565b6100ec6102d4565b6100ec61019c366004610d2d565b61033a565b6000546040516001600160a01b039091168152602001610153565b6100ec6101ca366004610d68565b6103cd565b6100ec6101dd366004610d94565b61048e565b61017860035481565b6100ec6101f9366004610c77565b610683565b6100ec61020c366004610d4f565b610765565b6000546001600160a01b031633146102705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600255565b6000546001600160a01b031633146102cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b600155565b6000546001600160a01b0316331461032e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b61033860006107c4565b565b6000546001600160a01b031633146103945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b60008054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146104275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b600054600160a01b900460ff166104805760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e67206973207061757365640000000000000000000000000000006044820152606401610267565b61048a818361082c565b5050565b336000908152600460205260408120549054600160a01b900460ff166104f65760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e67206973207061757365640000000000000000000000000000006044820152606401610267565b60025481106105475760405162461bcd60e51b815260206004820152601e60248201527f546869732077616c6c65742068617320616c7265616479206d696e74656400006044820152606401610267565b60006105516108ed565b61055a866108ff565b60405160200161056b929190610e4e565b6040516020818303038152906040528051906020012090506105c4848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506001549150849050610a05565b61065c5760405162461bcd60e51b815260206004820152604660248201527f496e76616c69642070726f6f662c20746869732077616c6c6574206973206e6f60448201527f7420656c696769626c6520666f722073656c656374656420616d6f756e74206f60648201527f66204e4654730000000000000000000000000000000000000000000000000000608482015260a401610267565b6002543360008181526004602052604090209190915561067c908661082c565b5050505050565b6000546001600160a01b031633146106dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b6001600160a01b0381166107595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610267565b610762816107c4565b50565b6000546001600160a01b031633146107bf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b600355565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b818110156108e8576005546003546040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03868116602483015260448201929092529116906342842e0e90606401600060405180830381600087803b1580156108a757600080fd5b505af11580156108bb573d6000803e3d6000fd5b5050600380549250905060006108d083610f0c565b919050555080806108e090610f0c565b91505061082f565b505050565b60606108fa336014610a1b565b905090565b6060816109235750506040805180820190915260018152600360fc1b602082015290565b8160005b811561094d578061093781610f0c565b91506109469050600a83610eab565b9150610927565b60008167ffffffffffffffff81111561096857610968610f7d565b6040519080825280601f01601f191660200182016040528015610992576020820181803683370190505b5090505b84156109fd576109a7600183610ede565b91506109b4600a86610f27565b6109bf906030610e93565b60f81b8183815181106109d4576109d4610f67565b60200101906001600160f81b031916908160001a9053506109f6600a86610eab565b9450610996565b949350505050565b600082610a128584610be7565b14949350505050565b60606000610a2a836002610ebf565b610a35906002610e93565b67ffffffffffffffff811115610a4d57610a4d610f7d565b6040519080825280601f01601f191660200182016040528015610a77576020820181803683370190505b509050600360fc1b81600081518110610a9257610a92610f67565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610add57610add610f67565b60200101906001600160f81b031916908160001a9053506000610b01846002610ebf565b610b0c906001610e93565b90505b6001811115610b91577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610b4d57610b4d610f67565b1a60f81b828281518110610b6357610b63610f67565b60200101906001600160f81b031916908160001a90535060049490941c93610b8a81610ef5565b9050610b0f565b508315610be05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610267565b9392505050565b600081815b8451811015610c53576000858281518110610c0957610c09610f67565b60200260200101519050808311610c2f5760008381526020829052604090209250610c40565b600081815260208490526040902092505b5080610c4b81610f0c565b915050610bec565b509392505050565b80356001600160a01b0381168114610c7257600080fd5b919050565b600060208284031215610c8957600080fd5b610be082610c5b565b600080600080600060808688031215610caa57600080fd5b610cb386610c5b565b9450610cc160208701610c5b565b935060408601359250606086013567ffffffffffffffff80821115610ce557600080fd5b818801915088601f830112610cf957600080fd5b813581811115610d0857600080fd5b896020828501011115610d1a57600080fd5b9699959850939650602001949392505050565b600060208284031215610d3f57600080fd5b81358015158114610be057600080fd5b600060208284031215610d6157600080fd5b5035919050565b60008060408385031215610d7b57600080fd5b82359150610d8b60208401610c5b565b90509250929050565b600080600060408486031215610da957600080fd5b83359250602084013567ffffffffffffffff80821115610dc857600080fd5b818601915086601f830112610ddc57600080fd5b813581811115610deb57600080fd5b8760208260051b8501011115610e0057600080fd5b6020830194508093505050509250925092565b6000815160005b81811015610e345760208185018101518683015201610e1a565b81811115610e43576000828601525b509290920192915050565b6000610e5a8285610e13565b7f2d000000000000000000000000000000000000000000000000000000000000008152610e8a6001820185610e13565b95945050505050565b60008219821115610ea657610ea6610f3b565b500190565b600082610eba57610eba610f51565b500490565b6000816000190483118215151615610ed957610ed9610f3b565b500290565b600082821015610ef057610ef0610f3b565b500390565b600081610f0457610f04610f3b565b506000190190565b6000600019821415610f2057610f20610f3b565b5060010190565b600082610f3657610f36610f51565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122000a179d30bb906354062a600a7eee8e7630c58fcdc8038af0acd92ad0bdee08364736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063e6798baa1161005b578063e6798baa146101e2578063f2fde38b146101eb578063fa8b372f146101fe57600080fd5b80638da5cb5b146101a1578063ad62f1ca146101bc578063ba41b0c6146101cf57600080fd5b8063700c35d2116100b2578063700c35d21461016f578063715018a6146101865780638a4dcd851461018e57600080fd5b80630a5ea08d146100d9578063150b7a02146100ee5780634783f0ef1461015c575b600080fd5b6100ec6100e7366004610d4f565b610211565b005b6101266100fc366004610c92565b7f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100ec61016a366004610d4f565b610275565b61017860025481565b604051908152602001610153565b6100ec6102d4565b6100ec61019c366004610d2d565b61033a565b6000546040516001600160a01b039091168152602001610153565b6100ec6101ca366004610d68565b6103cd565b6100ec6101dd366004610d94565b61048e565b61017860035481565b6100ec6101f9366004610c77565b610683565b6100ec61020c366004610d4f565b610765565b6000546001600160a01b031633146102705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600255565b6000546001600160a01b031633146102cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b600155565b6000546001600160a01b0316331461032e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b61033860006107c4565b565b6000546001600160a01b031633146103945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b60008054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146104275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b600054600160a01b900460ff166104805760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e67206973207061757365640000000000000000000000000000006044820152606401610267565b61048a818361082c565b5050565b336000908152600460205260408120549054600160a01b900460ff166104f65760405162461bcd60e51b815260206004820152601160248201527f4d696e74696e67206973207061757365640000000000000000000000000000006044820152606401610267565b60025481106105475760405162461bcd60e51b815260206004820152601e60248201527f546869732077616c6c65742068617320616c7265616479206d696e74656400006044820152606401610267565b60006105516108ed565b61055a866108ff565b60405160200161056b929190610e4e565b6040516020818303038152906040528051906020012090506105c4848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506001549150849050610a05565b61065c5760405162461bcd60e51b815260206004820152604660248201527f496e76616c69642070726f6f662c20746869732077616c6c6574206973206e6f60448201527f7420656c696769626c6520666f722073656c656374656420616d6f756e74206f60648201527f66204e4654730000000000000000000000000000000000000000000000000000608482015260a401610267565b6002543360008181526004602052604090209190915561067c908661082c565b5050505050565b6000546001600160a01b031633146106dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b6001600160a01b0381166107595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610267565b610762816107c4565b50565b6000546001600160a01b031633146107bf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610267565b600355565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b818110156108e8576005546003546040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03868116602483015260448201929092529116906342842e0e90606401600060405180830381600087803b1580156108a757600080fd5b505af11580156108bb573d6000803e3d6000fd5b5050600380549250905060006108d083610f0c565b919050555080806108e090610f0c565b91505061082f565b505050565b60606108fa336014610a1b565b905090565b6060816109235750506040805180820190915260018152600360fc1b602082015290565b8160005b811561094d578061093781610f0c565b91506109469050600a83610eab565b9150610927565b60008167ffffffffffffffff81111561096857610968610f7d565b6040519080825280601f01601f191660200182016040528015610992576020820181803683370190505b5090505b84156109fd576109a7600183610ede565b91506109b4600a86610f27565b6109bf906030610e93565b60f81b8183815181106109d4576109d4610f67565b60200101906001600160f81b031916908160001a9053506109f6600a86610eab565b9450610996565b949350505050565b600082610a128584610be7565b14949350505050565b60606000610a2a836002610ebf565b610a35906002610e93565b67ffffffffffffffff811115610a4d57610a4d610f7d565b6040519080825280601f01601f191660200182016040528015610a77576020820181803683370190505b509050600360fc1b81600081518110610a9257610a92610f67565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610add57610add610f67565b60200101906001600160f81b031916908160001a9053506000610b01846002610ebf565b610b0c906001610e93565b90505b6001811115610b91577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110610b4d57610b4d610f67565b1a60f81b828281518110610b6357610b63610f67565b60200101906001600160f81b031916908160001a90535060049490941c93610b8a81610ef5565b9050610b0f565b508315610be05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610267565b9392505050565b600081815b8451811015610c53576000858281518110610c0957610c09610f67565b60200260200101519050808311610c2f5760008381526020829052604090209250610c40565b600081815260208490526040902092505b5080610c4b81610f0c565b915050610bec565b509392505050565b80356001600160a01b0381168114610c7257600080fd5b919050565b600060208284031215610c8957600080fd5b610be082610c5b565b600080600080600060808688031215610caa57600080fd5b610cb386610c5b565b9450610cc160208701610c5b565b935060408601359250606086013567ffffffffffffffff80821115610ce557600080fd5b818801915088601f830112610cf957600080fd5b813581811115610d0857600080fd5b896020828501011115610d1a57600080fd5b9699959850939650602001949392505050565b600060208284031215610d3f57600080fd5b81358015158114610be057600080fd5b600060208284031215610d6157600080fd5b5035919050565b60008060408385031215610d7b57600080fd5b82359150610d8b60208401610c5b565b90509250929050565b600080600060408486031215610da957600080fd5b83359250602084013567ffffffffffffffff80821115610dc857600080fd5b818601915086601f830112610ddc57600080fd5b813581811115610deb57600080fd5b8760208260051b8501011115610e0057600080fd5b6020830194508093505050509250925092565b6000815160005b81811015610e345760208185018101518683015201610e1a565b81811115610e43576000828601525b509290920192915050565b6000610e5a8285610e13565b7f2d000000000000000000000000000000000000000000000000000000000000008152610e8a6001820185610e13565b95945050505050565b60008219821115610ea657610ea6610f3b565b500190565b600082610eba57610eba610f51565b500490565b6000816000190483118215151615610ed957610ed9610f3b565b500290565b600082821015610ef057610ef0610f3b565b500390565b600081610f0457610f04610f3b565b506000190190565b6000600019821415610f2057610f20610f3b565b5060010190565b600082610f3657610f36610f51565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122000a179d30bb906354062a600a7eee8e7630c58fcdc8038af0acd92ad0bdee08364736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.