More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Receive Gift | 16271413 | 613 days ago | IN | 0 ETH | 0.00105817 | ||||
Receive Gift | 16265877 | 614 days ago | IN | 0 ETH | 0.00095976 | ||||
Receive Gift | 16263451 | 614 days ago | IN | 0 ETH | 0.00118496 | ||||
Receive Gift | 16263331 | 614 days ago | IN | 0 ETH | 0.00097281 | ||||
Receive Gift | 16263314 | 614 days ago | IN | 0 ETH | 0.00115944 | ||||
Receive Gift | 16263261 | 614 days ago | IN | 0 ETH | 0.00123661 | ||||
Receive Gift | 16263261 | 614 days ago | IN | 0 ETH | 0.00099158 | ||||
Receive Gift | 16263139 | 614 days ago | IN | 0 ETH | 0.00077411 | ||||
Approve Collecti... | 16121794 | 634 days ago | IN | 0 ETH | 0.00056534 | ||||
0x60806040 | 16095156 | 638 days ago | IN | 0 ETH | 0.01290438 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SecretSanta
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /// @title SecretSanta /// @author cesargdm.eth import '@openzeppelin/contracts/token/ERC721/IERC721.sol'; import '@openzeppelin/contracts/token/ERC1155/IERC1155.sol'; import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol'; import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/security/Pausable.sol'; import '@openzeppelin/contracts/security/ReentrancyGuard.sol'; struct Gift { address participant; address collection; uint256 itemId; uint256 value; } enum Participation { None, Sent, Received } /** * @dev This implementation uses Ownable, a Multisig wallet would be the best * owner of this contract or some kind of governance system. */ contract SecretSanta is IERC721Receiver, Ownable, ReentrancyGuard, Pausable { /** * @dev Timestamp to enable receiving gifts */ uint256 public receiveTimestamp; /** * @dev Gifts received by participants */ Gift[] private receivedGifts; /** * @dev Address to participation status mapping */ mapping(address => Participation) public participations; /** * @dev Better than allowlisting wallets, we allowlist collections * this can be used to make exchanges between small and large communities */ mapping(address => bool) public approvedCollections; modifier onlyNotParticipants(address _from) { require( participations[_from] != Participation.Sent, 'SecretSanta: you already sent a gift' ); _; } modifier onlyApprovedCollection() { require( approvedCollections[_msgSender()], 'SecretSanta: this collection is not approved' ); _; } modifier onlyBeforeReceiveTimestamp() { require( block.timestamp <= receiveTimestamp, 'SecretSanta: you can no longer send a gift' ); _; } constructor( uint256 _receiveTimestamp, address[] memory _approvedCollections ) { require( _receiveTimestamp > block.timestamp, 'SecretSanta: receiveTimestamp must be in the future' ); receiveTimestamp = _receiveTimestamp; for (uint256 i = 0; i < _approvedCollections.length; i++) { approvedCollections[_approvedCollections[i]] = true; } } function onERC1155Received( address, address _from, uint256 _tokenId, uint256 _value, bytes calldata ) external whenNotPaused onlyBeforeReceiveTimestamp onlyApprovedCollection onlyNotParticipants(_from) returns (bytes4) { receivedGifts.push(Gift(_from, _msgSender(), _tokenId, _value)); participations[_from] = Participation.Sent; return this.onERC1155Received.selector; } /** * @dev This doesnt prevent malicious collections from transfering a token, * but won't not take into account any tokens that are not allowed * @notice Don't transfer tokens if your collection is not allowed * @param _from The address which previously owned the token * @param _tokenId The token identifier which is being transferred */ function onERC721Received( address, address _from, uint256 _tokenId, bytes calldata ) external whenNotPaused onlyBeforeReceiveTimestamp onlyApprovedCollection onlyNotParticipants(_from) returns (bytes4) { receivedGifts.push(Gift(_from, _msgSender(), _tokenId, 0)); participations[_from] = Participation.Sent; return this.onERC721Received.selector; } /* R E C E I V E */ /** * @dev Withdraws the NFT from the contract and sends it to the participant */ function receiveGift() external nonReentrant whenNotPaused { require( block.timestamp > receiveTimestamp, 'SecretSanta: receive not yet available' ); require( participations[_msgSender()] != Participation.Received, "SecretSanta: you've already received a gift" ); require( participations[_msgSender()] == Participation.Sent, "SecretSanta: you haven't sent a gift" ); require(receivedGifts.length > 0, 'SecretSanta: no gifts available'); Gift memory gift = receivedGifts[receivedGifts.length - 1]; require( gift.participant != _msgSender(), 'SecretSanta: you cannot receive your own gift' ); if (gift.value > 0) { IERC1155(gift.collection).safeTransferFrom( address(this), _msgSender(), gift.itemId, gift.value, '' ); } else { IERC721(gift.collection).safeTransferFrom( address(this), _msgSender(), gift.itemId ); } receivedGifts.pop(); participations[_msgSender()] = Participation.Received; } /* U T I L I T I E S */ /** * @dev Set the timestamp when participations can start receiving their gifts * @param _receiveTimestamp Timestamp in seconds */ function setReceiveTimestamp(uint256 _receiveTimestamp) external onlyOwner { require( _receiveTimestamp > block.timestamp, 'SecretSanta: receiveTimestamp must be in the future' ); receiveTimestamp = _receiveTimestamp; } /** * @dev Add a collection to the approvedCollections * @param _collection Collection address */ function approveCollection(address _collection) external onlyOwner { approvedCollections[_collection] = true; } /** * @dev Function to return a list of all current gifts */ function gifts() external view returns (Gift[] memory) { Gift[] memory _gifts = new Gift[](receivedGifts.length); for (uint256 i = 0; i < receivedGifts.length; i++) { _gifts[i] = receivedGifts[i]; } return _gifts; } /* A D M I N */ /** * @dev Intended to be used when we face an issue with the regular * process of receiving a gift. Only to be used as the last resort. * @param _collection Collection address * @param _toAddress Address of the receiver * @param _tokenId Token id */ function safeTransfer( address _collection, address _toAddress, uint256 _tokenId ) external onlyOwner whenPaused { IERC721(_collection).safeTransferFrom(address(this), _toAddress, _tokenId); } /** * @dev Intended to be used when we face an issue with the regular * process of receiving a gift. Only to be used as the last resort. * @param _collection Collection address * @param _toAddress Address of the receiver * @param _tokenId Token id * @param _value Token value */ function safeTransfer( address _collection, address _toAddress, uint256 _tokenId, uint256 _value ) external onlyOwner whenPaused { IERC1155(_collection).safeTransferFrom( address(this), _toAddress, _tokenId, _value, '' ); } function pause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (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`. * * 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; /** * @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 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: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (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 `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// 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": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_receiveTimestamp","type":"uint256"},{"internalType":"address[]","name":"_approvedCollections","type":"address[]"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"}],"name":"approveCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedCollections","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gifts","outputs":[{"components":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"address","name":"collection","type":"address"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct Gift[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","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":[{"internalType":"address","name":"","type":"address"}],"name":"participations","outputs":[{"internalType":"enum Participation","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiveGift","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"receiveTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"},{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collection","type":"address"},{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"safeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_receiveTimestamp","type":"uint256"}],"name":"setReceiveTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620016c1380380620016c18339810160408190526200003491620001c7565b6200003f3362000144565b600180556002805460ff19169055428211620000c75760405162461bcd60e51b815260206004820152603360248201527f53656372657453616e74613a207265636569766554696d657374616d70206d7560448201527f737420626520696e207468652066757475726500000000000000000000000000606482015260840160405180910390fd5b600382905560005b81518110156200013b57600160066000848481518110620000f457620000f4620002a7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806200013281620002bd565b915050620000cf565b505050620002e5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620001c257600080fd5b919050565b60008060408385031215620001db57600080fd5b8251602080850151919350906001600160401b0380821115620001fd57600080fd5b818601915086601f8301126200021257600080fd5b81518181111562000227576200022762000194565b8060051b604051601f19603f830116810181811085821117156200024f576200024f62000194565b6040529182528482019250838101850191898311156200026e57600080fd5b938501935b8285101562000297576200028785620001aa565b8452938501939285019262000273565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060018201620002de57634e487b7160e01b600052601160045260246000fd5b5060010190565b6113cc80620002f56000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063a43435a9116100a2578063ec07fb7411610071578063ec07fb74146101fa578063f23a6e611461021d578063f2fde38b14610230578063f8f39e3014610243578063fc9541441461025657600080fd5b8063a43435a9146101b5578063bb3ee79d146101c8578063c1687dde146101d0578063d1660f99146101e757600080fd5b8063715018a6116100de578063715018a6146101755780638456cb591461017d5780638da5cb5b146101855780639e8cb3c5146101a057600080fd5b8063150b7a02146101105780633f4ba83a146101415780635c975abb1461014b5780636aae5cda14610162575b600080fd5b61012361011e366004610fac565b610286565b6040516001600160e01b031990911681526020015b60405180910390f35b6101496103fb565b005b60025460ff165b6040519015158152602001610138565b61014961017036600461101b565b61040d565b610149610439565b61014961044b565b6000546040516001600160a01b039091168152602001610138565b6101a861045b565b604051610138919061103d565b6101496101c33660046110ad565b610576565b6101496105ee565b6101d960035481565b604051908152602001610138565b6101496101f53660046110c6565b610a4b565b61015261020836600461101b565b60066020526000908152604090205460ff1681565b61012361022b366004611102565b610ac8565b61014961023e36600461101b565b610c33565b61014961025136600461117a565b610cac565b61027961026436600461101b565b60056020526000908152604090205460ff1681565b60405161013891906111d2565b6000610290610d26565b6003544211156102bb5760405162461bcd60e51b81526004016102b2906111fa565b60405180910390fd5b3360009081526006602052604090205460ff166102ea5760405162461bcd60e51b81526004016102b290611244565b8460016001600160a01b03821660009081526005602052604090205460ff16600281111561031a5761031a6111bc565b036103375760405162461bcd60e51b81526004016102b290611290565b60046040518060800160405280886001600160a01b0316815260200161035a3390565b6001600160a01b03908116825260208083018a905260006040938401819052855460018181018855968252828220865160049092020180549185166001600160a01b03199283161781558684015181890180549187169190931617909155858501516002820155606090950151600390950194909455908a168352600590529020805460ff191682800217905550630a85bd0160e11b979650505050505050565b610403610d6c565b61040b610dc6565b565b610415610d6c565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b610441610d6c565b61040b6000610e18565b610453610d6c565b61040b610e68565b60045460609060009067ffffffffffffffff81111561047c5761047c6112d4565b6040519080825280602002602001820160405280156104ce57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161049a5790505b50905060005b60045481101561057057600481815481106104f1576104f16112ea565b600091825260209182902060408051608081018252600490930290910180546001600160a01b0390811684526001820154169383019390935260028301549082015260039091015460608201528251839083908110610552576105526112ea565b6020026020010181905250808061056890611316565b9150506104d4565b50919050565b61057e610d6c565b4281116105e95760405162461bcd60e51b815260206004820152603360248201527f53656372657453616e74613a207265636569766554696d657374616d70206d75604482015272737420626520696e207468652066757475726560681b60648201526084016102b2565b600355565b6105f6610ea5565b6105fe610d26565b600354421161065e5760405162461bcd60e51b815260206004820152602660248201527f53656372657453616e74613a2072656365697665206e6f742079657420617661604482015265696c61626c6560d01b60648201526084016102b2565b3360009081526005602052604090205460029060ff1681811115610684576106846111bc565b036106e55760405162461bcd60e51b815260206004820152602b60248201527f53656372657453616e74613a20796f7527766520616c7265616479207265636560448201526a1a5d995908184819da599d60aa1b60648201526084016102b2565b3360009081526005602052604090205460019060ff16600281111561070c5761070c6111bc565b146107655760405162461bcd60e51b8152602060048201526024808201527f53656372657453616e74613a20796f7520686176656e27742073656e7420612060448201526319da599d60e21b60648201526084016102b2565b6004546107b45760405162461bcd60e51b815260206004820152601f60248201527f53656372657453616e74613a206e6f20676966747320617661696c61626c650060448201526064016102b2565b60048054600091906107c89060019061132f565b815481106107d8576107d86112ea565b600091825260209182902060408051608081018252600490930290910180546001600160a01b039081168452600182015416938301939093526002830154908201526003909101546060820152905061082e3390565b6001600160a01b031681600001516001600160a01b0316036108a85760405162461bcd60e51b815260206004820152602d60248201527f53656372657453616e74613a20796f752063616e6e6f7420726563656976652060448201526c1e5bdd5c881bdddb8819da599d609a1b60648201526084016102b2565b6060810151156109275760208101516001600160a01b031663f242432a3033846040015185606001516040518563ffffffff1660e01b81526004016108f09493929190611348565b600060405180830381600087803b15801561090a57600080fd5b505af115801561091e573d6000803e3d6000fd5b505050506109a9565b60208101516001600160a01b03166342842e0e303360408086015190516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b505050505b60048054806109ba576109ba611380565b60008281526020812060046000199093019283020180546001600160a01b031990811682556001820180549091169055600280820183905560039091018290559190925590600590610a093390565b6001600160a01b031681526020810191909152604001600020805460ff19166001836002811115610a3c57610a3c6111bc565b02179055505061040b60018055565b610a53610d6c565b610a5b610efe565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390528416906342842e0e90606401600060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b50505050505050565b6000610ad2610d26565b600354421115610af45760405162461bcd60e51b81526004016102b2906111fa565b3360009081526006602052604090205460ff16610b235760405162461bcd60e51b81526004016102b290611244565b8560016001600160a01b03821660009081526005602052604090205460ff166002811115610b5357610b536111bc565b03610b705760405162461bcd60e51b81526004016102b290611290565b60046040518060800160405280896001600160a01b03168152602001610b933390565b6001600160a01b03908116825260208083018b905260409283018a90528454600181810187556000968752828720865160049093020180549285166001600160a01b03199384161781558684015181830180549187169190941617909255858501516002830155606090950151600390910155908b16845260059052909120805460ff19168280021790555063f23a6e6160e01b98975050505050505050565b610c3b610d6c565b6001600160a01b038116610ca05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b2565b610ca981610e18565b50565b610cb4610d6c565b610cbc610efe565b604051637921219560e11b81526001600160a01b0385169063f242432a90610cee903090879087908790600401611348565b600060405180830381600087803b158015610d0857600080fd5b505af1158015610d1c573d6000803e3d6000fd5b5050505050505050565b60025460ff161561040b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016102b2565b6000546001600160a01b0316331461040b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b2565b610dce610efe565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e70610d26565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dfb3390565b600260015403610ef75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102b2565b6002600155565b60025460ff1661040b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016102b2565b80356001600160a01b0381168114610f5e57600080fd5b919050565b60008083601f840112610f7557600080fd5b50813567ffffffffffffffff811115610f8d57600080fd5b602083019150836020828501011115610fa557600080fd5b9250929050565b600080600080600060808688031215610fc457600080fd5b610fcd86610f47565b9450610fdb60208701610f47565b935060408601359250606086013567ffffffffffffffff811115610ffe57600080fd5b61100a88828901610f63565b969995985093965092949392505050565b60006020828403121561102d57600080fd5b61103682610f47565b9392505050565b602080825282518282018190526000919060409081850190868401855b828110156110a057815180516001600160a01b0390811686528782015116878601528581015186860152606090810151908501526080909301929085019060010161105a565b5091979650505050505050565b6000602082840312156110bf57600080fd5b5035919050565b6000806000606084860312156110db57600080fd5b6110e484610f47565b92506110f260208501610f47565b9150604084013590509250925092565b60008060008060008060a0878903121561111b57600080fd5b61112487610f47565b955061113260208801610f47565b94506040870135935060608701359250608087013567ffffffffffffffff81111561115c57600080fd5b61116889828a01610f63565b979a9699509497509295939492505050565b6000806000806080858703121561119057600080fd5b61119985610f47565b93506111a760208601610f47565b93969395505050506040820135916060013590565b634e487b7160e01b600052602160045260246000fd5b60208101600383106111f457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252602a908201527f53656372657453616e74613a20796f752063616e206e6f206c6f6e6765722073604082015269195b9908184819da599d60b21b606082015260800190565b6020808252602c908201527f53656372657453616e74613a207468697320636f6c6c656374696f6e2069732060408201526b1b9bdd08185c1c1c9bdd995960a21b606082015260800190565b60208082526024908201527f53656372657453616e74613a20796f7520616c72656164792073656e7420612060408201526319da599d60e21b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161132857611328611300565b5060010190565b8181038181111561134257611342611300565b92915050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122067493c3e993965a76bfa401a9850ab690b2f443b4cba5492232f4a4e55d289e064736f6c634300081100330000000000000000000000000000000000000000000000000000000063a7928000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000006000000000000000000000000bb3a83e3cbb30cea709c0abc3db1915127792816000000000000000000000000a4aaba131f8758805223aa2024708bfd0bff49aa000000000000000000000000741b8f2e044332e6598560735fbbcfcd870bbdac00000000000000000000000032216cef02fff0a86243e8bd7f46f59aa64122630000000000000000000000005136ef1976a4be1bf2f29bc4240f53c969fb1d76000000000000000000000000ce735f825732f23ce52674e3c5cc048d461637d2
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063a43435a9116100a2578063ec07fb7411610071578063ec07fb74146101fa578063f23a6e611461021d578063f2fde38b14610230578063f8f39e3014610243578063fc9541441461025657600080fd5b8063a43435a9146101b5578063bb3ee79d146101c8578063c1687dde146101d0578063d1660f99146101e757600080fd5b8063715018a6116100de578063715018a6146101755780638456cb591461017d5780638da5cb5b146101855780639e8cb3c5146101a057600080fd5b8063150b7a02146101105780633f4ba83a146101415780635c975abb1461014b5780636aae5cda14610162575b600080fd5b61012361011e366004610fac565b610286565b6040516001600160e01b031990911681526020015b60405180910390f35b6101496103fb565b005b60025460ff165b6040519015158152602001610138565b61014961017036600461101b565b61040d565b610149610439565b61014961044b565b6000546040516001600160a01b039091168152602001610138565b6101a861045b565b604051610138919061103d565b6101496101c33660046110ad565b610576565b6101496105ee565b6101d960035481565b604051908152602001610138565b6101496101f53660046110c6565b610a4b565b61015261020836600461101b565b60066020526000908152604090205460ff1681565b61012361022b366004611102565b610ac8565b61014961023e36600461101b565b610c33565b61014961025136600461117a565b610cac565b61027961026436600461101b565b60056020526000908152604090205460ff1681565b60405161013891906111d2565b6000610290610d26565b6003544211156102bb5760405162461bcd60e51b81526004016102b2906111fa565b60405180910390fd5b3360009081526006602052604090205460ff166102ea5760405162461bcd60e51b81526004016102b290611244565b8460016001600160a01b03821660009081526005602052604090205460ff16600281111561031a5761031a6111bc565b036103375760405162461bcd60e51b81526004016102b290611290565b60046040518060800160405280886001600160a01b0316815260200161035a3390565b6001600160a01b03908116825260208083018a905260006040938401819052855460018181018855968252828220865160049092020180549185166001600160a01b03199283161781558684015181890180549187169190931617909155858501516002820155606090950151600390950194909455908a168352600590529020805460ff191682800217905550630a85bd0160e11b979650505050505050565b610403610d6c565b61040b610dc6565b565b610415610d6c565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b610441610d6c565b61040b6000610e18565b610453610d6c565b61040b610e68565b60045460609060009067ffffffffffffffff81111561047c5761047c6112d4565b6040519080825280602002602001820160405280156104ce57816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161049a5790505b50905060005b60045481101561057057600481815481106104f1576104f16112ea565b600091825260209182902060408051608081018252600490930290910180546001600160a01b0390811684526001820154169383019390935260028301549082015260039091015460608201528251839083908110610552576105526112ea565b6020026020010181905250808061056890611316565b9150506104d4565b50919050565b61057e610d6c565b4281116105e95760405162461bcd60e51b815260206004820152603360248201527f53656372657453616e74613a207265636569766554696d657374616d70206d75604482015272737420626520696e207468652066757475726560681b60648201526084016102b2565b600355565b6105f6610ea5565b6105fe610d26565b600354421161065e5760405162461bcd60e51b815260206004820152602660248201527f53656372657453616e74613a2072656365697665206e6f742079657420617661604482015265696c61626c6560d01b60648201526084016102b2565b3360009081526005602052604090205460029060ff1681811115610684576106846111bc565b036106e55760405162461bcd60e51b815260206004820152602b60248201527f53656372657453616e74613a20796f7527766520616c7265616479207265636560448201526a1a5d995908184819da599d60aa1b60648201526084016102b2565b3360009081526005602052604090205460019060ff16600281111561070c5761070c6111bc565b146107655760405162461bcd60e51b8152602060048201526024808201527f53656372657453616e74613a20796f7520686176656e27742073656e7420612060448201526319da599d60e21b60648201526084016102b2565b6004546107b45760405162461bcd60e51b815260206004820152601f60248201527f53656372657453616e74613a206e6f20676966747320617661696c61626c650060448201526064016102b2565b60048054600091906107c89060019061132f565b815481106107d8576107d86112ea565b600091825260209182902060408051608081018252600490930290910180546001600160a01b039081168452600182015416938301939093526002830154908201526003909101546060820152905061082e3390565b6001600160a01b031681600001516001600160a01b0316036108a85760405162461bcd60e51b815260206004820152602d60248201527f53656372657453616e74613a20796f752063616e6e6f7420726563656976652060448201526c1e5bdd5c881bdddb8819da599d609a1b60648201526084016102b2565b6060810151156109275760208101516001600160a01b031663f242432a3033846040015185606001516040518563ffffffff1660e01b81526004016108f09493929190611348565b600060405180830381600087803b15801561090a57600080fd5b505af115801561091e573d6000803e3d6000fd5b505050506109a9565b60208101516001600160a01b03166342842e0e303360408086015190516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b505050505b60048054806109ba576109ba611380565b60008281526020812060046000199093019283020180546001600160a01b031990811682556001820180549091169055600280820183905560039091018290559190925590600590610a093390565b6001600160a01b031681526020810191909152604001600020805460ff19166001836002811115610a3c57610a3c6111bc565b02179055505061040b60018055565b610a53610d6c565b610a5b610efe565b604051632142170760e11b81523060048201526001600160a01b038381166024830152604482018390528416906342842e0e90606401600060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b50505050505050565b6000610ad2610d26565b600354421115610af45760405162461bcd60e51b81526004016102b2906111fa565b3360009081526006602052604090205460ff16610b235760405162461bcd60e51b81526004016102b290611244565b8560016001600160a01b03821660009081526005602052604090205460ff166002811115610b5357610b536111bc565b03610b705760405162461bcd60e51b81526004016102b290611290565b60046040518060800160405280896001600160a01b03168152602001610b933390565b6001600160a01b03908116825260208083018b905260409283018a90528454600181810187556000968752828720865160049093020180549285166001600160a01b03199384161781558684015181830180549187169190941617909255858501516002830155606090950151600390910155908b16845260059052909120805460ff19168280021790555063f23a6e6160e01b98975050505050505050565b610c3b610d6c565b6001600160a01b038116610ca05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b2565b610ca981610e18565b50565b610cb4610d6c565b610cbc610efe565b604051637921219560e11b81526001600160a01b0385169063f242432a90610cee903090879087908790600401611348565b600060405180830381600087803b158015610d0857600080fd5b505af1158015610d1c573d6000803e3d6000fd5b5050505050505050565b60025460ff161561040b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016102b2565b6000546001600160a01b0316331461040b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b2565b610dce610efe565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e70610d26565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dfb3390565b600260015403610ef75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102b2565b6002600155565b60025460ff1661040b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016102b2565b80356001600160a01b0381168114610f5e57600080fd5b919050565b60008083601f840112610f7557600080fd5b50813567ffffffffffffffff811115610f8d57600080fd5b602083019150836020828501011115610fa557600080fd5b9250929050565b600080600080600060808688031215610fc457600080fd5b610fcd86610f47565b9450610fdb60208701610f47565b935060408601359250606086013567ffffffffffffffff811115610ffe57600080fd5b61100a88828901610f63565b969995985093965092949392505050565b60006020828403121561102d57600080fd5b61103682610f47565b9392505050565b602080825282518282018190526000919060409081850190868401855b828110156110a057815180516001600160a01b0390811686528782015116878601528581015186860152606090810151908501526080909301929085019060010161105a565b5091979650505050505050565b6000602082840312156110bf57600080fd5b5035919050565b6000806000606084860312156110db57600080fd5b6110e484610f47565b92506110f260208501610f47565b9150604084013590509250925092565b60008060008060008060a0878903121561111b57600080fd5b61112487610f47565b955061113260208801610f47565b94506040870135935060608701359250608087013567ffffffffffffffff81111561115c57600080fd5b61116889828a01610f63565b979a9699509497509295939492505050565b6000806000806080858703121561119057600080fd5b61119985610f47565b93506111a760208601610f47565b93969395505050506040820135916060013590565b634e487b7160e01b600052602160045260246000fd5b60208101600383106111f457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252602a908201527f53656372657453616e74613a20796f752063616e206e6f206c6f6e6765722073604082015269195b9908184819da599d60b21b606082015260800190565b6020808252602c908201527f53656372657453616e74613a207468697320636f6c6c656374696f6e2069732060408201526b1b9bdd08185c1c1c9bdd995960a21b606082015260800190565b60208082526024908201527f53656372657453616e74613a20796f7520616c72656164792073656e7420612060408201526319da599d60e21b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161132857611328611300565b5060010190565b8181038181111561134257611342611300565b92915050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122067493c3e993965a76bfa401a9850ab690b2f443b4cba5492232f4a4e55d289e064736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000063a7928000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000006000000000000000000000000bb3a83e3cbb30cea709c0abc3db1915127792816000000000000000000000000a4aaba131f8758805223aa2024708bfd0bff49aa000000000000000000000000741b8f2e044332e6598560735fbbcfcd870bbdac00000000000000000000000032216cef02fff0a86243e8bd7f46f59aa64122630000000000000000000000005136ef1976a4be1bf2f29bc4240f53c969fb1d76000000000000000000000000ce735f825732f23ce52674e3c5cc048d461637d2
-----Decoded View---------------
Arg [0] : _receiveTimestamp (uint256): 1671926400
Arg [1] : _approvedCollections (address[]): 0xBB3A83e3cbB30ceA709C0ABc3DB1915127792816,0xA4aaba131F8758805223Aa2024708BfD0BfF49AA,0x741B8f2e044332e6598560735FbBcFcd870BBdAC,0x32216cEF02FFF0a86243E8Bd7F46F59AA6412263,0x5136ef1976a4BE1BF2f29BC4240F53c969fB1d76,0xce735F825732f23ce52674e3C5cC048D461637D2
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000063a79280
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 000000000000000000000000bb3a83e3cbb30cea709c0abc3db1915127792816
Arg [4] : 000000000000000000000000a4aaba131f8758805223aa2024708bfd0bff49aa
Arg [5] : 000000000000000000000000741b8f2e044332e6598560735fbbcfcd870bbdac
Arg [6] : 00000000000000000000000032216cef02fff0a86243e8bd7f46f59aa6412263
Arg [7] : 0000000000000000000000005136ef1976a4be1bf2f29bc4240f53c969fb1d76
Arg [8] : 000000000000000000000000ce735f825732f23ce52674e3c5cc048d461637d2
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.