Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,654 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 15435150 | 821 days ago | IN | 0 ETH | 0.0018904 | ||||
Claim | 15338454 | 836 days ago | IN | 0 ETH | 0.00047475 | ||||
Claim | 15338435 | 836 days ago | IN | 0 ETH | 0.00049262 | ||||
Claim | 15291281 | 843 days ago | IN | 0 ETH | 0.00141932 | ||||
Claim | 15286721 | 844 days ago | IN | 0 ETH | 0.00143339 | ||||
Claim | 15272835 | 846 days ago | IN | 0 ETH | 0.00050503 | ||||
Claim | 15260112 | 848 days ago | IN | 0 ETH | 0.00122589 | ||||
Claim | 15238359 | 852 days ago | IN | 0 ETH | 0.00638662 | ||||
Claim | 15209253 | 856 days ago | IN | 0 ETH | 0.00168878 | ||||
Claim | 15207023 | 857 days ago | IN | 0 ETH | 0.00108947 | ||||
Claim | 15201495 | 857 days ago | IN | 0 ETH | 0.00216421 | ||||
Claim | 15194834 | 858 days ago | IN | 0 ETH | 0.00114293 | ||||
Claim | 15189001 | 859 days ago | IN | 0 ETH | 0.00297175 | ||||
Claim | 15177169 | 861 days ago | IN | 0 ETH | 0.00229044 | ||||
Claim | 15176126 | 861 days ago | IN | 0 ETH | 0.00190595 | ||||
Claim | 15174709 | 862 days ago | IN | 0 ETH | 0.0046837 | ||||
Claim | 15172218 | 862 days ago | IN | 0 ETH | 0.00325233 | ||||
Claim | 15170322 | 862 days ago | IN | 0 ETH | 0.00317678 | ||||
Claim | 15162818 | 863 days ago | IN | 0 ETH | 0.00734923 | ||||
Claim | 15160645 | 864 days ago | IN | 0 ETH | 0.00794203 | ||||
Claim | 15160471 | 864 days ago | IN | 0 ETH | 0.00365474 | ||||
Claim | 15155804 | 865 days ago | IN | 0 ETH | 0.00206753 | ||||
Claim | 15152010 | 865 days ago | IN | 0 ETH | 0.00097295 | ||||
Claim | 15149699 | 865 days ago | IN | 0 ETH | 0.00270475 | ||||
Claim | 15146940 | 866 days ago | IN | 0 ETH | 0.00398761 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
WNS_Pass_Claim
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 1500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./IWNS_Passes.sol"; import "./INFTW_Escrow.sol"; contract WNS_Pass_Claim is Ownable, ReentrancyGuard { IWNS_Passes immutable wnsPasses; INFTWEscrow immutable nftwEscrow; IERC721 immutable nftw; IERC721 immutable avatars; IERC721 immutable grayboys; uint256 private constant PREREGISTRATION_PASS_TYPE_ID = 2; mapping(uint256 => bool) public worldsClaimed; mapping(uint256 => bool) public avatarsClaimed; mapping(uint256 => bool) public graysboysClaimed; bool public secondClaimEnabled = false; constructor(address _wnsPasses, address _nftw, address _nftwEscrow, address _avatars, address _grayboys) { wnsPasses = IWNS_Passes(_wnsPasses); nftw = IERC721(_nftw); nftwEscrow = INFTWEscrow(_nftwEscrow); avatars = IERC721(_avatars); grayboys = IERC721(_grayboys); } function claim(uint256[] calldata _worldIds, uint256[] calldata _avatarIds, uint256[] calldata _grayboyIds) external nonReentrant { uint256 claimTotal = 0; for (uint256 i = 0; i < _worldIds.length; i++) { uint256 worldId = _worldIds[i]; INFTWEscrow.WorldInfo memory worldInfo = nftwEscrow.getWorldInfo(worldId); require(nftw.ownerOf(worldId) == msg.sender || worldInfo.owner == msg.sender, "Claimer is not owner"); require(!worldsClaimed[worldId], "Pass already claimed for world"); worldsClaimed[worldId] = true; claimTotal++; } if (_avatarIds.length > 0 || _grayboyIds.length > 0) { require(secondClaimEnabled, "Second claim for avatars and gray boys is not yet enabled."); for (uint256 i = 0; i < _avatarIds.length; i++) { uint256 avatarId = _avatarIds[i]; require(avatars.ownerOf(avatarId) == msg.sender, "Claimer is not owner"); require(!avatarsClaimed[avatarId], "Pass already claimed for avatar"); avatarsClaimed[avatarId] = true; claimTotal++; } for (uint256 i = 0; i < _grayboyIds.length; i++) { uint256 grayboyId = _grayboyIds[i]; require(grayboys.ownerOf(grayboyId) == msg.sender, "Claimer is not owner"); require(!graysboysClaimed[grayboyId], "Pass already claimed for gray boy"); graysboysClaimed[grayboyId] = true; claimTotal++; } } if (claimTotal > 0) { wnsPasses.mintTypeToAddress(PREREGISTRATION_PASS_TYPE_ID, claimTotal, msg.sender); } } function toggleSecondClaim(bool _enabled) external onlyOwner { secondClaimEnabled = _enabled; } }
// 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 (last updated v4.6.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 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 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 v4.4.1 (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() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // 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 pragma solidity ^0.8.2; import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; interface IWNS_Passes is IERC1155 { function burnTypeBulk(uint256 _typeId, address[] calldata owners) external; function burnTypeForOwnerAddress(uint256 _typeId, uint256 _quantity, address _typeOwnerAddress) external returns (bool); function mintTypeToAddress(uint256 _typeId, uint256 _quantity, address _toAddress) external returns (bool); function bulkSafeTransfer(uint256 _typeId, uint256 _quantityPerRecipient, address[] calldata recipients) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.2; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; interface INFTWEscrow is IERC165, IERC20, IERC721Receiver { event WeightUpdated(address indexed user, bool increase, uint weight, uint timestamp); event WorldStaked(uint256 indexed tokenId, address indexed user); event WorldUnstaked(uint256 indexed tokenId, address indexed user); event RewardsSet(uint32 start, uint32 end, uint256 rate); event RewardsUpdated(uint32 start, uint32 end, uint256 rate); event RewardsPerWeightUpdated(uint256 accumulated); event UserRewardsUpdated(address user, uint256 userRewards, uint256 paidRewardPerWeight); event RewardClaimed(address receiver, uint256 claimed); struct WorldInfo { uint16 weight; // weight based on rarity address owner; // staked to, otherwise owner == 0 uint16 deposit; // unit is ether, paid in WRLD. The deposit is deducted from the last payment(s) since the deposit is non-custodial uint16 rentalPerDay; // unit is ether, paid in WRLD. Total is deposit + rentalPerDay * days uint16 minRentDays; // must rent for at least min rent days, otherwise deposit is forfeited up to this amount uint32 rentableUntil; // timestamp in unix epoch } struct RewardsPeriod { uint32 start; // reward start time, in unix epoch uint32 end; // reward end time, in unix epoch } struct RewardsPerWeight { uint32 totalWeight; uint96 accumulated; uint32 lastUpdated; uint96 rate; } struct UserRewards { uint32 stakedWeight; uint96 accumulated; uint96 checkpoint; } // view functions function getWorldInfo(uint tokenId) external view returns(WorldInfo memory); function checkUserRewards(address user) external view returns(uint); function onERC721Received(address, address, uint256, bytes calldata) external view override returns(bytes4); // public functions function initialStake(uint[] calldata tokenIds, uint[] calldata weights, address stakeTo, uint16 _deposit, uint16 _rentalPerDay, uint16 _minRentDays, uint32 _rentableUntil, uint32 _maxTimestamp, bytes calldata _signature) external; function stake(uint[] calldata tokenIds, address stakeTo, uint16 _deposit, uint16 _rentalPerDay, uint16 _minRentDays, uint32 _rentableUntil) external; function updateRent(uint[] calldata tokenIds, uint16 _deposit, uint16 _rentalPerDay, uint16 _minRentDays, uint32 _rentableUntil) external; function extendRentalPeriod(uint tokenId, uint32 _rentableUntil) external; function unstake(uint[] calldata tokenIds, address unstakeTo) external; function claim(address to) external; }
// 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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 be 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.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 (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 1500 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_wnsPasses","type":"address"},{"internalType":"address","name":"_nftw","type":"address"},{"internalType":"address","name":"_nftwEscrow","type":"address"},{"internalType":"address","name":"_avatars","type":"address"},{"internalType":"address","name":"_grayboys","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"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"avatarsClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_worldIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_avatarIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_grayboyIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"graysboysClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"secondClaimEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"toggleSecondClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"worldsClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101206040526005805460ff191690553480156200001c57600080fd5b5060405162001047380380620010478339810160408190526200003f91620000f3565b6200004a3362000086565b600180556001600160601b0319606095861b811660805293851b841660c05291841b831660a052831b821660e05290911b166101005262000162565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ee57600080fd5b919050565b600080600080600060a086880312156200010b578081fd5b6200011686620000d6565b94506200012660208701620000d6565b93506200013660408701620000d6565b92506200014660608701620000d6565b91506200015660808701620000d6565b90509295509295909350565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c610e91620001b660003960006107f001526000610622015260006103d4015260006102fc015260006109e50152610e916000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063deb78f3b1161005b578063deb78f3b14610138578063f2fde38b1461015b578063f4a851fb1461016e57600080fd5b80638da5cb5b1461010a578063c9684a8d1461012557600080fd5b80630a66701f146100a857806323660008146100bd57806329f3afd7146100df578063715018a614610102575b600080fd5b6100bb6100b6366004610d17565b610191565b005b6005546100ca9060ff1681565b60405190151581526020015b60405180910390f35b6100ca6100ed366004610df9565b60036020526000908152604090205460ff1681565b6100bb610203565b6000546040516001600160a01b0390911681526020016100d6565b6100bb610133366004610c81565b610269565b6100ca610146366004610df9565b60046020526000908152604090205460ff1681565b6100bb610169366004610c42565b610a78565b6100ca61017c366004610df9565b60026020526000908152604090205460ff1681565b6000546001600160a01b031633146101f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6005805460ff1916911515919091179055565b6000546001600160a01b0316331461025d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e7565b6102676000610b5a565b565b600260015414156102bc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e7565b60026001556000805b868110156105555760008888838181106102ef57634e487b7160e01b600052603260045260246000fd5b90506020020135905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c19b4ccd836040518263ffffffff1660e01b815260040161034891815260200190565b60c06040518083038186803b15801561036057600080fd5b505afa158015610374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103989190610d4f565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810184905290915033906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e9060240160206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610c65565b6001600160a01b0316148061046f575060208101516001600160a01b031633145b6104bb5760405162461bcd60e51b815260206004820152601460248201527f436c61696d6572206973206e6f74206f776e657200000000000000000000000060448201526064016101e7565b60008281526002602052604090205460ff161561051a5760405162461bcd60e51b815260206004820152601e60248201527f5061737320616c726561647920636c61696d656420666f7220776f726c64000060448201526064016101e7565b6000828152600260205260409020805460ff191660011790558361053d81610e11565b9450505050808061054d90610e11565b9150506102c5565b508315158061056357508115155b156109a35760055460ff166105e05760405162461bcd60e51b815260206004820152603a60248201527f5365636f6e6420636c61696d20666f72206176617461727320616e642067726160448201527f7920626f7973206973206e6f742079657420656e61626c65642e00000000000060648201526084016101e7565b60005b848110156107ad57600086868381811061060d57634e487b7160e01b600052603260045260246000fd5b905060200201359050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161066e91815260200190565b60206040518083038186803b15801561068657600080fd5b505afa15801561069a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106be9190610c65565b6001600160a01b0316146107145760405162461bcd60e51b815260206004820152601460248201527f436c61696d6572206973206e6f74206f776e657200000000000000000000000060448201526064016101e7565b60008181526003602052604090205460ff16156107735760405162461bcd60e51b815260206004820152601f60248201527f5061737320616c726561647920636c61696d656420666f72206176617461720060448201526064016101e7565b6000818152600360205260409020805460ff191660011790558261079681610e11565b9350505080806107a590610e11565b9150506105e3565b5060005b828110156109a15760008484838181106107db57634e487b7160e01b600052603260045260246000fd5b905060200201359050336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161083c91815260200190565b60206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c9190610c65565b6001600160a01b0316146108e25760405162461bcd60e51b815260206004820152601460248201527f436c61696d6572206973206e6f74206f776e657200000000000000000000000060448201526064016101e7565b60008181526004602052604090205460ff16156109675760405162461bcd60e51b815260206004820152602160248201527f5061737320616c726561647920636c61696d656420666f72206772617920626f60448201527f790000000000000000000000000000000000000000000000000000000000000060648201526084016101e7565b6000818152600460205260409020805460ff191660011790558261098a81610e11565b93505050808061099990610e11565b9150506107b1565b505b8015610a6b576040517f8c791c0f00000000000000000000000000000000000000000000000000000000815260026004820152602481018290523360448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638c791c0f90606401602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190610d33565b505b5050600180555050505050565b6000546001600160a01b03163314610ad25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e7565b6001600160a01b038116610b4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101e7565b610b5781610b5a565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051610bcd81610e38565b919050565b60008083601f840112610be3578182fd5b50813567ffffffffffffffff811115610bfa578182fd5b6020830191508360208260051b8501011115610c1557600080fd5b9250929050565b805161ffff81168114610bcd57600080fd5b805163ffffffff81168114610bcd57600080fd5b600060208284031215610c53578081fd5b8135610c5e81610e38565b9392505050565b600060208284031215610c76578081fd5b8151610c5e81610e38565b60008060008060008060608789031215610c99578182fd5b863567ffffffffffffffff80821115610cb0578384fd5b610cbc8a838b01610bd2565b90985096506020890135915080821115610cd4578384fd5b610ce08a838b01610bd2565b90965094506040890135915080821115610cf8578384fd5b50610d0589828a01610bd2565b979a9699509497509295939492505050565b600060208284031215610d28578081fd5b8135610c5e81610e4d565b600060208284031215610d44578081fd5b8151610c5e81610e4d565b600060c08284031215610d60578081fd5b60405160c0810181811067ffffffffffffffff82111715610d8f57634e487b7160e01b83526041600452602483fd5b604052610d9b83610c1c565b8152610da960208401610bc2565b6020820152610dba60408401610c1c565b6040820152610dcb60608401610c1c565b6060820152610ddc60808401610c1c565b6080820152610ded60a08401610c2e565b60a08201529392505050565b600060208284031215610e0a578081fd5b5035919050565b6000600019821415610e3157634e487b7160e01b81526011600452602481fd5b5060010190565b6001600160a01b0381168114610b5757600080fd5b8015158114610b5757600080fdfea26469706673582212201f1193b3b27b082f98a805d90ec2465747b7eb29a458ecbf034d06421ebe65e964736f6c63430008040033000000000000000000000000605757a5cceb44ced7a5be421735e0151333c338000000000000000000000000bd4455da5929d5639ee098abfaa3241e9ae111af00000000000000000000000069f0b8c5e94f6b64d832b7d9b15f3a88cb2f6f4b00000000000000000000000005745e72fb8b4a9b51118a168d956760e4a364440000000000000000000000008d4100897447d173289560bc85c5c432be4f44e4
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063deb78f3b1161005b578063deb78f3b14610138578063f2fde38b1461015b578063f4a851fb1461016e57600080fd5b80638da5cb5b1461010a578063c9684a8d1461012557600080fd5b80630a66701f146100a857806323660008146100bd57806329f3afd7146100df578063715018a614610102575b600080fd5b6100bb6100b6366004610d17565b610191565b005b6005546100ca9060ff1681565b60405190151581526020015b60405180910390f35b6100ca6100ed366004610df9565b60036020526000908152604090205460ff1681565b6100bb610203565b6000546040516001600160a01b0390911681526020016100d6565b6100bb610133366004610c81565b610269565b6100ca610146366004610df9565b60046020526000908152604090205460ff1681565b6100bb610169366004610c42565b610a78565b6100ca61017c366004610df9565b60026020526000908152604090205460ff1681565b6000546001600160a01b031633146101f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6005805460ff1916911515919091179055565b6000546001600160a01b0316331461025d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e7565b6102676000610b5a565b565b600260015414156102bc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e7565b60026001556000805b868110156105555760008888838181106102ef57634e487b7160e01b600052603260045260246000fd5b90506020020135905060007f00000000000000000000000069f0b8c5e94f6b64d832b7d9b15f3a88cb2f6f4b6001600160a01b031663c19b4ccd836040518263ffffffff1660e01b815260040161034891815260200190565b60c06040518083038186803b15801561036057600080fd5b505afa158015610374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103989190610d4f565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810184905290915033906001600160a01b037f000000000000000000000000bd4455da5929d5639ee098abfaa3241e9ae111af1690636352211e9060240160206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610c65565b6001600160a01b0316148061046f575060208101516001600160a01b031633145b6104bb5760405162461bcd60e51b815260206004820152601460248201527f436c61696d6572206973206e6f74206f776e657200000000000000000000000060448201526064016101e7565b60008281526002602052604090205460ff161561051a5760405162461bcd60e51b815260206004820152601e60248201527f5061737320616c726561647920636c61696d656420666f7220776f726c64000060448201526064016101e7565b6000828152600260205260409020805460ff191660011790558361053d81610e11565b9450505050808061054d90610e11565b9150506102c5565b508315158061056357508115155b156109a35760055460ff166105e05760405162461bcd60e51b815260206004820152603a60248201527f5365636f6e6420636c61696d20666f72206176617461727320616e642067726160448201527f7920626f7973206973206e6f742079657420656e61626c65642e00000000000060648201526084016101e7565b60005b848110156107ad57600086868381811061060d57634e487b7160e01b600052603260045260246000fd5b905060200201359050336001600160a01b03167f00000000000000000000000005745e72fb8b4a9b51118a168d956760e4a364446001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161066e91815260200190565b60206040518083038186803b15801561068657600080fd5b505afa15801561069a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106be9190610c65565b6001600160a01b0316146107145760405162461bcd60e51b815260206004820152601460248201527f436c61696d6572206973206e6f74206f776e657200000000000000000000000060448201526064016101e7565b60008181526003602052604090205460ff16156107735760405162461bcd60e51b815260206004820152601f60248201527f5061737320616c726561647920636c61696d656420666f72206176617461720060448201526064016101e7565b6000818152600360205260409020805460ff191660011790558261079681610e11565b9350505080806107a590610e11565b9150506105e3565b5060005b828110156109a15760008484838181106107db57634e487b7160e01b600052603260045260246000fd5b905060200201359050336001600160a01b03167f0000000000000000000000008d4100897447d173289560bc85c5c432be4f44e46001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161083c91815260200190565b60206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c9190610c65565b6001600160a01b0316146108e25760405162461bcd60e51b815260206004820152601460248201527f436c61696d6572206973206e6f74206f776e657200000000000000000000000060448201526064016101e7565b60008181526004602052604090205460ff16156109675760405162461bcd60e51b815260206004820152602160248201527f5061737320616c726561647920636c61696d656420666f72206772617920626f60448201527f790000000000000000000000000000000000000000000000000000000000000060648201526084016101e7565b6000818152600460205260409020805460ff191660011790558261098a81610e11565b93505050808061099990610e11565b9150506107b1565b505b8015610a6b576040517f8c791c0f00000000000000000000000000000000000000000000000000000000815260026004820152602481018290523360448201527f000000000000000000000000605757a5cceb44ced7a5be421735e0151333c3386001600160a01b031690638c791c0f90606401602060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190610d33565b505b5050600180555050505050565b6000546001600160a01b03163314610ad25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101e7565b6001600160a01b038116610b4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101e7565b610b5781610b5a565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051610bcd81610e38565b919050565b60008083601f840112610be3578182fd5b50813567ffffffffffffffff811115610bfa578182fd5b6020830191508360208260051b8501011115610c1557600080fd5b9250929050565b805161ffff81168114610bcd57600080fd5b805163ffffffff81168114610bcd57600080fd5b600060208284031215610c53578081fd5b8135610c5e81610e38565b9392505050565b600060208284031215610c76578081fd5b8151610c5e81610e38565b60008060008060008060608789031215610c99578182fd5b863567ffffffffffffffff80821115610cb0578384fd5b610cbc8a838b01610bd2565b90985096506020890135915080821115610cd4578384fd5b610ce08a838b01610bd2565b90965094506040890135915080821115610cf8578384fd5b50610d0589828a01610bd2565b979a9699509497509295939492505050565b600060208284031215610d28578081fd5b8135610c5e81610e4d565b600060208284031215610d44578081fd5b8151610c5e81610e4d565b600060c08284031215610d60578081fd5b60405160c0810181811067ffffffffffffffff82111715610d8f57634e487b7160e01b83526041600452602483fd5b604052610d9b83610c1c565b8152610da960208401610bc2565b6020820152610dba60408401610c1c565b6040820152610dcb60608401610c1c565b6060820152610ddc60808401610c1c565b6080820152610ded60a08401610c2e565b60a08201529392505050565b600060208284031215610e0a578081fd5b5035919050565b6000600019821415610e3157634e487b7160e01b81526011600452602481fd5b5060010190565b6001600160a01b0381168114610b5757600080fd5b8015158114610b5757600080fdfea26469706673582212201f1193b3b27b082f98a805d90ec2465747b7eb29a458ecbf034d06421ebe65e964736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000605757a5cceb44ced7a5be421735e0151333c338000000000000000000000000bd4455da5929d5639ee098abfaa3241e9ae111af00000000000000000000000069f0b8c5e94f6b64d832b7d9b15f3a88cb2f6f4b00000000000000000000000005745e72fb8b4a9b51118a168d956760e4a364440000000000000000000000008d4100897447d173289560bc85c5c432be4f44e4
-----Decoded View---------------
Arg [0] : _wnsPasses (address): 0x605757A5cCEB44Ced7A5Be421735E0151333c338
Arg [1] : _nftw (address): 0xBD4455dA5929D5639EE098ABFaa3241e9ae111Af
Arg [2] : _nftwEscrow (address): 0x69F0b8C5e94f6B64D832B7D9B15F3A88cB2f6F4b
Arg [3] : _avatars (address): 0x05745e72fB8b4a9b51118A168D956760e4a36444
Arg [4] : _grayboys (address): 0x8d4100897447d173289560BC85c5C432Be4f44E4
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000605757a5cceb44ced7a5be421735e0151333c338
Arg [1] : 000000000000000000000000bd4455da5929d5639ee098abfaa3241e9ae111af
Arg [2] : 00000000000000000000000069f0b8c5e94f6b64d832b7d9b15f3a88cb2f6f4b
Arg [3] : 00000000000000000000000005745e72fb8b4a9b51118a168d956760e4a36444
Arg [4] : 0000000000000000000000008d4100897447d173289560bc85c5c432be4f44e4
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.