Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 392 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake Junglers | 17674077 | 428 days ago | IN | 0 ETH | 0.00214059 | ||||
Unstake Junglers | 17586292 | 441 days ago | IN | 0 ETH | 0.00317553 | ||||
Unstake Junglers | 16600488 | 579 days ago | IN | 0 ETH | 0.00257451 | ||||
Unstake Junglers | 16417977 | 605 days ago | IN | 0 ETH | 0.00165469 | ||||
Unstake Junglers | 16413156 | 606 days ago | IN | 0 ETH | 0.00217997 | ||||
Unstake Junglers | 16306235 | 621 days ago | IN | 0 ETH | 0.00174021 | ||||
Unstake Junglers | 16305699 | 621 days ago | IN | 0 ETH | 0.00206691 | ||||
Unstake Junglers | 16253183 | 628 days ago | IN | 0 ETH | 0.00206848 | ||||
Stake Junglers | 16220757 | 632 days ago | IN | 0 ETH | 0.00348367 | ||||
Unstake Junglers | 16146999 | 643 days ago | IN | 0 ETH | 0.00132163 | ||||
Unstake Junglers | 16108693 | 648 days ago | IN | 0 ETH | 0.00102386 | ||||
Unstake Junglers | 16099561 | 649 days ago | IN | 0 ETH | 0.00130679 | ||||
Unstake Junglers | 16097257 | 650 days ago | IN | 0 ETH | 0.00142197 | ||||
Stake Junglers | 16037094 | 658 days ago | IN | 0 ETH | 0.00176599 | ||||
Unstake Junglers | 16008484 | 662 days ago | IN | 0 ETH | 0.00122372 | ||||
Unstake Junglers | 16006620 | 662 days ago | IN | 0 ETH | 0.00100575 | ||||
Unstake Junglers | 15932227 | 673 days ago | IN | 0 ETH | 0.00250049 | ||||
Unstake Junglers | 15920666 | 674 days ago | IN | 0 ETH | 0.00197485 | ||||
Unstake Junglers | 15890582 | 679 days ago | IN | 0 ETH | 0.00625478 | ||||
Stake Junglers | 15884247 | 679 days ago | IN | 0 ETH | 0.00655727 | ||||
Unstake Junglers | 15870207 | 681 days ago | IN | 0 ETH | 0.00155853 | ||||
Stake Junglers | 15867983 | 682 days ago | IN | 0 ETH | 0.00272085 | ||||
Stake Junglers | 15862177 | 683 days ago | IN | 0 ETH | 0.00121401 | ||||
Stake Junglers | 15859415 | 683 days ago | IN | 0 ETH | 0.00159361 | ||||
Stake Junglers | 15853121 | 684 days ago | IN | 0 ETH | 0.00221505 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakeJunglers
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-04 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // 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); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: 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); } // File: contracts/IStakedJunglers.sol pragma solidity ^0.8.4; interface IStakedJunglers is IERC721 { function mint(address to, uint256 tokenId) external; function batchMint(address[] memory to, uint256[] memory tokenIds) external; function burn(uint256 tokenId) external; function batchBurn(uint256[] memory tokenIds) external; } // File: contracts/IERC721A.sol // ERC721A Contracts v4.1.0 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of an ERC721A compliant contract. */ interface IERC721A { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * The caller cannot approve to their own address. */ error ApproveToCaller(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); struct TokenOwnership { // The address of the owner. address addr; // Keeps track of the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set through `_extraData`. uint24 extraData; } /** * @dev Returns the total amount of tokens stored by the contract. * * Burned tokens are calculated here, use `_totalMinted()` if you want to count just minted tokens. */ function totalSupply() external view returns (uint256); // ============================== // 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); // ============================== // IERC721 // ============================== /** * @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); // ============================== // IERC721Metadata // ============================== /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================== // IERC2309 // ============================== /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` (inclusive) is transferred from `from` to `to`, * as defined in the ERC2309 standard. See `_mintERC2309` for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); } // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // 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; } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // 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); } // File: @openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/utils/ERC721Holder.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } } // File: @openzeppelin/contracts/utils/Context.sol // 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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/stakeJunglers.sol pragma solidity ^0.8.4; contract StakeJunglers is ERC721Holder, ReentrancyGuard, Ownable { using Counters for Counters.Counter; // Contracts IERC721A public Junglers; IStakedJunglers public StakedJunglers; // Events event Staked(address indexed owner, uint256 indexed tokenId); event Unstaked(address indexed owner, uint256 indexed tokenId); // State bool isPaused = false; Counters.Counter public totalSupply; mapping(uint256 => address) public stakedTokenOwner; // Modifiers modifier callerIsUser() { require(tx.origin == msg.sender, "The caller is another contract"); _; } // Public/External Functions function stakeJunglers(uint256[] calldata tokenIds_) external callerIsUser() nonReentrant() { require(!isPaused, "Contract is paused!"); for (uint256 i = 0; i < tokenIds_.length; i++) { uint id = tokenIds_[i]; require(msg.sender == Junglers.ownerOf(id), "You do not own this token!"); Junglers.transferFrom(msg.sender, address(this), id); StakedJunglers.mint(msg.sender, id); stakedTokenOwner[id] = msg.sender; emit Staked(msg.sender, id); } } function unstakeJunglers(uint256[] calldata tokenIds_) external callerIsUser() nonReentrant() { require(!isPaused, "Contract is paused!"); for (uint256 i = 0; i < tokenIds_.length; i++) { uint id = tokenIds_[i]; require(msg.sender == stakedTokenOwner[id], "You do not own this token!"); StakedJunglers.burn(id); Junglers.transferFrom(address(this), msg.sender, id); stakedTokenOwner[id] = address(0); emit Unstaked(msg.sender, id); } } // Views function ownerOf(uint256 tokenId_) public view returns (address) { return stakedTokenOwner[tokenId_]; } function balanceOf(address address_) public view returns (uint256) { uint256 _balance; uint256 total = totalSupply.current(); for (uint256 i = 1; i <= total + 1; i++) { if (stakedTokenOwner[i] == address_) { _balance++; } } return _balance; } function walletOfOwner(address address_) public virtual view returns (uint256[] memory) { uint256 balance = StakedJunglers.balanceOf(address_); uint256[] memory _tokens = new uint256[](balance); uint256 _index; for (uint256 i = 1; i < Junglers.totalSupply(); i++) { if (stakedTokenOwner[i] == address_) { _tokens[_index] = i; _index++; } } return _tokens; } //ADMIN function setJunglersContract(IERC721A address_) external onlyOwner { Junglers = address_; } function setStakedJunglersContract(IStakedJunglers address_) external onlyOwner { StakedJunglers = address_; } function setPaused(bool paused) external onlyOwner{ isPaused = paused; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"Junglers","outputs":[{"internalType":"contract IERC721A","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StakedJunglers","outputs":[{"internalType":"contract IStakedJunglers","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721A","name":"address_","type":"address"}],"name":"setJunglersContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IStakedJunglers","name":"address_","type":"address"}],"name":"setStakedJunglersContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"stakeJunglers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"unstakeJunglers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526003805460ff60a01b1916905534801561001d57600080fd5b50600160005561002c33610031565b610083565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610f66806100926000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b7a9c53311610066578063b7a9c5331461025d578063d45d33ea14610270578063e2a1bf1a14610283578063f2fde38b1461029657600080fd5b8063715018a6146102085780637effd795146102105780637ff6acf3146102395780638da5cb5b1461024c57600080fd5b8063438b6300116100d3578063438b6300146101815780635841f80b146101a15780636352211e146101b457806370a08231146101f557600080fd5b8063150b7a021461010557806316c38b3c1461014157806318160ddd146101565780633221d7011461016e575b600080fd5b610123610113366004610cb9565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b61015461014f366004610e0e565b6102a9565b005b6004546101609081565b604051908152602001610138565b61015461017c366004610d99565b6102cf565b61019461018f366004610c78565b610589565b6040516101389190610e62565b6101546101af366004610c78565b610750565b6101dd6101c2366004610e30565b6000908152600560205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610138565b610160610203366004610c78565b61077a565b6101546107e9565b6101dd61021e366004610e30565b6005602052600090815260409020546001600160a01b031681565b610154610247366004610c78565b6107fd565b6001546001600160a01b03166101dd565b6002546101dd906001600160a01b031681565b61015461027e366004610d99565b610827565b6003546101dd906001600160a01b031681565b6101546102a4366004610c78565b610b53565b6102b1610bcc565b60038054911515600160a01b0260ff60a01b19909216919091179055565b3233146103235760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e7472616374000060448201526064015b60405180910390fd5b600260005414156103765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161031a565b6002600055600354600160a01b900460ff16156103cb5760405162461bcd60e51b8152602060048201526013602482015272436f6e7472616374206973207061757365642160681b604482015260640161031a565b60005b8181101561057f5760008383838181106103ea576103ea610eef565b6020908102929092013560008181526005909352604090922054919250506001600160a01b0316331461045f5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468697320746f6b656e21000000000000604482015260640161031a565b600354604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b1580156104a557600080fd5b505af11580156104b9573d6000803e3d6000fd5b50506002546040516323b872dd60e01b8152306004820152336024820152604481018590526001600160a01b0390911692506323b872dd9150606401600060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b50505060008281526005602052604080822080546001600160a01b03191690555183925033917f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7591a3508061057781610ebe565b9150506103ce565b5050600160005550565b6003546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b1580156105d357600080fd5b505afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190610e49565b905060008167ffffffffffffffff81111561062857610628610f05565b604051908082528060200260200182016040528015610651578160200160208202803683370190505b509050600060015b600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a757600080fd5b505afa1580156106bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106df9190610e49565b811015610746576000818152600560205260409020546001600160a01b0387811691161415610734578083838151811061071b5761071b610eef565b60209081029190910101528161073081610ebe565b9250505b8061073e81610ebe565b915050610659565b5090949350505050565b610758610bcc565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080600061078860045490565b905060015b610798826001610ea6565b81116107e0576000818152600560205260409020546001600160a01b03868116911614156107ce57826107ca81610ebe565b9350505b806107d881610ebe565b91505061078d565b50909392505050565b6107f1610bcc565b6107fb6000610c26565b565b610805610bcc565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3233146108765760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000604482015260640161031a565b600260005414156108c95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161031a565b6002600055600354600160a01b900460ff161561091e5760405162461bcd60e51b8152602060048201526013602482015272436f6e7472616374206973207061757365642160681b604482015260640161031a565b60005b8181101561057f57600083838381811061093d5761093d610eef565b6002546040516331a9108f60e11b815260209290920293909301356004820181905293506001600160a01b0390921691636352211e915060240160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c79190610c9c565b6001600160a01b0316336001600160a01b031614610a275760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468697320746f6b656e21000000000000604482015260640161031a565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b50506003546040516340c10f1960e01b8152336004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505060008281526005602052604080822080546001600160a01b03191633908117909155905184935090917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d91a35080610b4b81610ebe565b915050610921565b610b5b610bcc565b6001600160a01b038116610bc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161031a565b610bc981610c26565b50565b6001546001600160a01b031633146107fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031a565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215610c8a57600080fd5b8135610c9581610f1b565b9392505050565b600060208284031215610cae57600080fd5b8151610c9581610f1b565b60008060008060808587031215610ccf57600080fd5b8435610cda81610f1b565b93506020850135610cea81610f1b565b925060408501359150606085013567ffffffffffffffff80821115610d0e57600080fd5b818701915087601f830112610d2257600080fd5b813581811115610d3457610d34610f05565b604051601f8201601f19908116603f01168101908382118183101715610d5c57610d5c610f05565b816040528281528a6020848701011115610d7557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060208385031215610dac57600080fd5b823567ffffffffffffffff80821115610dc457600080fd5b818501915085601f830112610dd857600080fd5b813581811115610de757600080fd5b8660208260051b8501011115610dfc57600080fd5b60209290920196919550909350505050565b600060208284031215610e2057600080fd5b81358015158114610c9557600080fd5b600060208284031215610e4257600080fd5b5035919050565b600060208284031215610e5b57600080fd5b5051919050565b6020808252825182820181905260009190848201906040850190845b81811015610e9a57835183529284019291840191600101610e7e565b50909695505050505050565b60008219821115610eb957610eb9610ed9565b500190565b6000600019821415610ed257610ed2610ed9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bc957600080fdfea264697066735822122042671fb8b8ab3cd73f6a92aa4937fe92d2573b40d48e5ce4ab4a3add3be164c364736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b7a9c53311610066578063b7a9c5331461025d578063d45d33ea14610270578063e2a1bf1a14610283578063f2fde38b1461029657600080fd5b8063715018a6146102085780637effd795146102105780637ff6acf3146102395780638da5cb5b1461024c57600080fd5b8063438b6300116100d3578063438b6300146101815780635841f80b146101a15780636352211e146101b457806370a08231146101f557600080fd5b8063150b7a021461010557806316c38b3c1461014157806318160ddd146101565780633221d7011461016e575b600080fd5b610123610113366004610cb9565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b61015461014f366004610e0e565b6102a9565b005b6004546101609081565b604051908152602001610138565b61015461017c366004610d99565b6102cf565b61019461018f366004610c78565b610589565b6040516101389190610e62565b6101546101af366004610c78565b610750565b6101dd6101c2366004610e30565b6000908152600560205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610138565b610160610203366004610c78565b61077a565b6101546107e9565b6101dd61021e366004610e30565b6005602052600090815260409020546001600160a01b031681565b610154610247366004610c78565b6107fd565b6001546001600160a01b03166101dd565b6002546101dd906001600160a01b031681565b61015461027e366004610d99565b610827565b6003546101dd906001600160a01b031681565b6101546102a4366004610c78565b610b53565b6102b1610bcc565b60038054911515600160a01b0260ff60a01b19909216919091179055565b3233146103235760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e7472616374000060448201526064015b60405180910390fd5b600260005414156103765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161031a565b6002600055600354600160a01b900460ff16156103cb5760405162461bcd60e51b8152602060048201526013602482015272436f6e7472616374206973207061757365642160681b604482015260640161031a565b60005b8181101561057f5760008383838181106103ea576103ea610eef565b6020908102929092013560008181526005909352604090922054919250506001600160a01b0316331461045f5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468697320746f6b656e21000000000000604482015260640161031a565b600354604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b1580156104a557600080fd5b505af11580156104b9573d6000803e3d6000fd5b50506002546040516323b872dd60e01b8152306004820152336024820152604481018590526001600160a01b0390911692506323b872dd9150606401600060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b50505060008281526005602052604080822080546001600160a01b03191690555183925033917f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f7591a3508061057781610ebe565b9150506103ce565b5050600160005550565b6003546040516370a0823160e01b81526001600160a01b0383811660048301526060926000929116906370a082319060240160206040518083038186803b1580156105d357600080fd5b505afa1580156105e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060b9190610e49565b905060008167ffffffffffffffff81111561062857610628610f05565b604051908082528060200260200182016040528015610651578160200160208202803683370190505b509050600060015b600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a757600080fd5b505afa1580156106bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106df9190610e49565b811015610746576000818152600560205260409020546001600160a01b0387811691161415610734578083838151811061071b5761071b610eef565b60209081029190910101528161073081610ebe565b9250505b8061073e81610ebe565b915050610659565b5090949350505050565b610758610bcc565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600080600061078860045490565b905060015b610798826001610ea6565b81116107e0576000818152600560205260409020546001600160a01b03868116911614156107ce57826107ca81610ebe565b9350505b806107d881610ebe565b91505061078d565b50909392505050565b6107f1610bcc565b6107fb6000610c26565b565b610805610bcc565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3233146108765760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000604482015260640161031a565b600260005414156108c95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161031a565b6002600055600354600160a01b900460ff161561091e5760405162461bcd60e51b8152602060048201526013602482015272436f6e7472616374206973207061757365642160681b604482015260640161031a565b60005b8181101561057f57600083838381811061093d5761093d610eef565b6002546040516331a9108f60e11b815260209290920293909301356004820181905293506001600160a01b0390921691636352211e915060240160206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c79190610c9c565b6001600160a01b0316336001600160a01b031614610a275760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468697320746f6b656e21000000000000604482015260640161031a565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b50506003546040516340c10f1960e01b8152336004820152602481018590526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b158015610add57600080fd5b505af1158015610af1573d6000803e3d6000fd5b50505060008281526005602052604080822080546001600160a01b03191633908117909155905184935090917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d91a35080610b4b81610ebe565b915050610921565b610b5b610bcc565b6001600160a01b038116610bc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161031a565b610bc981610c26565b50565b6001546001600160a01b031633146107fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031a565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208284031215610c8a57600080fd5b8135610c9581610f1b565b9392505050565b600060208284031215610cae57600080fd5b8151610c9581610f1b565b60008060008060808587031215610ccf57600080fd5b8435610cda81610f1b565b93506020850135610cea81610f1b565b925060408501359150606085013567ffffffffffffffff80821115610d0e57600080fd5b818701915087601f830112610d2257600080fd5b813581811115610d3457610d34610f05565b604051601f8201601f19908116603f01168101908382118183101715610d5c57610d5c610f05565b816040528281528a6020848701011115610d7557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060208385031215610dac57600080fd5b823567ffffffffffffffff80821115610dc457600080fd5b818501915085601f830112610dd857600080fd5b813581811115610de757600080fd5b8660208260051b8501011115610dfc57600080fd5b60209290920196919550909350505050565b600060208284031215610e2057600080fd5b81358015158114610c9557600080fd5b600060208284031215610e4257600080fd5b5035919050565b600060208284031215610e5b57600080fd5b5051919050565b6020808252825182820181905260009190848201906040850190845b81811015610e9a57835183529284019291840191600101610e7e565b50909695505050505050565b60008219821115610eb957610eb9610ed9565b500190565b6000600019821415610ed257610ed2610ed9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bc957600080fdfea264697066735822122042671fb8b8ab3cd73f6a92aa4937fe92d2573b40d48e5ce4ab4a3add3be164c364736f6c63430008070033
Deployed Bytecode Sourcemap
24712:3088:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20822:207;;;;;;:::i;:::-;-1:-1:-1;;;20822:207:0;;;;;;;;;;-1:-1:-1;;;;;;5274:33:1;;;5256:52;;5244:2;5229:18;20822:207:0;;;;;;;;27711:86;;;;;;:::i;:::-;;:::i;:::-;;25118:35;;;;;;;;;;8110:25:1;;;8098:2;8083:18;25118:35:0;7964:177:1;25971:549:0;;;;;;:::i;:::-;;:::i;26984:461::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27579:124::-;;;;;;:::i;:::-;;:::i;26542:117::-;;;;;;:::i;:::-;26598:7;26625:26;;;:16;:26;;;;;;-1:-1:-1;;;;;26625:26:0;;26542:117;;;;-1:-1:-1;;;;;3772:32:1;;;3754:51;;3742:2;3727:18;26542:117:0;3608:203:1;26667:305:0;;;;;;:::i;:::-;;:::i;23812:103::-;;;:::i;25160:51::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;25160:51:0;;;27466:105;;;;;;:::i;:::-;;:::i;23164:87::-;23237:6;;-1:-1:-1;;;;;23237:6:0;23164:87;;24846:24;;;;;-1:-1:-1;;;;;24846:24:0;;;25401:559;;;;;;:::i;:::-;;:::i;24877:37::-;;;;;-1:-1:-1;;;;;24877:37:0;;;24070:201;;;;;;:::i;:::-;;:::i;27711:86::-;23050:13;:11;:13::i;:::-;27772:8:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;27772:17:0::1;-1:-1:-1::0;;;;27772:17:0;;::::1;::::0;;;::::1;::::0;;27711:86::o;25971:549::-;25281:9;25294:10;25281:23;25273:66;;;;-1:-1:-1;;;25273:66:0;;6731:2:1;25273:66:0;;;6713:21:1;6770:2;6750:18;;;6743:30;6809:32;6789:18;;;6782:60;6859:18;;25273:66:0;;;;;;;;;18207:1:::1;18805:7;;:19;;18797:63;;;::::0;-1:-1:-1;;;18797:63:0;;7451:2:1;18797:63:0::1;::::0;::::1;7433:21:1::0;7490:2;7470:18;;;7463:30;7529:33;7509:18;;;7502:61;7580:18;;18797:63:0::1;7249:355:1::0;18797:63:0::1;18207:1;18938:7;:18:::0;26085:8:::2;::::0;-1:-1:-1;;;26085:8:0;::::2;;;26084:9;26076:41;;;::::0;-1:-1:-1;;;26076:41:0;;6383:2:1;26076:41:0::2;::::0;::::2;6365:21:1::0;6422:2;6402:18;;;6395:30;-1:-1:-1;;;6441:18:1;;;6434:49;6500:18;;26076:41:0::2;6181:343:1::0;26076:41:0::2;26133:9;26128:385;26148:20:::0;;::::2;26128:385;;;26190:7;26200:9;;26210:1;26200:12;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;::::2;;26249:20;::::0;;;:16:::2;:20:::0;;;;;;;;26200:12;;-1:-1:-1;;;;;;;26249:20:0::2;26235:10;:34;26227:73;;;::::0;-1:-1:-1;;;26227:73:0;;7811:2:1;26227:73:0::2;::::0;::::2;7793:21:1::0;7850:2;7830:18;;;7823:30;7889:28;7869:18;;;7862:56;7935:18;;26227:73:0::2;7609:350:1::0;26227:73:0::2;26317:14;::::0;:23:::2;::::0;-1:-1:-1;;;26317:23:0;;::::2;::::0;::::2;8110:25:1::0;;;-1:-1:-1;;;;;26317:14:0;;::::2;::::0;:19:::2;::::0;8083:18:1;;26317:23:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;26355:8:0::2;::::0;:52:::2;::::0;-1:-1:-1;;;26355:52:0;;26385:4:::2;26355:52;::::0;::::2;4056:34:1::0;26392:10:0::2;4106:18:1::0;;;4099:43;4158:18;;;4151:34;;;-1:-1:-1;;;;;26355:8:0;;::::2;::::0;-1:-1:-1;26355:21:0::2;::::0;-1:-1:-1;3991:18:1;;26355:52:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;26453:1:0::2;26422:20:::0;;;:16:::2;:20;::::0;;;;;:33;;-1:-1:-1;;;;;;26422:33:0::2;::::0;;26477:24;26439:2;;-1:-1:-1;26486:10:0::2;::::0;26477:24:::2;::::0;::::2;-1:-1:-1::0;26170:3:0;::::2;::::0;::::2;:::i;:::-;;;;26128:385;;;-1:-1:-1::0;;18163:1:0::1;19117:7;:22:::0;-1:-1:-1;25971:549:0:o;26984:461::-;27101:14;;:34;;-1:-1:-1;;;27101:34:0;;-1:-1:-1;;;;;3772:32:1;;;27101:34:0;;;3754:51:1;27054:16:0;;27083:15;;27101:14;;;:24;;3727:18:1;;27101:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27083:52;;27146:24;27187:7;27173:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27173:22:0;-1:-1:-1;27146:49:0;-1:-1:-1;27206:14:0;27248:1;27231:182;27255:8;;;;;;;;;-1:-1:-1;;;;;27255:8:0;-1:-1:-1;;;;;27255:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27251:1;:26;27231:182;;;27303:19;;;;:16;:19;;;;;;-1:-1:-1;;;;;27303:31:0;;;:19;;:31;27299:103;;;27374:1;27356:7;27364:6;27356:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;27377:8;;;;:::i;:::-;;;;27299:103;27279:3;;;;:::i;:::-;;;;27231:182;;;-1:-1:-1;27430:7:0;;26984:461;-1:-1:-1;;;;26984:461:0:o;27579:124::-;23050:13;:11;:13::i;:::-;27670:14:::1;:25:::0;;-1:-1:-1;;;;;;27670:25:0::1;-1:-1:-1::0;;;;;27670:25:0;;;::::1;::::0;;;::::1;::::0;;27579:124::o;26667:305::-;26725:7;26745:16;26772:13;26788:21;:11;15894:14;;15802:114;26788:21;26772:37;-1:-1:-1;26837:1:0;26820:119;26845:9;:5;26853:1;26845:9;:::i;:::-;26840:1;:14;26820:119;;26880:19;;;;:16;:19;;;;;;-1:-1:-1;;;;;26880:31:0;;;:19;;:31;26876:52;;;26915:10;;;;:::i;:::-;;;;26876:52;26856:3;;;;:::i;:::-;;;;26820:119;;;-1:-1:-1;26956:8:0;;26667:305;-1:-1:-1;;;26667:305:0:o;23812:103::-;23050:13;:11;:13::i;:::-;23877:30:::1;23904:1;23877:18;:30::i;:::-;23812:103::o:0;27466:105::-;23050:13;:11;:13::i;:::-;27544:8:::1;:19:::0;;-1:-1:-1;;;;;;27544:19:0::1;-1:-1:-1::0;;;;;27544:19:0;;;::::1;::::0;;;::::1;::::0;;27466:105::o;25401:559::-;25281:9;25294:10;25281:23;25273:66;;;;-1:-1:-1;;;25273:66:0;;6731:2:1;25273:66:0;;;6713:21:1;6770:2;6750:18;;;6743:30;6809:32;6789:18;;;6782:60;6859:18;;25273:66:0;6529:354:1;25273:66:0;18207:1:::1;18805:7;;:19;;18797:63;;;::::0;-1:-1:-1;;;18797:63:0;;7451:2:1;18797:63:0::1;::::0;::::1;7433:21:1::0;7490:2;7470:18;;;7463:30;7529:33;7509:18;;;7502:61;7580:18;;18797:63:0::1;7249:355:1::0;18797:63:0::1;18207:1;18938:7;:18:::0;25513:8:::2;::::0;-1:-1:-1;;;25513:8:0;::::2;;;25512:9;25504:41;;;::::0;-1:-1:-1;;;25504:41:0;;6383:2:1;25504:41:0::2;::::0;::::2;6365:21:1::0;6422:2;6402:18;;;6395:30;-1:-1:-1;;;6441:18:1;;;6434:49;6500:18;;25504:41:0::2;6181:343:1::0;25504:41:0::2;25561:9;25556:397;25576:20:::0;;::::2;25556:397;;;25618:7;25628:9;;25638:1;25628:12;;;;;;;:::i;:::-;25677:8;::::0;:20:::2;::::0;-1:-1:-1;;;25677:20:0;;25628:12:::2;::::0;;;::::2;::::0;;;::::2;;25677:20;::::0;::::2;8110:25:1::0;;;25628:12:0;-1:-1:-1;;;;;;25677:8:0;;::::2;::::0;:16:::2;::::0;-1:-1:-1;8083:18:1;;25677:20:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25663:34:0::2;:10;-1:-1:-1::0;;;;;25663:34:0::2;;25655:73;;;::::0;-1:-1:-1;;;25655:73:0;;7811:2:1;25655:73:0::2;::::0;::::2;7793:21:1::0;7850:2;7830:18;;;7823:30;7889:28;7869:18;;;7862:56;7935:18;;25655:73:0::2;7609:350:1::0;25655:73:0::2;25745:8;::::0;:52:::2;::::0;-1:-1:-1;;;25745:52:0;;25767:10:::2;25745:52;::::0;::::2;4056:34:1::0;25787:4:0::2;4106:18:1::0;;;4099:43;4158:18;;;4151:34;;;-1:-1:-1;;;;;25745:8:0;;::::2;::::0;:21:::2;::::0;3991:18:1;;25745:52:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;25812:14:0::2;::::0;:35:::2;::::0;-1:-1:-1;;;25812:35:0;;25832:10:::2;25812:35;::::0;::::2;4370:51:1::0;4437:18;;;4430:34;;;-1:-1:-1;;;;;25812:14:0;;::::2;::::0;-1:-1:-1;25812:19:0::2;::::0;-1:-1:-1;4343:18:1;;25812:35:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;25864:20:0::2;::::0;;;:16:::2;:20;::::0;;;;;:33;;-1:-1:-1;;;;;;25864:33:0::2;25887:10;25864:33:::0;;::::2;::::0;;;25919:22;;25881:2;;-1:-1:-1;25887:10:0;;25919:22:::2;::::0;::::2;-1:-1:-1::0;25598:3:0;::::2;::::0;::::2;:::i;:::-;;;;25556:397;;24070:201:::0;23050:13;:11;:13::i;:::-;-1:-1:-1;;;;;24159:22:0;::::1;24151:73;;;::::0;-1:-1:-1;;;24151:73:0;;5976:2:1;24151:73:0::1;::::0;::::1;5958:21:1::0;6015:2;5995:18;;;5988:30;6054:34;6034:18;;;6027:62;-1:-1:-1;;;6105:18:1;;;6098:36;6151:19;;24151:73:0::1;5774:402:1::0;24151:73:0::1;24235:28;24254:8;24235:18;:28::i;:::-;24070:201:::0;:::o;23329:132::-;23237:6;;-1:-1:-1;;;;;23237:6:0;21795:10;23393:23;23385:68;;;;-1:-1:-1;;;23385:68:0;;7090:2:1;23385:68:0;;;7072:21:1;;;7109:18;;;7102:30;7168:34;7148:18;;;7141:62;7220:18;;23385:68:0;6888:356:1;24431:191:0;24524:6;;;-1:-1:-1;;;;;24541:17:0;;;-1:-1:-1;;;;;;24541:17:0;;;;;;;24574:40;;24524:6;;;24541:17;24524:6;;24574:40;;24505:16;;24574:40;24494:128;24431:191;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:1266::-;617:6;625;633;641;694:3;682:9;673:7;669:23;665:33;662:53;;;711:1;708;701:12;662:53;750:9;737:23;769:31;794:5;769:31;:::i;:::-;819:5;-1:-1:-1;876:2:1;861:18;;848:32;889:33;848:32;889:33;:::i;:::-;941:7;-1:-1:-1;995:2:1;980:18;;967:32;;-1:-1:-1;1050:2:1;1035:18;;1022:32;1073:18;1103:14;;;1100:34;;;1130:1;1127;1120:12;1100:34;1168:6;1157:9;1153:22;1143:32;;1213:7;1206:4;1202:2;1198:13;1194:27;1184:55;;1235:1;1232;1225:12;1184:55;1271:2;1258:16;1293:2;1289;1286:10;1283:36;;;1299:18;;:::i;:::-;1374:2;1368:9;1342:2;1428:13;;-1:-1:-1;;1424:22:1;;;1448:2;1420:31;1416:40;1404:53;;;1472:18;;;1492:22;;;1469:46;1466:72;;;1518:18;;:::i;:::-;1558:10;1554:2;1547:22;1593:2;1585:6;1578:18;1633:7;1628:2;1623;1619;1615:11;1611:20;1608:33;1605:53;;;1654:1;1651;1644:12;1605:53;1710:2;1705;1701;1697:11;1692:2;1684:6;1680:15;1667:46;1755:1;1750:2;1745;1737:6;1733:15;1729:24;1722:35;1776:6;1766:16;;;;;;;522:1266;;;;;;;:::o;1793:615::-;1879:6;1887;1940:2;1928:9;1919:7;1915:23;1911:32;1908:52;;;1956:1;1953;1946:12;1908:52;1996:9;1983:23;2025:18;2066:2;2058:6;2055:14;2052:34;;;2082:1;2079;2072:12;2052:34;2120:6;2109:9;2105:22;2095:32;;2165:7;2158:4;2154:2;2150:13;2146:27;2136:55;;2187:1;2184;2177:12;2136:55;2227:2;2214:16;2253:2;2245:6;2242:14;2239:34;;;2269:1;2266;2259:12;2239:34;2322:7;2317:2;2307:6;2304:1;2300:14;2296:2;2292:23;2288:32;2285:45;2282:65;;;2343:1;2340;2333:12;2282:65;2374:2;2366:11;;;;;2396:6;;-1:-1:-1;1793:615:1;;-1:-1:-1;;;;1793:615:1:o;2413:273::-;2469:6;2522:2;2510:9;2501:7;2497:23;2493:32;2490:52;;;2538:1;2535;2528:12;2490:52;2577:9;2564:23;2630:5;2623:13;2616:21;2609:5;2606:32;2596:60;;2652:1;2649;2642:12;3234:180;3293:6;3346:2;3334:9;3325:7;3321:23;3317:32;3314:52;;;3362:1;3359;3352:12;3314:52;-1:-1:-1;3385:23:1;;3234:180;-1:-1:-1;3234:180:1:o;3419:184::-;3489:6;3542:2;3530:9;3521:7;3517:23;3513:32;3510:52;;;3558:1;3555;3548:12;3510:52;-1:-1:-1;3581:16:1;;3419:184;-1:-1:-1;3419:184:1:o;4475:632::-;4646:2;4698:21;;;4768:13;;4671:18;;;4790:22;;;4617:4;;4646:2;4869:15;;;;4843:2;4828:18;;;4617:4;4912:169;4926:6;4923:1;4920:13;4912:169;;;4987:13;;4975:26;;5056:15;;;;5021:12;;;;4948:1;4941:9;4912:169;;;-1:-1:-1;5098:3:1;;4475:632;-1:-1:-1;;;;;;4475:632:1:o;8146:128::-;8186:3;8217:1;8213:6;8210:1;8207:13;8204:39;;;8223:18;;:::i;:::-;-1:-1:-1;8259:9:1;;8146:128::o;8279:135::-;8318:3;-1:-1:-1;;8339:17:1;;8336:43;;;8359:18;;:::i;:::-;-1:-1:-1;8406:1:1;8395:13;;8279:135::o;8419:127::-;8480:10;8475:3;8471:20;8468:1;8461:31;8511:4;8508:1;8501:15;8535:4;8532:1;8525:15;8551:127;8612:10;8607:3;8603:20;8600:1;8593:31;8643:4;8640:1;8633:15;8667:4;8664:1;8657:15;8683:127;8744:10;8739:3;8735:20;8732:1;8725:31;8775:4;8772:1;8765:15;8799:4;8796:1;8789:15;8815:131;-1:-1:-1;;;;;8890:31:1;;8880:42;;8870:70;;8936:1;8933;8926:12
Swarm Source
ipfs://42671fb8b8ab3cd73f6a92aa4937fe92d2573b40d48e5ce4ab4a3add3be164c3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.