Source Code
Overview
S Balance
S Value
$0.00Cross-Chain Transactions
Loading...
Loading
Contract Name:
TreasureHunt
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2025-08-22
*/
// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. 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;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @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 {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling 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 {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_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);
}
}
// File: @openzeppelin/contracts/utils/introspection/IERC165.sol
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* 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[ERC 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);
}
// File: @openzeppelin/contracts/token/ERC721/IERC721.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)
pragma solidity ^0.8.20;
/**
* @dev Required interface of an ERC-721 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 ERC-721 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 ERC-721
* 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 address zero.
*
* 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);
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
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 value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` 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 value) external returns (bool);
}
// File: @openzeppelin/contracts/utils/ReentrancyGuard.sol
// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)
pragma solidity ^0.8.20;
/**
* @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 EIP-1153 (transient storage) is available on the chain you're deploying at,
* consider using {ReentrancyGuardTransient} instead.
*
* 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;
/**
* @dev Unauthorized reentrant call.
*/
error ReentrancyGuardReentrantCall();
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
if (_status == ENTERED) {
revert ReentrancyGuardReentrantCall();
}
// 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;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == ENTERED;
}
}
// File: contracts/ISF/treasurehunt.sol
pragma solidity ^0.8.20;
contract TreasureHunt is Ownable, ReentrancyGuard {
IERC721 public shovelNFT;
IERC721 public rewardNFT;
IERC20 public rewardToken;
uint public erc20RewardAmount;
uint[] public rewardPool;
mapping(uint => bool) public isRewardTokenId;
mapping(address => mapping(uint => uint256)) public lockedSlots;
mapping(address => uint) public lastTreasureTime;
mapping(uint => uint) public digsRemaining;
uint public constant TOTAL_SLOTS = 9;
uint public constant DIGS_PER_SHOVEL = 3;
event DigAttempt(address indexed user, uint slot, uint tokenId, bool success, string rewardType);
event ShovelBurned(address indexed user, uint tokenId);
event RewardsDeposited(address indexed owner, uint[] tokenIds);
event RewardWithdrawn(address indexed owner, uint tokenId);
event GameReset(address indexed user);
event ERC20RewardAmountUpdated(uint newAmount);
constructor(
address _shovelNFT,
address _rewardNFT,
address _rewardToken,
address initialOwner,
uint initialERC20RewardAmount
) Ownable(initialOwner) {
require(_shovelNFT != address(0), "Invalid ShovelNFT address");
require(_rewardNFT != address(0), "Invalid reward NFT address");
require(_rewardToken != address(0), "Invalid reward token address");
require(initialERC20RewardAmount > 0, "Initial reward amount must be greater than 0");
shovelNFT = IERC721(_shovelNFT);
rewardNFT = IERC721(_rewardNFT);
rewardToken = IERC20(_rewardToken);
erc20RewardAmount = initialERC20RewardAmount;
}
function setERC20RewardAmount(uint newAmount) public onlyOwner {
require(newAmount > 0, "Reward amount must be greater than 0");
erc20RewardAmount = newAmount;
emit ERC20RewardAmountUpdated(newAmount);
}
function dig1(uint tokenId) public { _processDig(1, tokenId); }
function dig2(uint tokenId) public { _processDig(2, tokenId); }
function dig3(uint tokenId) public { _processDig(3, tokenId); }
function dig4(uint tokenId) public { _processDig(4, tokenId); }
function dig5(uint tokenId) public { _processDig(5, tokenId); }
function dig6(uint tokenId) public { _processDig(6, tokenId); }
function dig7(uint tokenId) public { _processDig(7, tokenId); }
function dig8(uint tokenId) public { _processDig(8, tokenId); }
function dig9(uint tokenId) public { _processDig(9, tokenId); }
function _processDig(uint slot, uint tokenId) internal nonReentrant {
require(shovelNFT.ownerOf(tokenId) == msg.sender, "Not owner of this shovel");
require(slot >= 1 && slot <= TOTAL_SLOTS, "Invalid slot");
require(lockedSlots[msg.sender][slot] == 0, "Slot locked");
// Initialize digsRemaining for new shovels
if (digsRemaining[tokenId] == 0) {
digsRemaining[tokenId] = DIGS_PER_SHOVEL;
}
require(digsRemaining[tokenId] > 0, "No digs remaining for this shovel");
// Count available slots
uint availableSlots = TOTAL_SLOTS;
for (uint i = 1; i <= TOTAL_SLOTS; i++) {
if (lockedSlots[msg.sender][i] != 0) {
availableSlots--;
}
}
require(availableSlots > 0, "No slots available");
// Generate pseudo-random number between 1 and availableSlots
uint random = uint(keccak256(abi.encodePacked(block.timestamp, msg.sender, tokenId, block.number)));
bool success = (random % availableSlots == 0); // Win if random number hits 0 (1/availableSlots chance)
bool isLastDig = (digsRemaining[tokenId] == 1);
digsRemaining[tokenId]--;
// If last available slot, guarantee a win
if (availableSlots == 1) {
success = true;
}
emit DigAttempt(msg.sender, slot, tokenId, success, success ? _awardReward(msg.sender) : "None");
if (success) {
if (isLastDig) {
shovelNFT.transferFrom(msg.sender, address(0x000000000000000000000000000000000000dEaD), tokenId);
emit ShovelBurned(msg.sender, tokenId);
}
_resetGameState(msg.sender, tokenId);
} else {
lockedSlots[msg.sender][slot] = block.timestamp;
if (isLastDig) {
shovelNFT.transferFrom(msg.sender, address(0x000000000000000000000000000000000000dEaD), tokenId);
emit ShovelBurned(msg.sender, tokenId);
}
}
}
function _awardReward(address user) internal returns (string memory rewardType) {
// Randomly choose between NFT and ERC-20 reward
uint random = uint(keccak256(abi.encodePacked(block.timestamp, user, block.number)));
bool awardNFT = (random % 2 == 0);
if (awardNFT && rewardPool.length > 0) {
uint rewardTokenId = rewardPool[rewardPool.length - 1];
rewardPool.pop();
isRewardTokenId[rewardTokenId] = false;
require(rewardNFT.ownerOf(rewardTokenId) == address(this), "Reward NFT not held by contract");
rewardNFT.transferFrom(address(this), user, rewardTokenId);
return "NFT";
} else {
require(rewardToken.balanceOf(address(this)) >= erc20RewardAmount, "Insufficient ERC-20 tokens");
rewardToken.transfer(user, erc20RewardAmount);
return "ERC20";
}
}
function _resetGameState(address user, uint tokenId) internal {
lastTreasureTime[user] = block.timestamp;
digsRemaining[tokenId] = 0;
for (uint i = 1; i <= TOTAL_SLOTS; i++) {
lockedSlots[user][i] = 0;
}
emit GameReset(user);
}
function depositRewards(uint[] calldata tokenIds) public onlyOwner {
require(tokenIds.length > 0, "No token IDs provided");
for (uint i = 0; i < tokenIds.length; i++) {
uint tokenId = tokenIds[i];
require(rewardNFT.ownerOf(tokenId) == msg.sender, "Not owner of reward NFT");
require(!isRewardTokenId[tokenId], "Token ID already in pool");
rewardNFT.transferFrom(msg.sender, address(this), tokenId);
rewardPool.push(tokenId);
isRewardTokenId[tokenId] = true;
}
emit RewardsDeposited(msg.sender, tokenIds);
}
function depositERC20Rewards(uint amount) public onlyOwner {
require(amount > 0, "Amount must be greater than 0");
rewardToken.transferFrom(msg.sender, address(this), amount);
}
function withdrawReward(uint tokenId) public onlyOwner {
require(isRewardTokenId[tokenId], "Token ID not in pool");
require(rewardNFT.ownerOf(tokenId) == address(this), "Reward NFT not held by contract");
for (uint i = 0; i < rewardPool.length; i++) {
if (rewardPool[i] == tokenId) {
rewardPool[i] = rewardPool[rewardPool.length - 1];
rewardPool.pop();
break;
}
}
isRewardTokenId[tokenId] = false;
rewardNFT.transferFrom(address(this), owner(), tokenId);
emit RewardWithdrawn(owner(), tokenId);
}
function withdrawERC20Rewards(uint amount) public onlyOwner {
require(amount > 0, "Amount must be greater than 0");
require(rewardToken.balanceOf(address(this)) >= amount, "Insufficient ERC-20 balance");
rewardToken.transfer(owner(), amount);
}
function getRewardPoolCount() public view returns (uint) {
return rewardPool.length;
}
function getERC20RewardBalance() public view returns (uint) {
return rewardToken.balanceOf(address(this));
}
function ownerResetGame(address user) public onlyOwner {
for (uint i = 1; i <= TOTAL_SLOTS; i++) {
lockedSlots[user][i] = 0;
}
lastTreasureTime[user] = 0;
emit GameReset(user);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_shovelNFT","type":"address"},{"internalType":"address","name":"_rewardNFT","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"uint256","name":"initialERC20RewardAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"slot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"string","name":"rewardType","type":"string"}],"name":"DigAttempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"ERC20RewardAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"GameReset","type":"event"},{"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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"RewardWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"RewardsDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ShovelBurned","type":"event"},{"inputs":[],"name":"DIGS_PER_SHOVEL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SLOTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositERC20Rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"depositRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig6","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig7","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig8","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"dig9","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"digsRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20RewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getERC20RewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardPoolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isRewardTokenId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTreasureTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockedSlots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"ownerResetGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setERC20RewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shovelNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawERC20Rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801562000010575f80fd5b5060405162001ddd38038062001ddd833981016040819052620000339162000297565b816001600160a01b0381166200006357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200006e816200022c565b50600180556001600160a01b038516620000cb5760405162461bcd60e51b815260206004820152601960248201527f496e76616c69642053686f76656c4e465420616464726573730000000000000060448201526064016200005a565b6001600160a01b038416620001235760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420726577617264204e4654206164647265737300000000000060448201526064016200005a565b6001600160a01b0383166200017b5760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642072657761726420746f6b656e20616464726573730000000060448201526064016200005a565b5f8111620001e15760405162461bcd60e51b815260206004820152602c60248201527f496e697469616c2072657761726420616d6f756e74206d75737420626520677260448201526b06561746572207468616e20360a41b60648201526084016200005a565b600280546001600160a01b03199081166001600160a01b03978816179091556003805482169587169590951790945560048054909416929094169190911790915550600555620002fa565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811462000292575f80fd5b919050565b5f805f805f60a08688031215620002ac575f80fd5b620002b7866200027b565b9450620002c7602087016200027b565b9350620002d7604087016200027b565b9250620002e7606087016200027b565b9150608086015190509295509295909350565b611ad580620003085f395ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c8063986ec05f11610109578063b825570e1161009e578063e3e9884a1161006e578063e3e9884a146103fd578063ec0c313a14610427578063f2fde38b1461043a578063f7c618c11461044d575f80fd5b8063b825570e146103ba578063c1746adc146103d9578063c695d88b146103e1578063c8ea4dd6146103ea575f80fd5b8063abf86969116100d9578063abf8696914610362578063ac7128e214610381578063af305ded14610394578063b252348f146103a7575f80fd5b8063986ec05f1461032c5780639c6f9a5414610334578063a45188ef14610347578063a58fc23b1461035a575f80fd5b8063523a3f081161017f5780637fcccaf41161014f5780637fcccaf4146102e3578063811560c7146102f65780638b35af68146103095780638da5cb5b1461031c575f80fd5b8063523a3f08146102a25780636d3e3a0e146102b5578063715018a6146102c85780637706c4ba146102d0575f80fd5b80631a6fed9a116101ba5780631a6fed9a1461023f578063325ee31e14610251578063371665b0146102645780634129d73c1461028f575f80fd5b806304341d35146101e0578063057994b0146101f5578063084c444e1461022c575b5f80fd5b6101f36101ee366004611809565b610460565b005b610217610203366004611809565b60076020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101f361023a366004611834565b61046e565b6006545b604051908152602001610223565b6101f361025f366004611809565b6104fa565b600254610277906001600160a01b031681565b6040516001600160a01b039091168152602001610223565b6101f361029d366004611809565b6106a8565b6101f36102b0366004611809565b6106b3565b6101f36102c3366004611809565b61095b565b6101f36109e5565b6102436102de366004611809565b6109f8565b6101f36102f1366004611809565b610a17565b6101f3610304366004611856565b610ab5565b6101f3610317366004611809565b610d53565b5f546001600160a01b0316610277565b610243610d5e565b6101f3610342366004611809565b610dd2565b6101f3610355366004611809565b610ddd565b610243600981565b610243610370366004611834565b60096020525f908152604090205481565b6101f361038f366004611809565b610de8565b6101f36103a2366004611809565b610df3565b6101f36103b5366004611809565b610dfe565b6102436103c8366004611809565b600a6020525f908152604090205481565b610243600381565b61024360055481565b600354610277906001600160a01b031681565b61024361040b3660046118c5565b600860209081525f928352604080842090915290825290205481565b6101f3610435366004611809565b610e09565b6101f3610448366004611834565b610e14565b600454610277906001600160a01b031681565b61046b600382610e4e565b50565b61047661134c565b60015b600981116104b6576001600160a01b0382165f908152600860209081526040808320848452909152812055806104ae81611903565b915050610479565b506001600160a01b0381165f81815260096020526040808220829055517f5c5242c86e1c99f381866c8c3d6542c0f9691ec890edfe6699def7dafa9a34f69190a250565b61050261134c565b5f81116105565760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064015b60405180910390fd5b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156105a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c5919061191b565b10156106135760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74204552432d32302062616c616e63650000000000604482015260640161054d565b6004546001600160a01b031663a9059cbb6106355f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015b6020604051808303815f875af1158015610680573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a49190611932565b5050565b61046b600882610e4e565b6106bb61134c565b5f8181526007602052604090205460ff1661070f5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881251081b9bdd081a5b881c1bdbdb60621b604482015260640161054d565b6003546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610756573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077a9190611951565b6001600160a01b0316146107d05760405162461bcd60e51b815260206004820152601f60248201527f526577617264204e4654206e6f742068656c6420627920636f6e747261637400604482015260640161054d565b5f5b6006548110156108805781600682815481106107f0576107f061196c565b905f5260205f2001540361086e576006805461080e90600190611980565b8154811061081e5761081e61196c565b905f5260205f2001546006828154811061083a5761083a61196c565b5f91825260209091200155600680548061085657610856611999565b600190038181905f5260205f20015f90559055610880565b8061087881611903565b9150506107d2565b505f818152600760205260409020805460ff191690556003546001600160a01b03166323b872dd306108b95f546001600160a01b031690565b846040518463ffffffff1660e01b81526004016108d8939291906119ad565b5f604051808303815f87803b1580156108ef575f80fd5b505af1158015610901573d5f803e3d5ffd5b505050506109165f546001600160a01b031690565b6001600160a01b03167f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e13378260405161095091815260200190565b60405180910390a250565b61096361134c565b5f81116109b25760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161054d565b600480546040516323b872dd60e01b81526001600160a01b03909116916323b872dd9161066491339130918791016119ad565b6109ed61134c565b6109f65f611378565b565b60068181548110610a07575f80fd5b5f91825260209091200154905081565b610a1f61134c565b5f8111610a7a5760405162461bcd60e51b8152602060048201526024808201527f52657761726420616d6f756e74206d75737420626520677265617465722074686044820152630616e20360e41b606482015260840161054d565b60058190556040518181527fa43cc4f014d539efdf654f227e0629b87d879f9b9fa4729d9a718fc0e95290859060200160405180910390a150565b610abd61134c565b80610b025760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b8812511cc81c1c9bdd9a591959605a1b604482015260640161054d565b5f5b81811015610d0b575f838383818110610b1f57610b1f61196c565b6003546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e90602401602060405180830381865afa158015610b74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b989190611951565b6001600160a01b031614610bee5760405162461bcd60e51b815260206004820152601760248201527f4e6f74206f776e6572206f6620726577617264204e4654000000000000000000604482015260640161054d565b5f8181526007602052604090205460ff1615610c4c5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20494420616c726561647920696e20706f6f6c0000000000000000604482015260640161054d565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610c80903390309086906004016119ad565b5f604051808303815f87803b158015610c97575f80fd5b505af1158015610ca9573d5f803e3d5ffd5b50506006805460018181019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018490555f93845260076020526040909320805460ff191690931790925550819050610d0381611903565b915050610b04565b50336001600160a01b03167f191234d25c713ced7b64e39952ba1efca1c0a0046bb7ef4a275ebaf624fb13658383604051610d479291906119d1565b60405180910390a25050565b61046b600982610e4e565b600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610da9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dcd919061191b565b905090565b61046b600282610e4e565b61046b600782610e4e565b61046b600482610e4e565b61046b600182610e4e565b61046b600682610e4e565b61046b600582610e4e565b610e1c61134c565b6001600160a01b038116610e4557604051631e4fbdf760e01b81525f600482015260240161054d565b61046b81611378565b610e566113c7565b6002546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015610e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec19190611951565b6001600160a01b031614610f175760405162461bcd60e51b815260206004820152601860248201527f4e6f74206f776e6572206f6620746869732073686f76656c0000000000000000604482015260640161054d565b60018210158015610f29575060098211155b610f645760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081cdb1bdd60a21b604482015260640161054d565b335f90815260086020908152604080832085845290915290205415610fb95760405162461bcd60e51b815260206004820152600b60248201526a14db1bdd081b1bd8dad95960aa1b604482015260640161054d565b5f818152600a60205260408120549003610fdf575f818152600a60205260409020600390555b5f818152600a60205260409020546110435760405162461bcd60e51b815260206004820152602160248201527f4e6f20646967732072656d61696e696e6720666f7220746869732073686f76656044820152601b60fa1b606482015260840161054d565b600960015b6009811161108f57335f9081526008602090815260408083208484529091529020541561107d578161107981611a08565b9250505b8061108781611903565b915050611048565b505f81116110d45760405162461bcd60e51b81526020600482015260126024820152714e6f20736c6f747320617661696c61626c6560701b604482015260640161054d565b604080514260208201526bffffffffffffffffffffffff193360601b1691810191909152605481018390524360748201525f9060940160408051601f19818403018152919052805160209091012090505f61112f8383611a1d565b5f858152600a6020526040812080549215935060018314929161115183611a08565b91905055508360010361116357600191505b337ff98109943d2fc9f860ffdfc5acf7bb670a61913286cc3acbdf571ff403f2a580878785806111af57604051806040016040528060048152602001634e6f6e6560e01b8152506111b8565b6111b8336113f1565b6040516111c89493929190611a3c565b60405180910390a28115611284578015611275576002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061121290339061dead908a906004016119ad565b5f604051808303815f87803b158015611229575f80fd5b505af115801561123b573d5f803e3d5ffd5b50506040518781523392507fd57953af8643425b10497845527cf92925fc5da001cc621aea2b989e5b7d6850915060200160405180910390a25b61127f3386611769565b61133f565b335f9081526008602090815260408083208984529091529020429055801561133f576002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906112dc90339061dead908a906004016119ad565b5f604051808303815f87803b1580156112f3575f80fd5b505af1158015611305573d5f803e3d5ffd5b50506040518781523392507fd57953af8643425b10497845527cf92925fc5da001cc621aea2b989e5b7d6850915060200160405180910390a25b505050506106a460018055565b5f546001600160a01b031633146109f65760405163118cdaa760e01b815233600482015260240161054d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036113ea57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b60408051426020820152606083811b6bffffffffffffffffffffffff1916928201929092524360548201525f9060740160408051601f19818403018152919052805160209091012090505f611447600283611a1d565b159050808015611458575060065415155b1561160e57600680545f919061147090600190611980565b815481106114805761148061196c565b905f5260205f2001549050600680548061149c5761149c611999565b5f82815260208082205f19908401810183905590920190925582825260079052604090819020805460ff1916905560035490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015611510573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115349190611951565b6001600160a01b03161461158a5760405162461bcd60e51b815260206004820152601f60248201527f526577617264204e4654206e6f742068656c6420627920636f6e747261637400604482015260640161054d565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906115be903090899086906004016119ad565b5f604051808303815f87803b1580156115d5575f80fd5b505af11580156115e7573d5f803e3d5ffd5b505060408051808201909152600381526213919560ea1b6020820152979650505050505050565b600554600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167c919061191b565b10156116ca5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74204552432d323020746f6b656e73000000000000604482015260640161054d565b6004805460055460405163a9059cbb60e01b81526001600160a01b0388811694820194909452602481019190915291169063a9059cbb906044016020604051808303815f875af1158015611720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117449190611932565b5050604080518082019091526005815264045524332360dc1b60208201529392505050565b6001600160a01b0382165f908152600960209081526040808320429055838352600a90915281205560015b600981116117d1576001600160a01b0383165f908152600860209081526040808320848452909152812055806117c981611903565b915050611794565b506040516001600160a01b038316907f5c5242c86e1c99f381866c8c3d6542c0f9691ec890edfe6699def7dafa9a34f6905f90a25050565b5f60208284031215611819575f80fd5b5035919050565b6001600160a01b038116811461046b575f80fd5b5f60208284031215611844575f80fd5b813561184f81611820565b9392505050565b5f8060208385031215611867575f80fd5b823567ffffffffffffffff8082111561187e575f80fd5b818501915085601f830112611891575f80fd5b81358181111561189f575f80fd5b8660208260051b85010111156118b3575f80fd5b60209290920196919550909350505050565b5f80604083850312156118d6575f80fd5b82356118e181611820565b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611914576119146118ef565b5060010190565b5f6020828403121561192b575f80fd5b5051919050565b5f60208284031215611942575f80fd5b8151801515811461184f575f80fd5b5f60208284031215611961575f80fd5b815161184f81611820565b634e487b7160e01b5f52603260045260245ffd5b81810381811115611993576119936118ef565b92915050565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b602080825281018290525f6001600160fb1b038311156119ef575f80fd5b8260051b80856040850137919091016040019392505050565b5f81611a1657611a166118ef565b505f190190565b5f82611a3757634e487b7160e01b5f52601260045260245ffd5b500690565b8481525f6020858184015284151560408401526080606084015283518060808501525f5b81811015611a7c5785810183015185820160a001528201611a60565b505f60a0828601015260a0601f19601f830116850101925050509594505050505056fea26469706673582212204e06d4492aa17d176f78a4b5897bb6ed960fa3d431214c502345951b5ae6d0d864736f6c63430008140033000000000000000000000000267d080655f045d087f9e93dca7490d5ea965596000000000000000000000000e1e512bdd10069ec79ebd407562175ac1d661768000000000000000000000000c48212d65a5bebf2c040f6118449d5b8cec76d4500000000000000000000000026dcb0d7d48aa979da81f2fce331ce6e028b00d7000000000000000000000000000000000000000000000a968163f0a57b400000
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101dc575f3560e01c8063986ec05f11610109578063b825570e1161009e578063e3e9884a1161006e578063e3e9884a146103fd578063ec0c313a14610427578063f2fde38b1461043a578063f7c618c11461044d575f80fd5b8063b825570e146103ba578063c1746adc146103d9578063c695d88b146103e1578063c8ea4dd6146103ea575f80fd5b8063abf86969116100d9578063abf8696914610362578063ac7128e214610381578063af305ded14610394578063b252348f146103a7575f80fd5b8063986ec05f1461032c5780639c6f9a5414610334578063a45188ef14610347578063a58fc23b1461035a575f80fd5b8063523a3f081161017f5780637fcccaf41161014f5780637fcccaf4146102e3578063811560c7146102f65780638b35af68146103095780638da5cb5b1461031c575f80fd5b8063523a3f08146102a25780636d3e3a0e146102b5578063715018a6146102c85780637706c4ba146102d0575f80fd5b80631a6fed9a116101ba5780631a6fed9a1461023f578063325ee31e14610251578063371665b0146102645780634129d73c1461028f575f80fd5b806304341d35146101e0578063057994b0146101f5578063084c444e1461022c575b5f80fd5b6101f36101ee366004611809565b610460565b005b610217610203366004611809565b60076020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6101f361023a366004611834565b61046e565b6006545b604051908152602001610223565b6101f361025f366004611809565b6104fa565b600254610277906001600160a01b031681565b6040516001600160a01b039091168152602001610223565b6101f361029d366004611809565b6106a8565b6101f36102b0366004611809565b6106b3565b6101f36102c3366004611809565b61095b565b6101f36109e5565b6102436102de366004611809565b6109f8565b6101f36102f1366004611809565b610a17565b6101f3610304366004611856565b610ab5565b6101f3610317366004611809565b610d53565b5f546001600160a01b0316610277565b610243610d5e565b6101f3610342366004611809565b610dd2565b6101f3610355366004611809565b610ddd565b610243600981565b610243610370366004611834565b60096020525f908152604090205481565b6101f361038f366004611809565b610de8565b6101f36103a2366004611809565b610df3565b6101f36103b5366004611809565b610dfe565b6102436103c8366004611809565b600a6020525f908152604090205481565b610243600381565b61024360055481565b600354610277906001600160a01b031681565b61024361040b3660046118c5565b600860209081525f928352604080842090915290825290205481565b6101f3610435366004611809565b610e09565b6101f3610448366004611834565b610e14565b600454610277906001600160a01b031681565b61046b600382610e4e565b50565b61047661134c565b60015b600981116104b6576001600160a01b0382165f908152600860209081526040808320848452909152812055806104ae81611903565b915050610479565b506001600160a01b0381165f81815260096020526040808220829055517f5c5242c86e1c99f381866c8c3d6542c0f9691ec890edfe6699def7dafa9a34f69190a250565b61050261134c565b5f81116105565760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064015b60405180910390fd5b600480546040516370a0823160e01b8152309281019290925282916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156105a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c5919061191b565b10156106135760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74204552432d32302062616c616e63650000000000604482015260640161054d565b6004546001600160a01b031663a9059cbb6106355f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015b6020604051808303815f875af1158015610680573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a49190611932565b5050565b61046b600882610e4e565b6106bb61134c565b5f8181526007602052604090205460ff1661070f5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881251081b9bdd081a5b881c1bdbdb60621b604482015260640161054d565b6003546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610756573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077a9190611951565b6001600160a01b0316146107d05760405162461bcd60e51b815260206004820152601f60248201527f526577617264204e4654206e6f742068656c6420627920636f6e747261637400604482015260640161054d565b5f5b6006548110156108805781600682815481106107f0576107f061196c565b905f5260205f2001540361086e576006805461080e90600190611980565b8154811061081e5761081e61196c565b905f5260205f2001546006828154811061083a5761083a61196c565b5f91825260209091200155600680548061085657610856611999565b600190038181905f5260205f20015f90559055610880565b8061087881611903565b9150506107d2565b505f818152600760205260409020805460ff191690556003546001600160a01b03166323b872dd306108b95f546001600160a01b031690565b846040518463ffffffff1660e01b81526004016108d8939291906119ad565b5f604051808303815f87803b1580156108ef575f80fd5b505af1158015610901573d5f803e3d5ffd5b505050506109165f546001600160a01b031690565b6001600160a01b03167f1d3eee4ca001cff39eec6ec7615aacf2f2bd61791273830728ba00ccbd6e13378260405161095091815260200190565b60405180910390a250565b61096361134c565b5f81116109b25760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161054d565b600480546040516323b872dd60e01b81526001600160a01b03909116916323b872dd9161066491339130918791016119ad565b6109ed61134c565b6109f65f611378565b565b60068181548110610a07575f80fd5b5f91825260209091200154905081565b610a1f61134c565b5f8111610a7a5760405162461bcd60e51b8152602060048201526024808201527f52657761726420616d6f756e74206d75737420626520677265617465722074686044820152630616e20360e41b606482015260840161054d565b60058190556040518181527fa43cc4f014d539efdf654f227e0629b87d879f9b9fa4729d9a718fc0e95290859060200160405180910390a150565b610abd61134c565b80610b025760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b8812511cc81c1c9bdd9a591959605a1b604482015260640161054d565b5f5b81811015610d0b575f838383818110610b1f57610b1f61196c565b6003546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e90602401602060405180830381865afa158015610b74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b989190611951565b6001600160a01b031614610bee5760405162461bcd60e51b815260206004820152601760248201527f4e6f74206f776e6572206f6620726577617264204e4654000000000000000000604482015260640161054d565b5f8181526007602052604090205460ff1615610c4c5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e20494420616c726561647920696e20706f6f6c0000000000000000604482015260640161054d565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610c80903390309086906004016119ad565b5f604051808303815f87803b158015610c97575f80fd5b505af1158015610ca9573d5f803e3d5ffd5b50506006805460018181019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018490555f93845260076020526040909320805460ff191690931790925550819050610d0381611903565b915050610b04565b50336001600160a01b03167f191234d25c713ced7b64e39952ba1efca1c0a0046bb7ef4a275ebaf624fb13658383604051610d479291906119d1565b60405180910390a25050565b61046b600982610e4e565b600480546040516370a0823160e01b815230928101929092525f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610da9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dcd919061191b565b905090565b61046b600282610e4e565b61046b600782610e4e565b61046b600482610e4e565b61046b600182610e4e565b61046b600682610e4e565b61046b600582610e4e565b610e1c61134c565b6001600160a01b038116610e4557604051631e4fbdf760e01b81525f600482015260240161054d565b61046b81611378565b610e566113c7565b6002546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e90602401602060405180830381865afa158015610e9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec19190611951565b6001600160a01b031614610f175760405162461bcd60e51b815260206004820152601860248201527f4e6f74206f776e6572206f6620746869732073686f76656c0000000000000000604482015260640161054d565b60018210158015610f29575060098211155b610f645760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081cdb1bdd60a21b604482015260640161054d565b335f90815260086020908152604080832085845290915290205415610fb95760405162461bcd60e51b815260206004820152600b60248201526a14db1bdd081b1bd8dad95960aa1b604482015260640161054d565b5f818152600a60205260408120549003610fdf575f818152600a60205260409020600390555b5f818152600a60205260409020546110435760405162461bcd60e51b815260206004820152602160248201527f4e6f20646967732072656d61696e696e6720666f7220746869732073686f76656044820152601b60fa1b606482015260840161054d565b600960015b6009811161108f57335f9081526008602090815260408083208484529091529020541561107d578161107981611a08565b9250505b8061108781611903565b915050611048565b505f81116110d45760405162461bcd60e51b81526020600482015260126024820152714e6f20736c6f747320617661696c61626c6560701b604482015260640161054d565b604080514260208201526bffffffffffffffffffffffff193360601b1691810191909152605481018390524360748201525f9060940160408051601f19818403018152919052805160209091012090505f61112f8383611a1d565b5f858152600a6020526040812080549215935060018314929161115183611a08565b91905055508360010361116357600191505b337ff98109943d2fc9f860ffdfc5acf7bb670a61913286cc3acbdf571ff403f2a580878785806111af57604051806040016040528060048152602001634e6f6e6560e01b8152506111b8565b6111b8336113f1565b6040516111c89493929190611a3c565b60405180910390a28115611284578015611275576002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061121290339061dead908a906004016119ad565b5f604051808303815f87803b158015611229575f80fd5b505af115801561123b573d5f803e3d5ffd5b50506040518781523392507fd57953af8643425b10497845527cf92925fc5da001cc621aea2b989e5b7d6850915060200160405180910390a25b61127f3386611769565b61133f565b335f9081526008602090815260408083208984529091529020429055801561133f576002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906112dc90339061dead908a906004016119ad565b5f604051808303815f87803b1580156112f3575f80fd5b505af1158015611305573d5f803e3d5ffd5b50506040518781523392507fd57953af8643425b10497845527cf92925fc5da001cc621aea2b989e5b7d6850915060200160405180910390a25b505050506106a460018055565b5f546001600160a01b031633146109f65760405163118cdaa760e01b815233600482015260240161054d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002600154036113ea57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b60408051426020820152606083811b6bffffffffffffffffffffffff1916928201929092524360548201525f9060740160408051601f19818403018152919052805160209091012090505f611447600283611a1d565b159050808015611458575060065415155b1561160e57600680545f919061147090600190611980565b815481106114805761148061196c565b905f5260205f2001549050600680548061149c5761149c611999565b5f82815260208082205f19908401810183905590920190925582825260079052604090819020805460ff1916905560035490516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015611510573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115349190611951565b6001600160a01b03161461158a5760405162461bcd60e51b815260206004820152601f60248201527f526577617264204e4654206e6f742068656c6420627920636f6e747261637400604482015260640161054d565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906115be903090899086906004016119ad565b5f604051808303815f87803b1580156115d5575f80fd5b505af11580156115e7573d5f803e3d5ffd5b505060408051808201909152600381526213919560ea1b6020820152979650505050505050565b600554600480546040516370a0823160e01b815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167c919061191b565b10156116ca5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74204552432d323020746f6b656e73000000000000604482015260640161054d565b6004805460055460405163a9059cbb60e01b81526001600160a01b0388811694820194909452602481019190915291169063a9059cbb906044016020604051808303815f875af1158015611720573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117449190611932565b5050604080518082019091526005815264045524332360dc1b60208201529392505050565b6001600160a01b0382165f908152600960209081526040808320429055838352600a90915281205560015b600981116117d1576001600160a01b0383165f908152600860209081526040808320848452909152812055806117c981611903565b915050611794565b506040516001600160a01b038316907f5c5242c86e1c99f381866c8c3d6542c0f9691ec890edfe6699def7dafa9a34f6905f90a25050565b5f60208284031215611819575f80fd5b5035919050565b6001600160a01b038116811461046b575f80fd5b5f60208284031215611844575f80fd5b813561184f81611820565b9392505050565b5f8060208385031215611867575f80fd5b823567ffffffffffffffff8082111561187e575f80fd5b818501915085601f830112611891575f80fd5b81358181111561189f575f80fd5b8660208260051b85010111156118b3575f80fd5b60209290920196919550909350505050565b5f80604083850312156118d6575f80fd5b82356118e181611820565b946020939093013593505050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611914576119146118ef565b5060010190565b5f6020828403121561192b575f80fd5b5051919050565b5f60208284031215611942575f80fd5b8151801515811461184f575f80fd5b5f60208284031215611961575f80fd5b815161184f81611820565b634e487b7160e01b5f52603260045260245ffd5b81810381811115611993576119936118ef565b92915050565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b602080825281018290525f6001600160fb1b038311156119ef575f80fd5b8260051b80856040850137919091016040019392505050565b5f81611a1657611a166118ef565b505f190190565b5f82611a3757634e487b7160e01b5f52601260045260245ffd5b500690565b8481525f6020858184015284151560408401526080606084015283518060808501525f5b81811015611a7c5785810183015185820160a001528201611a60565b505f60a0828601015260a0601f19601f830116850101925050509594505050505056fea26469706673582212204e06d4492aa17d176f78a4b5897bb6ed960fa3d431214c502345951b5ae6d0d864736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000267d080655f045d087f9e93dca7490d5ea965596000000000000000000000000e1e512bdd10069ec79ebd407562175ac1d661768000000000000000000000000c48212d65a5bebf2c040f6118449d5b8cec76d4500000000000000000000000026dcb0d7d48aa979da81f2fce331ce6e028b00d7000000000000000000000000000000000000000000000a968163f0a57b400000
-----Decoded View---------------
Arg [0] : _shovelNFT (address): 0x267d080655f045d087F9E93DcA7490D5ea965596
Arg [1] : _rewardNFT (address): 0xE1E512bDd10069eC79ebD407562175AC1D661768
Arg [2] : _rewardToken (address): 0xC48212D65a5BEBF2C040f6118449d5b8ceC76d45
Arg [3] : initialOwner (address): 0x26dcb0D7D48aa979DA81f2FCe331cE6e028B00D7
Arg [4] : initialERC20RewardAmount (uint256): 50000000000000000000000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000267d080655f045d087f9e93dca7490d5ea965596
Arg [1] : 000000000000000000000000e1e512bdd10069ec79ebd407562175ac1d661768
Arg [2] : 000000000000000000000000c48212d65a5bebf2c040f6118449d5b8cec76d45
Arg [3] : 00000000000000000000000026dcb0d7d48aa979da81f2fce331ce6e028b00d7
Arg [4] : 000000000000000000000000000000000000000000000a968163f0a57b400000
Deployed Bytecode Sourcemap
16670:8094:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18707:63;;;;;;:::i;:::-;;:::i;:::-;;16888:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:1;;357:22;339:41;;327:2;312:18;16888:44:0;;;;;;;;24529:232;;;;;;:::i;:::-;;:::i;24291:100::-;24366:10;:17;24291:100;;;925:25:1;;;913:2;898:18;24291:100:0;779:177:1;24007:276:0;;;;;;:::i;:::-;;:::i;16727:24::-;;;;;-1:-1:-1;;;;;16727:24:0;;;;;;-1:-1:-1;;;;;1140:32:1;;;1122:51;;1110:2;1095:18;16727:24:0;961:218:1;19052:63:0;;;;;;:::i;:::-;;:::i;23358:641::-;;;;;;:::i;:::-;;:::i;23150:200::-;;;;;;:::i;:::-;;:::i;3394:103::-;;;:::i;16857:24::-;;;;;;:::i;:::-;;:::i;18326:235::-;;;;;;:::i;:::-;;:::i;22517:625::-;;;;;;:::i;:::-;;:::i;19121:63::-;;;;;;:::i;:::-;;:::i;2719:87::-;2765:7;2792:6;-1:-1:-1;;;;;2792:6:0;2719:87;;24399:122;;;:::i;18638:63::-;;;;;;:::i;:::-;;:::i;18983:::-;;;;;;:::i;:::-;;:::i;17115:36::-;;17150:1;17115:36;;17011:48;;;;;;:::i;:::-;;;;;;;;;;;;;;18776:63;;;;;;:::i;:::-;;:::i;18569:::-;;;;;;:::i;:::-;;:::i;18914:::-;;;;;;:::i;:::-;;:::i;17066:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;17158:40;;17197:1;17158:40;;16821:29;;;;;;16758:24;;;;;-1:-1:-1;;;;;16758:24:0;;;16941:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;18845;;;;;;:::i;:::-;;:::i;3652:220::-;;;;;;:::i;:::-;;:::i;16789:25::-;;;;;-1:-1:-1;;;;;16789:25:0;;;18707:63;18744:23;18756:1;18759:7;18744:11;:23::i;:::-;18707:63;:::o;24529:232::-;2605:13;:11;:13::i;:::-;24609:1:::1;24595:91;17150:1;24612;:16;24595:91;;-1:-1:-1::0;;;;;24650:17:0;::::1;24673:1;24650:17:::0;;;:11:::1;:17;::::0;;;;;;;:20;;;;;;;;:24;24668:1;24630:3:::1;24668:1:::0;24630:3:::1;:::i;:::-;;;;24595:91;;;-1:-1:-1::0;;;;;;24696:22:0;::::1;24721:1;24696:22:::0;;;:16:::1;:22;::::0;;;;;:26;;;24738:15;::::1;::::0;24721:1;24738:15:::1;24529:232:::0;:::o;24007:276::-;2605:13;:11;:13::i;:::-;24095:1:::1;24086:6;:10;24078:52;;;::::0;-1:-1:-1;;;24078:52:0;;3028:2:1;24078:52:0::1;::::0;::::1;3010:21:1::0;3067:2;3047:18;;;3040:30;3106:31;3086:18;;;3079:59;3155:18;;24078:52:0::1;;;;;;;;;24149:11;::::0;;:36:::1;::::0;-1:-1:-1;;;24149:36:0;;24179:4:::1;24149:36:::0;;::::1;1122:51:1::0;;;;24189:6:0;;-1:-1:-1;;;;;24149:11:0;;::::1;::::0;:21:::1;::::0;1095:18:1;;24149:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;24141:86;;;::::0;-1:-1:-1;;;24141:86:0;;3575:2:1;24141:86:0::1;::::0;::::1;3557:21:1::0;3614:2;3594:18;;;3587:30;3653:29;3633:18;;;3626:57;3700:18;;24141:86:0::1;3373:351:1::0;24141:86:0::1;24238:11;::::0;-1:-1:-1;;;;;24238:11:0::1;:20;24259:7;2765::::0;2792:6;-1:-1:-1;;;;;2792:6:0;;2719:87;24259:7:::1;24238:37;::::0;-1:-1:-1;;;;;;24238:37:0::1;::::0;;;;;;-1:-1:-1;;;;;3921:32:1;;;24238:37:0::1;::::0;::::1;3903:51:1::0;3970:18;;;3963:34;;;3876:18;;24238:37:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24007:276:::0;:::o;19052:63::-;19089:23;19101:1;19104:7;19089:11;:23::i;23358:641::-;2605:13;:11;:13::i;:::-;23432:24:::1;::::0;;;:15:::1;:24;::::0;;;;;::::1;;23424:57;;;::::0;-1:-1:-1;;;23424:57:0;;4492:2:1;23424:57:0::1;::::0;::::1;4474:21:1::0;4531:2;4511:18;;;4504:30;-1:-1:-1;;;4550:18:1;;;4543:50;4610:18;;23424:57:0::1;4290:344:1::0;23424:57:0::1;23500:9;::::0;:26:::1;::::0;-1:-1:-1;;;23500:26:0;;::::1;::::0;::::1;925:25:1::0;;;23538:4:0::1;::::0;-1:-1:-1;;;;;23500:9:0::1;::::0;:17:::1;::::0;898:18:1;;23500:26:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23500:43:0::1;;23492:87;;;::::0;-1:-1:-1;;;23492:87:0;;5097:2:1;23492:87:0::1;::::0;::::1;5079:21:1::0;5136:2;5116:18;;;5109:30;5175:33;5155:18;;;5148:61;5226:18;;23492:87:0::1;4895:355:1::0;23492:87:0::1;23595:6;23590:244;23611:10;:17:::0;23607:21;::::1;23590:244;;;23671:7;23654:10;23665:1;23654:13;;;;;;;;:::i;:::-;;;;;;;;;:24:::0;23650:173:::1;;23715:10;23726:17:::0;;:21:::1;::::0;23746:1:::1;::::0;23726:21:::1;:::i;:::-;23715:33;;;;;;;;:::i;:::-;;;;;;;;;23699:10;23710:1;23699:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;:49:::0;23767:10:::1;:16:::0;;;::::1;;;;:::i;:::-;;;;;;;;;;;;;;;;;;23802:5;;23650:173;23630:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23590:244;;;-1:-1:-1::0;23871:5:0::1;23844:24:::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;23844:32:0::1;::::0;;23887:9:::1;::::0;-1:-1:-1;;;;;23887:9:0::1;:22;23918:4;23925:7;2765::::0;2792:6;-1:-1:-1;;;;;2792:6:0;;2719:87;23925:7:::1;23934;23887:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23974:7;2765::::0;2792:6;-1:-1:-1;;;;;2792:6:0;;2719:87;23974:7:::1;-1:-1:-1::0;;;;;23958:33:0::1;;23983:7;23958:33;;;;925:25:1::0;;913:2;898:18;;779:177;23958:33:0::1;;;;;;;;23358:641:::0;:::o;23150:200::-;2605:13;:11;:13::i;:::-;23237:1:::1;23228:6;:10;23220:52;;;::::0;-1:-1:-1;;;23220:52:0;;3028:2:1;23220:52:0::1;::::0;::::1;3010:21:1::0;3067:2;3047:18;;;3040:30;3106:31;3086:18;;;3079:59;3155:18;;23220:52:0::1;2826:353:1::0;23220:52:0::1;23283:11;::::0;;:59:::1;::::0;-1:-1:-1;;;23283:59:0;;-1:-1:-1;;;;;23283:11:0;;::::1;::::0;:24:::1;::::0;:59:::1;::::0;23308:10:::1;::::0;23328:4:::1;::::0;23335:6;;23283:59:::1;;:::i;3394:103::-:0;2605:13;:11;:13::i;:::-;3459:30:::1;3486:1;3459:18;:30::i;:::-;3394:103::o:0;16857:24::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16857:24:0;:::o;18326:235::-;2605:13;:11;:13::i;:::-;18420:1:::1;18408:9;:13;18400:62;;;::::0;-1:-1:-1;;;18400:62:0;;6234:2:1;18400:62:0::1;::::0;::::1;6216:21:1::0;6273:2;6253:18;;;6246:30;6312:34;6292:18;;;6285:62;-1:-1:-1;;;6363:18:1;;;6356:34;6407:19;;18400:62:0::1;6032:400:1::0;18400:62:0::1;18473:17;:29:::0;;;18518:35:::1;::::0;925:25:1;;;18518:35:0::1;::::0;913:2:1;898:18;18518:35:0::1;;;;;;;18326:235:::0;:::o;22517:625::-;2605:13;:11;:13::i;:::-;22603:19;22595:53:::1;;;::::0;-1:-1:-1;;;22595:53:0;;6639:2:1;22595:53:0::1;::::0;::::1;6621:21:1::0;6678:2;6658:18;;;6651:30;-1:-1:-1;;;6697:18:1;;;6690:51;6758:18;;22595:53:0::1;6437:345:1::0;22595:53:0::1;22664:6;22659:422;22676:19:::0;;::::1;22659:422;;;22717:12;22732:8;;22741:1;22732:11;;;;;;;:::i;:::-;22766:9;::::0;:26:::1;::::0;-1:-1:-1;;;22766:26:0;;22732:11:::1;::::0;;;::::1;::::0;;;::::1;;22766:26;::::0;::::1;925:25:1::0;;;22732:11:0;-1:-1:-1;22796:10:0::1;::::0;-1:-1:-1;;;;;22766:9:0::1;::::0;-1:-1:-1;22766:17:0::1;::::0;898:18:1;;22766:26:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22766:40:0::1;;22758:76;;;::::0;-1:-1:-1;;;22758:76:0;;6989:2:1;22758:76:0::1;::::0;::::1;6971:21:1::0;7028:2;7008:18;;;7001:30;7067:25;7047:18;;;7040:53;7110:18;;22758:76:0::1;6787:347:1::0;22758:76:0::1;22858:24;::::0;;;:15:::1;:24;::::0;;;;;::::1;;22857:25;22849:62;;;::::0;-1:-1:-1;;;22849:62:0;;7341:2:1;22849:62:0::1;::::0;::::1;7323:21:1::0;7380:2;7360:18;;;7353:30;7419:26;7399:18;;;7392:54;7463:18;;22849:62:0::1;7139:348:1::0;22849:62:0::1;22926:9;::::0;:58:::1;::::0;-1:-1:-1;;;22926:58:0;;-1:-1:-1;;;;;22926:9:0;;::::1;::::0;:22:::1;::::0;:58:::1;::::0;22949:10:::1;::::0;22969:4:::1;::::0;22976:7;;22926:58:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22999:10:0::1;:24:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;-1:-1:-1;23038:24:0;;;:15:::1;22999:24;23038::::0;;;;;:31;;-1:-1:-1;;23038:31:0::1;::::0;;::::1;::::0;;;-1:-1:-1;22697:3:0;;-1:-1:-1;22697:3:0::1;::::0;::::1;:::i;:::-;;;;22659:422;;;;23113:10;-1:-1:-1::0;;;;;23096:38:0::1;;23125:8;;23096:38;;;;;;;:::i;:::-;;;;;;;;22517:625:::0;;:::o;19121:63::-;19158:23;19170:1;19173:7;19158:11;:23::i;24399:122::-;24477:11;;;:36;;-1:-1:-1;;;24477:36:0;;24507:4;24477:36;;;1122:51:1;;;;24453:4:0;;-1:-1:-1;;;;;24477:11:0;;;;:21;;1095:18:1;;24477:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24470:43;;24399:122;:::o;18638:63::-;18675:23;18687:1;18690:7;18675:11;:23::i;18983:63::-;19020:23;19032:1;19035:7;19020:11;:23::i;18776:63::-;18813:23;18825:1;18828:7;18813:11;:23::i;18569:63::-;18606:23;18618:1;18621:7;18606:11;:23::i;18914:63::-;18951:23;18963:1;18966:7;18951:11;:23::i;18845:63::-;18882:23;18894:1;18897:7;18882:11;:23::i;3652:220::-;2605:13;:11;:13::i;:::-;-1:-1:-1;;;;;3737:22:0;::::1;3733:93;;3783:31;::::0;-1:-1:-1;;;3783:31:0;;3811:1:::1;3783:31;::::0;::::1;1122:51:1::0;1095:18;;3783:31:0::1;961:218:1::0;3733:93:0::1;3836:28;3855:8;3836:18;:28::i;19192:2084::-:0;15674:21;:19;:21::i;:::-;19279:9:::1;::::0;:26:::1;::::0;-1:-1:-1;;;19279:26:0;;::::1;::::0;::::1;925:25:1::0;;;19309:10:0::1;::::0;-1:-1:-1;;;;;19279:9:0::1;::::0;:17:::1;::::0;898:18:1;;19279:26:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19279:40:0::1;;19271:77;;;::::0;-1:-1:-1;;;19271:77:0;;8142:2:1;19271:77:0::1;::::0;::::1;8124:21:1::0;8181:2;8161:18;;;8154:30;8220:26;8200:18;;;8193:54;8264:18;;19271:77:0::1;7940:348:1::0;19271:77:0::1;19375:1;19367:4;:9;;:32;;;;;17150:1;19380:4;:19;;19367:32;19359:57;;;::::0;-1:-1:-1;;;19359:57:0;;8495:2:1;19359:57:0::1;::::0;::::1;8477:21:1::0;8534:2;8514:18;;;8507:30;-1:-1:-1;;;8553:18:1;;;8546:42;8605:18;;19359:57:0::1;8293:336:1::0;19359:57:0::1;19447:10;19435:23;::::0;;;:11:::1;:23;::::0;;;;;;;:29;;;;;;;;;:34;19427:58:::1;;;::::0;-1:-1:-1;;;19427:58:0;;8836:2:1;19427:58:0::1;::::0;::::1;8818:21:1::0;8875:2;8855:18;;;8848:30;-1:-1:-1;;;8894:18:1;;;8887:41;8945:18;;19427:58:0::1;8634:335:1::0;19427:58:0::1;19555:22;::::0;;;:13:::1;:22;::::0;;;;;:27;;19551:100:::1;;19599:22;::::0;;;:13:::1;:22;::::0;;;;17197:1:::1;19599:40:::0;;19551:100:::1;19694:1;19669:22:::0;;;:13:::1;:22;::::0;;;;;19661:72:::1;;;::::0;-1:-1:-1;;;19661:72:0;;9176:2:1;19661:72:0::1;::::0;::::1;9158:21:1::0;9215:2;9195:18;;;9188:30;9254:34;9234:18;;;9227:62;-1:-1:-1;;;9305:18:1;;;9298:31;9346:19;;19661:72:0::1;8974:397:1::0;19661:72:0::1;17150:1;19838;19824:154;17150:1;19841;:16;19824:154;;19895:10;19883:23;::::0;;;:11:::1;:23;::::0;;;;;;;:26;;;;;;;;;:31;19879:88:::1;;19935:16:::0;::::1;::::0;::::1;:::i;:::-;;;;19879:88;19859:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19824:154;;;;20013:1;19996:14;:18;19988:49;;;::::0;-1:-1:-1;;;19988:49:0;;9719:2:1;19988:49:0::1;::::0;::::1;9701:21:1::0;9758:2;9738:18;;;9731:30;-1:-1:-1;;;9777:18:1;;;9770:48;9835:18;;19988:49:0::1;9517:342:1::0;19988:49:0::1;20150:68;::::0;;20167:15:::1;20150:68;::::0;::::1;10077:19:1::0;-1:-1:-1;;20184:10:0::1;10134:2:1::0;10130:15;10126:53;10112:12;;;10105:75;;;;10196:12;;;10189:28;;;20205:12:0::1;10233::1::0;;;10226:28;20121:11:0::1;::::0;10270:13:1;;20150:68:0::1;::::0;;-1:-1:-1;;20150:68:0;;::::1;::::0;;;;;;20140:79;;20150:68:::1;20140:79:::0;;::::1;::::0;;-1:-1:-1;20135:85:0::1;20247:23;20256:14:::0;20140:79;20247:23:::1;:::i;:::-;20274:1;20364:22:::0;;;:13:::1;:22;::::0;;;;;;20247:28;;;-1:-1:-1;20390:1:0::1;20364:27:::0;::::1;::::0;:22;20403:24:::1;20364:22:::0;20403:24:::1;:::i;:::-;;;;;;20496:14;20514:1;20496:19:::0;20492:66:::1;;20542:4;20532:14;;20492:66;20586:10;20575:91;20598:4:::0;20604:7;20613;;20622:43:::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;20622:43:0::1;;::::0;::::1;;;20632:24;20645:10;20632:12;:24::i;:::-;20575:91;;;;;;;;;:::i;:::-;;;;;;;;20683:7;20679:590;;;20711:9;20707:203;;;20741:9;::::0;:96:::1;::::0;-1:-1:-1;;;20741:96:0;;-1:-1:-1;;;;;20741:9:0;;::::1;::::0;:22:::1;::::0;:96:::1;::::0;20764:10:::1;::::0;20784:42:::1;::::0;20829:7;;20741:96:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;20861:33:0::1;::::0;925:25:1;;;20874:10:0::1;::::0;-1:-1:-1;20861:33:0::1;::::0;-1:-1:-1;913:2:1;898:18;20861:33:0::1;;;;;;;20707:203;20924:36;20940:10;20952:7;20924:15;:36::i;:::-;20679:590;;;21005:10;20993:23;::::0;;;:11:::1;:23;::::0;;;;;;;:29;;;;;;;;21025:15:::1;20993:47:::0;;21055:203;::::1;;;21089:9;::::0;:96:::1;::::0;-1:-1:-1;;;21089:96:0;;-1:-1:-1;;;;;21089:9:0;;::::1;::::0;:22:::1;::::0;:96:::1;::::0;21112:10:::1;::::0;21132:42:::1;::::0;21177:7;;21089:96:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21209:33:0::1;::::0;925:25:1;;;21222:10:0::1;::::0;-1:-1:-1;21209:33:0::1;::::0;-1:-1:-1;913:2:1;898:18;21209:33:0::1;;;;;;;21055:203;19260:2016;;;;15718:20:::0;15009:1;16260:21;;16077:212;2884:166;2765:7;2792:6;-1:-1:-1;;;;;2792:6:0;808:10;2944:23;2940:103;;2991:40;;-1:-1:-1;;;2991:40:0;;808:10;2991:40;;;1122:51:1;1095:18;;2991:40:0;961:218:1;4032:191:0;4106:16;4125:6;;-1:-1:-1;;;;;4142:17:0;;;-1:-1:-1;;;;;;4142:17:0;;;;;;4175:40;;4125:6;;;;;;;4175:40;;4106:16;4175:40;4095:128;4032:191;:::o;15754:315::-;15052:1;15883:7;;:18;15879:88;;15925:30;;-1:-1:-1;;;15925:30:0;;;;;;;;;;;15879:88;15052:1;16044:7;:17;15754:315::o;21284:927::-;21462:53;;;21479:15;21462:53;;;11474:19:1;21338:24:0;11527:15:1;;;-1:-1:-1;;11523:53:1;11509:12;;;11502:75;;;;21502:12:0;11593::1;;;11586:28;-1:-1:-1;;11630:12:1;;21462:53:0;;;-1:-1:-1;;21462:53:0;;;;;;;;;21452:64;;21462:53;21452:64;;;;;-1:-1:-1;21447:70:0;21545:10;21554:1;21452:64;21545:10;:::i;:::-;:15;;-1:-1:-1;21545:15:0;21578:33;;;;-1:-1:-1;21590:10:0;:17;:21;;21578:33;21574:630;;;21649:10;21660:17;;21628:18;;21649:10;21660:21;;21680:1;;21660:21;:::i;:::-;21649:33;;;;;;;;:::i;:::-;;;;;;;;;21628:54;;21697:10;:16;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;21697:16:0;;;;;;;;;;;;;;21728:30;;;:15;:30;;;;;;;:38;;-1:-1:-1;;21728:38:0;;;21789:9;;:32;;-1:-1:-1;;;21789:32:0;;;;;925:25:1;;;21833:4:0;;-1:-1:-1;;;;;21789:9:0;;:17;;898:18:1;;21789:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21789:49:0;;21781:93;;;;-1:-1:-1;;;21781:93:0;;5097:2:1;21781:93:0;;;5079:21:1;5136:2;5116:18;;;5109:30;5175:33;5155:18;;;5148:61;5226:18;;21781:93:0;4895:355:1;21781:93:0;21889:9;;:58;;-1:-1:-1;;;21889:58:0;;-1:-1:-1;;;;;21889:9:0;;;;:22;;:58;;21920:4;;21927;;21933:13;;21889:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21962:12:0;;;;;;;;;;;;-1:-1:-1;;;21962:12:0;;;;;21284:927;-1:-1:-1;;;;;;;21284:927:0:o;21574:630::-;22055:17;;22015:11;;;:36;;-1:-1:-1;;;22015:36:0;;22045:4;22015:36;;;1122:51:1;;;;-1:-1:-1;;;;;22015:11:0;;:21;;1095:18:1;;22015:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;22007:96;;;;-1:-1:-1;;;22007:96:0;;11855:2:1;22007:96:0;;;11837:21:1;11894:2;11874:18;;;11867:30;11933:28;11913:18;;;11906:56;11979:18;;22007:96:0;11653:350:1;22007:96:0;22118:11;;;22145:17;;22118:45;;-1:-1:-1;;;22118:45:0;;-1:-1:-1;;;;;3921:32:1;;;22118:45:0;;;3903:51:1;;;;3970:18;;;3963:34;;;;22118:11:0;;;:20;;3876:18:1;;22118:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;22178:14:0;;;;;;;;;;;;-1:-1:-1;;;22178:14:0;;;;;21284:927;-1:-1:-1;;;21284:927:0:o;22219:290::-;-1:-1:-1;;;;;22292:22:0;;;;;;:16;:22;;;;;;;;22317:15;22292:40;;22343:22;;;:13;:22;;;;;:26;22394:1;22380:91;17150:1;22397;:16;22380:91;;-1:-1:-1;;;;;22435:17:0;;22458:1;22435:17;;;:11;:17;;;;;;;;:20;;;;;;;;:24;22453:1;22415:3;22453:1;22415:3;:::i;:::-;;;;22380:91;;;-1:-1:-1;22486:15:0;;-1:-1:-1;;;;;22486:15:0;;;;;;;;22219:290;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;391:131::-;-1:-1:-1;;;;;466:31:1;;456:42;;446:70;;512:1;509;502:12;527:247;586:6;639:2;627:9;618:7;614:23;610:32;607:52;;;655:1;652;645:12;607:52;694:9;681:23;713:31;738:5;713:31;:::i;:::-;763:5;527:247;-1:-1:-1;;;527:247:1:o;1184:615::-;1270:6;1278;1331:2;1319:9;1310:7;1306:23;1302:32;1299:52;;;1347:1;1344;1337:12;1299:52;1387:9;1374:23;1416:18;1457:2;1449:6;1446:14;1443:34;;;1473:1;1470;1463:12;1443:34;1511:6;1500:9;1496:22;1486:32;;1556:7;1549:4;1545:2;1541:13;1537:27;1527:55;;1578:1;1575;1568:12;1527:55;1618:2;1605:16;1644:2;1636:6;1633:14;1630:34;;;1660:1;1657;1650:12;1630:34;1713:7;1708:2;1698:6;1695:1;1691:14;1687:2;1683:23;1679:32;1676:45;1673:65;;;1734:1;1731;1724:12;1673:65;1765:2;1757:11;;;;;1787:6;;-1:-1:-1;1184:615:1;;-1:-1:-1;;;;1184:615:1:o;2012:315::-;2080:6;2088;2141:2;2129:9;2120:7;2116:23;2112:32;2109:52;;;2157:1;2154;2147:12;2109:52;2196:9;2183:23;2215:31;2240:5;2215:31;:::i;:::-;2265:5;2317:2;2302:18;;;;2289:32;;-1:-1:-1;;;2012:315:1:o;2554:127::-;2615:10;2610:3;2606:20;2603:1;2596:31;2646:4;2643:1;2636:15;2670:4;2667:1;2660:15;2686:135;2725:3;2746:17;;;2743:43;;2766:18;;:::i;:::-;-1:-1:-1;2813:1:1;2802:13;;2686:135::o;3184:184::-;3254:6;3307:2;3295:9;3286:7;3282:23;3278:32;3275:52;;;3323:1;3320;3313:12;3275:52;-1:-1:-1;3346:16:1;;3184:184;-1:-1:-1;3184:184:1:o;4008:277::-;4075:6;4128:2;4116:9;4107:7;4103:23;4099:32;4096:52;;;4144:1;4141;4134:12;4096:52;4176:9;4170:16;4229:5;4222:13;4215:21;4208:5;4205:32;4195:60;;4251:1;4248;4241:12;4639:251;4709:6;4762:2;4750:9;4741:7;4737:23;4733:32;4730:52;;;4778:1;4775;4768:12;4730:52;4810:9;4804:16;4829:31;4854:5;4829:31;:::i;5255:127::-;5316:10;5311:3;5307:20;5304:1;5297:31;5347:4;5344:1;5337:15;5371:4;5368:1;5361:15;5387:128;5454:9;;;5475:11;;;5472:37;;;5489:18;;:::i;:::-;5387:128;;;;:::o;5520:127::-;5581:10;5576:3;5572:20;5569:1;5562:31;5612:4;5609:1;5602:15;5636:4;5633:1;5626:15;5652:375;-1:-1:-1;;;;;5910:15:1;;;5892:34;;5962:15;;;;5957:2;5942:18;;5935:43;6009:2;5994:18;;5987:34;;;;5842:2;5827:18;;5652:375::o;7492:443::-;7681:2;7663:21;;;7700:18;;7693:34;;;-1:-1:-1;;;;;;7739:31:1;;7736:51;;;7783:1;7780;7773:12;7736:51;7817:6;7814:1;7810:14;7874:6;7866;7861:2;7850:9;7846:18;7833:48;7902:22;;;;7926:2;7898:31;;7492:443;-1:-1:-1;;;7492:443:1:o;9376:136::-;9415:3;9443:5;9433:39;;9452:18;;:::i;:::-;-1:-1:-1;;;9488:18:1;;9376:136::o;10294:209::-;10326:1;10352;10342:132;;10396:10;10391:3;10387:20;10384:1;10377:31;10431:4;10428:1;10421:15;10459:4;10456:1;10449:15;10342:132;-1:-1:-1;10488:9:1;;10294:209::o;10508:776::-;10735:6;10724:9;10717:25;10698:4;10761:2;10799:6;10794:2;10783:9;10779:18;10772:34;10856:6;10849:14;10842:22;10837:2;10826:9;10822:18;10815:50;10901:3;10896:2;10885:9;10881:18;10874:31;10934:6;10928:13;10978:6;10972:3;10961:9;10957:19;10950:35;11003:1;11013:141;11027:6;11024:1;11021:13;11013:141;;;11123:14;;;11119:23;;11113:30;11088:17;;;11107:3;11084:27;11077:67;11042:10;;11013:141;;;11017:3;11204:1;11198:3;11189:6;11178:9;11174:22;11170:32;11163:43;11274:3;11267:2;11263:7;11258:2;11250:6;11246:15;11242:29;11231:9;11227:45;11223:55;11215:63;;;;10508:776;;;;;;;:::o
Swarm Source
ipfs://4e06d4492aa17d176f78a4b5897bb6ed960fa3d431214c502345951b5ae6d0d8
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.