More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 177 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake Assets | 19817531 | 113 days ago | IN | 0 ETH | 0.00082023 | ||||
Stake Assets | 19679619 | 132 days ago | IN | 0 ETH | 0.00421817 | ||||
Un Stake Assets | 19650829 | 137 days ago | IN | 0 ETH | 0.00098447 | ||||
Stake Assets | 19537198 | 152 days ago | IN | 0 ETH | 0.0101534 | ||||
Un Stake Assets | 18980823 | 231 days ago | IN | 0 ETH | 0.00584394 | ||||
Stake Assets | 18897269 | 242 days ago | IN | 0 ETH | 0.00270956 | ||||
Stake Assets | 18869778 | 246 days ago | IN | 0 ETH | 0.0104001 | ||||
Stake Assets | 18695760 | 271 days ago | IN | 0 ETH | 0.00738472 | ||||
Stake Assets | 18634159 | 279 days ago | IN | 0 ETH | 0.01229326 | ||||
Un Stake Assets | 18491231 | 299 days ago | IN | 0 ETH | 0.00220564 | ||||
Stake Assets | 18388965 | 313 days ago | IN | 0 ETH | 0.00112875 | ||||
Stake Assets | 18338752 | 320 days ago | IN | 0 ETH | 0.00090234 | ||||
Stake Assets | 18248433 | 333 days ago | IN | 0 ETH | 0.00103694 | ||||
Stake Assets | 18018038 | 365 days ago | IN | 0 ETH | 0.00290238 | ||||
Stake Assets | 17990267 | 369 days ago | IN | 0 ETH | 0.00188913 | ||||
Stake Assets | 17946737 | 375 days ago | IN | 0 ETH | 0.00135635 | ||||
Un Stake Assets | 17684546 | 412 days ago | IN | 0 ETH | 0.0014094 | ||||
Stake Assets | 17509825 | 437 days ago | IN | 0 ETH | 0.00135728 | ||||
Stake Assets | 17484370 | 440 days ago | IN | 0 ETH | 0.00347158 | ||||
Stake Assets | 17386254 | 454 days ago | IN | 0 ETH | 0.00311427 | ||||
Stake Assets | 17350654 | 459 days ago | IN | 0 ETH | 0.00265815 | ||||
Stake Assets | 17341450 | 460 days ago | IN | 0 ETH | 0.00213065 | ||||
Un Stake Assets | 17334905 | 461 days ago | IN | 0 ETH | 0.00200546 | ||||
Un Stake Assets | 17328532 | 462 days ago | IN | 0 ETH | 0.00266126 | ||||
Stake Assets | 17256592 | 472 days ago | IN | 0 ETH | 0.01418039 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingV2
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-25 */ // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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); } } pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } 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; } } 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); } 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); } 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); } 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; } } pragma solidity ^0.8.4; /** * @dev An staking infomation contains 3 components: a staker is user who staked the nft, a staked time ( time where staker staked their * token(s) into smart contract. This data only valid when unStakedTime != 0 ), a unstaked time * ( time where staker unstake their token from smart contract. This data == 0 means token is * not being staked.) */ struct StakingInfo { address staker; uint stakedTime; uint unStakedTime; } pragma solidity ^0.8.4; interface StakingErrorsAndEvents { /** * @dev Revert with an error when list of ERC721 addresses not have the same length with list of tokenID */ error InvalidAddressAndIDList(); /** * @dev Revert with an error when an user are not the owner of ERC721. */ error NotOwnerOfERC721(); /** * @dev Revert with an error when an user are not the staker. */ error NotStakerOfERC721(); /** * @dev Revert with an error when an user are not the staker or asset already been unstaked. */ error CannotUnstakeAsset(); } pragma solidity ^0.8.4; /** * @title StakingInterfaceV2 * @author 0xHenry * @custom:version 2.0 * @notice Staking is a protocol for tracking user staking NFT for off-chain rewards * * @dev StakingInterface contains all external function interfaces for * Staking. */ interface StakingInterfaceV2 { /** * @notice Staking single/multiple ERC721(s) by transfer token(s) to this * smart contract and store staking information. * * @param erc721Adds List of ERC721 addresses. * @param tokenIds List of TokenId. */ function stakeAssets(address[] memory erc721Adds,uint256[] memory tokenIds) external; /** * @notice UnStaking single/multiple ERC721(s) by transfer back token(s) from this * smart contract and reset staking information. * * @param erc721Adds List of ERC721 addresses. * @param tokenIds List of TokenId. */ function unStakeAssets(address[] memory erc721Adds,uint256[] memory tokenIds) external; /** * @notice Combine Stake and UnStaking single/multiple ERC721(s) to optimize price. * * @param stakeERC721Adds List of ERC721 addresses to stake. * @param stakeTokenIds List of TokenId of asset being staked. * @param stakeERC721Adds List of ERC721 addresses to unstake. * @param stakeTokenIds List of TokenId of asset being unstaked. */ function optimizeStakeAndUnStakeAssets( address[] memory stakeERC721Adds, uint256[] memory stakeTokenIds, address[] memory unStakeERC721Adds, uint256[] memory unStakeTokenIds ) external; /** * @notice Retrieve specific user contribution of specific vault. * * @param erc721Add Address of ERC721 token. * @param tokenId Token ID. * * @return stakingInfo Includes staker, stakedTime, unStakedTime. */ function getStakeInfo(address erc721Add,uint256 tokenId) external view returns(StakingInfo memory stakingInfo); } pragma solidity ^0.8.4; contract StakeInternalV2 is ERC721Holder, Ownable, ReentrancyGuard, Pausable, StakingErrorsAndEvents { mapping(address => mapping(uint256 => StakingInfo)) private stakedAssets; /** * @dev Internal function to stake single/multiple ERC721(s). * * @param erc721Adds List of ERC721 addresses. * @param tokenIds List of TokenId. */ function _stakeAssets(address[] memory erc721Adds,uint256[] memory tokenIds) internal { if(erc721Adds.length != tokenIds.length){ revert InvalidAddressAndIDList(); } for (uint i = 0; i < erc721Adds.length; i++){ _stakeAsset(erc721Adds[i], tokenIds[i]); } } /** * @dev Internal function to stake single ERC721(s) by transfer token to this * smart contract and set staking information. * * @param erc721Add ERC721 address. * @param tokenId TokenId. */ function _stakeAsset(address erc721Add, uint256 tokenId) internal nonReentrant whenNotPaused{ //To prevent if user approve NFT successfully then stake asset fail at some point. //Attacker can leverage this. if(IERC721(erc721Add).ownerOf(tokenId) != msg.sender){ revert NotOwnerOfERC721(); } StakingInfo storage stakingInfo = stakedAssets[erc721Add][tokenId]; stakingInfo.staker = msg.sender; stakingInfo.stakedTime = block.timestamp; stakingInfo.unStakedTime = 0; IERC721(erc721Add).safeTransferFrom(msg.sender, address(this), tokenId); } /** * @dev Internal function to unStake single/multiple ERC721(s). * * @param erc721Adds List of ERC721 addresses. * @param tokenIds List of TokenId. */ function _unStakeAssets(address[] memory erc721Adds,uint256[] memory tokenIds) internal { if(erc721Adds.length != tokenIds.length){ revert InvalidAddressAndIDList(); } for (uint i = 0; i < erc721Adds.length; i++){ _unStakeAsset(erc721Adds[i], tokenIds[i]); } } /** * @dev Internal function to stake single ERC721(s) by transfer back token from this * smart contract and set staking information. * * @param erc721Add ERC721 address. * @param tokenId TokenId. */ function _unStakeAsset(address erc721Add, uint256 tokenId) internal nonReentrant whenNotPaused{ StakingInfo storage stakingInfo = stakedAssets[erc721Add][tokenId]; if(stakingInfo.stakedTime == 0){ revert CannotUnstakeAsset(); } if(stakingInfo.staker != msg.sender){ revert NotStakerOfERC721(); } stakingInfo.unStakedTime = block.timestamp; stakingInfo.stakedTime = 0; IERC721(erc721Add).safeTransferFrom(address(this), msg.sender, tokenId); } /** * @dev Internal function to get stake information * * @param erc721Add ERC721 address. * @param tokenId TokenId. */ function _getStakeInfo(address erc721Add,uint256 tokenId) internal view returns(StakingInfo memory stakingInfo){ stakingInfo = stakedAssets[erc721Add][tokenId]; } } pragma solidity ^0.8.4; /** * @title StakingV2 * @author 0xHenry * @custom:version 2.0 * @notice Staking is a protocol for tracking user staking NFT for off-chain rewards. * */ contract StakingV2 is StakingInterfaceV2, StakeInternalV2{ /** * @notice Staking single/multiple ERC721(s) by transfer token(s) to this * smart contract and store staking information. * * @param erc721Adds List of ERC721 addresses. * @param tokenIds List of TokenId. */ function stakeAssets(address[] memory erc721Adds,uint256[] memory tokenIds) external override { _stakeAssets(erc721Adds,tokenIds); } /** * @notice UnStaking single/multiple ERC721(s) by transfer back token(s) from this * smart contract and reset staking information. * * @param erc721Adds List of ERC721 addresses. * @param tokenIds List of TokenId. */ function unStakeAssets(address[] memory erc721Adds,uint256[] memory tokenIds) external override { _unStakeAssets(erc721Adds,tokenIds); } /** * @notice Combine Stake and UnStaking single/multiple ERC721(s) to optimize price. * * @param stakeERC721Adds List of ERC721 addresses to stake. * @param stakeTokenIds List of TokenId of asset being staked. * @param stakeERC721Adds List of ERC721 addresses to unstake. * @param stakeTokenIds List of TokenId of asset being unstaked. */ function optimizeStakeAndUnStakeAssets( address[] memory stakeERC721Adds, uint256[] memory stakeTokenIds, address[] memory unStakeERC721Adds, uint256[] memory unStakeTokenIds ) external override { _stakeAssets(stakeERC721Adds,stakeTokenIds); _unStakeAssets(unStakeERC721Adds,unStakeTokenIds); } /** * @notice Retrieve specific user contribution of specific vault. * * @param erc721Add Address of ERC721 token. * @param tokenId Token ID. * * @return stakingInfo Includes staker, stakedTime, unStakedTime. */ function getStakeInfo(address erc721Add,uint256 tokenId) external override view returns(StakingInfo memory stakingInfo){ stakingInfo = _getStakeInfo(erc721Add,tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"CannotUnstakeAsset","type":"error"},{"inputs":[],"name":"InvalidAddressAndIDList","type":"error"},{"inputs":[],"name":"NotOwnerOfERC721","type":"error"},{"inputs":[],"name":"NotStakerOfERC721","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"erc721Add","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getStakeInfo","outputs":[{"components":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"stakedTime","type":"uint256"},{"internalType":"uint256","name":"unStakedTime","type":"uint256"}],"internalType":"struct StakingInfo","name":"stakingInfo","type":"tuple"}],"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":[{"internalType":"address[]","name":"stakeERC721Adds","type":"address[]"},{"internalType":"uint256[]","name":"stakeTokenIds","type":"uint256[]"},{"internalType":"address[]","name":"unStakeERC721Adds","type":"address[]"},{"internalType":"uint256[]","name":"unStakeTokenIds","type":"uint256[]"}],"name":"optimizeStakeAndUnStakeAssets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721Adds","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeAssets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721Adds","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unStakeAssets","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061002d61002261005460201b60201c565b61005c60201b60201c565b600180819055506000600260006101000a81548160ff021916908315150217905550610120565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61158e8061012f6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80636d91ea6d116100665780636d91ea6d14610132578063715018a61461014e5780638da5cb5b14610158578063db74a76814610176578063f2fde38b1461019257610093565b8063150b7a02146100985780633b521efe146100c85780635679b7ad146100f85780635c975abb14610114575b600080fd5b6100b260048036038101906100ad9190610de9565b6101ae565b6040516100bf9190611164565b60405180910390f35b6100e260048036038101906100dd9190610e64565b6101c2565b6040516100ef91906111ff565b60405180910390f35b610112600480360381019061010d9190610ea0565b6101dc565b005b61011c6101ea565b6040516101299190611149565b60405180910390f35b61014c60048036038101906101479190610f0c565b610201565b005b61015661021b565b005b61016061022f565b60405161016d91906110f7565b60405180910390f35b610190600480360381019061018b9190610ea0565b610258565b005b6101ac60048036038101906101a79190610d97565b610266565b005b600063150b7a0260e01b9050949350505050565b6101ca610b8d565b6101d483836102ea565b905092915050565b6101e682826103bf565b5050565b6000600260009054906101000a900460ff16905090565b61020b84846103bf565b61021582826104a8565b50505050565b610223610591565b61022d600061060f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61026282826104a8565b5050565b61026e610591565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d59061117f565b60405180910390fd5b6102e78161060f565b50565b6102f2610b8d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481525050905092915050565b80518251146103fa576040517f87dd190900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156104a357610490838281518110610442577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151838381518110610483577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516106d3565b808061049b906113a8565b9150506103fd565b505050565b80518251146104e3576040517f87dd190900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561058c5761057983828151811061052b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015183838151811061056c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161093b565b8080610584906113a8565b9150506104e6565b505050565b610599610b3b565b73ffffffffffffffffffffffffffffffffffffffff166105b761022f565b73ffffffffffffffffffffffffffffffffffffffff161461060d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610604906111bf565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60026001541415610719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610710906111df565b60405180910390fd5b6002600181905550610729610b43565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610779919061121a565b60206040518083038186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190610dc0565b73ffffffffffffffffffffffffffffffffffffffff1614610816576040517f09702e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160010181905550600081600201819055508273ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b81526004016108fd93929190611112565b600060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b5050505050600180819055505050565b60026001541415610981576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610978906111df565b60405180910390fd5b6002600181905550610991610b43565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000209050600081600101541415610a24576040517fea93b40500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aad576040517fc4bbb55e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020181905550600081600101819055508273ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b8152600401610afd93929190611112565b600060405180830381600087803b158015610b1757600080fd5b505af1158015610b2b573d6000803e3d6000fd5b5050505050600180819055505050565b600033905090565b610b4b6101ea565b15610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b829061119f565b60405180910390fd5b565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b6000610bd7610bd28461125a565b611235565b90508083825260208201905082856020860282011115610bf657600080fd5b60005b85811015610c265781610c0c8882610cda565b845260208401935060208301925050600181019050610bf9565b5050509392505050565b6000610c43610c3e84611286565b611235565b90508083825260208201905082856020860282011115610c6257600080fd5b60005b85811015610c925781610c788882610d82565b845260208401935060208301925050600181019050610c65565b5050509392505050565b6000610caf610caa846112b2565b611235565b905082815260208101848484011115610cc757600080fd5b610cd2848285611368565b509392505050565b600081359050610ce98161152a565b92915050565b600081519050610cfe8161152a565b92915050565b600082601f830112610d1557600080fd5b8135610d25848260208601610bc4565b91505092915050565b600082601f830112610d3f57600080fd5b8135610d4f848260208601610c30565b91505092915050565b600082601f830112610d6957600080fd5b8135610d79848260208601610c9c565b91505092915050565b600081359050610d9181611541565b92915050565b600060208284031215610da957600080fd5b6000610db784828501610cda565b91505092915050565b600060208284031215610dd257600080fd5b6000610de084828501610cef565b91505092915050565b60008060008060808587031215610dff57600080fd5b6000610e0d87828801610cda565b9450506020610e1e87828801610cda565b9350506040610e2f87828801610d82565b925050606085013567ffffffffffffffff811115610e4c57600080fd5b610e5887828801610d58565b91505092959194509250565b60008060408385031215610e7757600080fd5b6000610e8585828601610cda565b9250506020610e9685828601610d82565b9150509250929050565b60008060408385031215610eb357600080fd5b600083013567ffffffffffffffff811115610ecd57600080fd5b610ed985828601610d04565b925050602083013567ffffffffffffffff811115610ef657600080fd5b610f0285828601610d2e565b9150509250929050565b60008060008060808587031215610f2257600080fd5b600085013567ffffffffffffffff811115610f3c57600080fd5b610f4887828801610d04565b945050602085013567ffffffffffffffff811115610f6557600080fd5b610f7187828801610d2e565b935050604085013567ffffffffffffffff811115610f8e57600080fd5b610f9a87828801610d04565b925050606085013567ffffffffffffffff811115610fb757600080fd5b610fc387828801610d2e565b91505092959194509250565b610fd8816112f4565b82525050565b610fe7816112f4565b82525050565b610ff681611306565b82525050565b61100581611312565b82525050565b60006110186026836112e3565b915061102382611460565b604082019050919050565b600061103b6010836112e3565b9150611046826114af565b602082019050919050565b600061105e6020836112e3565b9150611069826114d8565b602082019050919050565b6000611081601f836112e3565b915061108c82611501565b602082019050919050565b6060820160008201516110ad6000850182610fcf565b5060208201516110c060208501826110d9565b5060408201516110d360408501826110d9565b50505050565b6110e28161135e565b82525050565b6110f18161135e565b82525050565b600060208201905061110c6000830184610fde565b92915050565b60006060820190506111276000830186610fde565b6111346020830185610fde565b61114160408301846110e8565b949350505050565b600060208201905061115e6000830184610fed565b92915050565b60006020820190506111796000830184610ffc565b92915050565b600060208201905081810360008301526111988161100b565b9050919050565b600060208201905081810360008301526111b88161102e565b9050919050565b600060208201905081810360008301526111d881611051565b9050919050565b600060208201905081810360008301526111f881611074565b9050919050565b60006060820190506112146000830184611097565b92915050565b600060208201905061122f60008301846110e8565b92915050565b600061123f611250565b905061124b8282611377565b919050565b6000604051905090565b600067ffffffffffffffff82111561127557611274611420565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156112a1576112a0611420565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156112cd576112cc611420565b5b6112d68261144f565b9050602081019050919050565b600082825260208201905092915050565b60006112ff8261133e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6113808261144f565b810181811067ffffffffffffffff8211171561139f5761139e611420565b5b80604052505050565b60006113b38261135e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113e6576113e56113f1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611533816112f4565b811461153e57600080fd5b50565b61154a8161135e565b811461155557600080fd5b5056fea2646970667358221220f46a850bcc64d1341366eaf71def420a7442637879d6faee4d3350eab1f396a764736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80636d91ea6d116100665780636d91ea6d14610132578063715018a61461014e5780638da5cb5b14610158578063db74a76814610176578063f2fde38b1461019257610093565b8063150b7a02146100985780633b521efe146100c85780635679b7ad146100f85780635c975abb14610114575b600080fd5b6100b260048036038101906100ad9190610de9565b6101ae565b6040516100bf9190611164565b60405180910390f35b6100e260048036038101906100dd9190610e64565b6101c2565b6040516100ef91906111ff565b60405180910390f35b610112600480360381019061010d9190610ea0565b6101dc565b005b61011c6101ea565b6040516101299190611149565b60405180910390f35b61014c60048036038101906101479190610f0c565b610201565b005b61015661021b565b005b61016061022f565b60405161016d91906110f7565b60405180910390f35b610190600480360381019061018b9190610ea0565b610258565b005b6101ac60048036038101906101a79190610d97565b610266565b005b600063150b7a0260e01b9050949350505050565b6101ca610b8d565b6101d483836102ea565b905092915050565b6101e682826103bf565b5050565b6000600260009054906101000a900460ff16905090565b61020b84846103bf565b61021582826104a8565b50505050565b610223610591565b61022d600061060f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61026282826104a8565b5050565b61026e610591565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d59061117f565b60405180910390fd5b6102e78161060f565b50565b6102f2610b8d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015481525050905092915050565b80518251146103fa576040517f87dd190900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156104a357610490838281518110610442577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151838381518110610483577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516106d3565b808061049b906113a8565b9150506103fd565b505050565b80518251146104e3576040517f87dd190900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561058c5761057983828151811061052b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015183838151811061056c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015161093b565b8080610584906113a8565b9150506104e6565b505050565b610599610b3b565b73ffffffffffffffffffffffffffffffffffffffff166105b761022f565b73ffffffffffffffffffffffffffffffffffffffff161461060d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610604906111bf565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60026001541415610719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610710906111df565b60405180910390fd5b6002600181905550610729610b43565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610779919061121a565b60206040518083038186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c99190610dc0565b73ffffffffffffffffffffffffffffffffffffffff1614610816576040517f09702e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160010181905550600081600201819055508273ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b81526004016108fd93929190611112565b600060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b5050505050600180819055505050565b60026001541415610981576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610978906111df565b60405180910390fd5b6002600181905550610991610b43565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000209050600081600101541415610a24576040517fea93b40500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aad576040517fc4bbb55e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020181905550600081600101819055508273ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b8152600401610afd93929190611112565b600060405180830381600087803b158015610b1757600080fd5b505af1158015610b2b573d6000803e3d6000fd5b5050505050600180819055505050565b600033905090565b610b4b6101ea565b15610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b829061119f565b60405180910390fd5b565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b6000610bd7610bd28461125a565b611235565b90508083825260208201905082856020860282011115610bf657600080fd5b60005b85811015610c265781610c0c8882610cda565b845260208401935060208301925050600181019050610bf9565b5050509392505050565b6000610c43610c3e84611286565b611235565b90508083825260208201905082856020860282011115610c6257600080fd5b60005b85811015610c925781610c788882610d82565b845260208401935060208301925050600181019050610c65565b5050509392505050565b6000610caf610caa846112b2565b611235565b905082815260208101848484011115610cc757600080fd5b610cd2848285611368565b509392505050565b600081359050610ce98161152a565b92915050565b600081519050610cfe8161152a565b92915050565b600082601f830112610d1557600080fd5b8135610d25848260208601610bc4565b91505092915050565b600082601f830112610d3f57600080fd5b8135610d4f848260208601610c30565b91505092915050565b600082601f830112610d6957600080fd5b8135610d79848260208601610c9c565b91505092915050565b600081359050610d9181611541565b92915050565b600060208284031215610da957600080fd5b6000610db784828501610cda565b91505092915050565b600060208284031215610dd257600080fd5b6000610de084828501610cef565b91505092915050565b60008060008060808587031215610dff57600080fd5b6000610e0d87828801610cda565b9450506020610e1e87828801610cda565b9350506040610e2f87828801610d82565b925050606085013567ffffffffffffffff811115610e4c57600080fd5b610e5887828801610d58565b91505092959194509250565b60008060408385031215610e7757600080fd5b6000610e8585828601610cda565b9250506020610e9685828601610d82565b9150509250929050565b60008060408385031215610eb357600080fd5b600083013567ffffffffffffffff811115610ecd57600080fd5b610ed985828601610d04565b925050602083013567ffffffffffffffff811115610ef657600080fd5b610f0285828601610d2e565b9150509250929050565b60008060008060808587031215610f2257600080fd5b600085013567ffffffffffffffff811115610f3c57600080fd5b610f4887828801610d04565b945050602085013567ffffffffffffffff811115610f6557600080fd5b610f7187828801610d2e565b935050604085013567ffffffffffffffff811115610f8e57600080fd5b610f9a87828801610d04565b925050606085013567ffffffffffffffff811115610fb757600080fd5b610fc387828801610d2e565b91505092959194509250565b610fd8816112f4565b82525050565b610fe7816112f4565b82525050565b610ff681611306565b82525050565b61100581611312565b82525050565b60006110186026836112e3565b915061102382611460565b604082019050919050565b600061103b6010836112e3565b9150611046826114af565b602082019050919050565b600061105e6020836112e3565b9150611069826114d8565b602082019050919050565b6000611081601f836112e3565b915061108c82611501565b602082019050919050565b6060820160008201516110ad6000850182610fcf565b5060208201516110c060208501826110d9565b5060408201516110d360408501826110d9565b50505050565b6110e28161135e565b82525050565b6110f18161135e565b82525050565b600060208201905061110c6000830184610fde565b92915050565b60006060820190506111276000830186610fde565b6111346020830185610fde565b61114160408301846110e8565b949350505050565b600060208201905061115e6000830184610fed565b92915050565b60006020820190506111796000830184610ffc565b92915050565b600060208201905081810360008301526111988161100b565b9050919050565b600060208201905081810360008301526111b88161102e565b9050919050565b600060208201905081810360008301526111d881611051565b9050919050565b600060208201905081810360008301526111f881611074565b9050919050565b60006060820190506112146000830184611097565b92915050565b600060208201905061122f60008301846110e8565b92915050565b600061123f611250565b905061124b8282611377565b919050565b6000604051905090565b600067ffffffffffffffff82111561127557611274611420565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156112a1576112a0611420565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156112cd576112cc611420565b5b6112d68261144f565b9050602081019050919050565b600082825260208201905092915050565b60006112ff8261133e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b6113808261144f565b810181811067ffffffffffffffff8211171561139f5761139e611420565b5b80604052505050565b60006113b38261135e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156113e6576113e56113f1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611533816112f4565b811461153e57600080fd5b50565b61154a8161135e565b811461155557600080fd5b5056fea2646970667358221220f46a850bcc64d1341366eaf71def420a7442637879d6faee4d3350eab1f396a764736f6c63430008040033
Deployed Bytecode Sourcemap
22325:2118:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15443:207;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24251:187;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22652:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4971:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23624:360;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2618:103;;;:::i;:::-;;1970:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23077:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2876:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15443:207;15586:6;15612:30;;;15605:37;;15443:207;;;;;;:::o;24251:187::-;24339:30;;:::i;:::-;24395:32;24409:9;24419:7;24395:13;:32::i;:::-;24381:46;;24251:187;;;;:::o;22652:147::-;22757:33;22770:10;22781:8;22757:12;:33::i;:::-;22652:147;;:::o;4971:86::-;5018:4;5042:7;;;;;;;;;;;5035:14;;4971:86;:::o;23624:360::-;23871:43;23884:15;23900:13;23871:12;:43::i;:::-;23926:49;23941:17;23959:15;23926:14;:49::i;:::-;23624:360;;;;:::o;2618:103::-;1856:13;:11;:13::i;:::-;2683:30:::1;2710:1;2683:18;:30::i;:::-;2618:103::o:0;1970:87::-;2016:7;2043:6;;;;;;;;;;;2036:13;;1970:87;:::o;23077:152::-;23184:35;23199:10;23210:8;23184:14;:35::i;:::-;23077:152;;:::o;2876:201::-;1856:13;:11;:13::i;:::-;2985:1:::1;2965:22;;:8;:22;;;;2957:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3041:28;3060:8;3041:18;:28::i;:::-;2876:201:::0;:::o;21943:178::-;22023:30;;:::i;:::-;22079:12;:23;22092:9;22079:23;;;;;;;;;;;;;;;:32;22103:7;22079:32;;;;;;;;;;;22065:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21943:178;;;;:::o;19230:323::-;19351:8;:15;19330:10;:17;:36;19327:99;;19389:25;;;;;;;;;;;;;;19327:99;19441:6;19436:110;19457:10;:17;19453:1;:21;19436:110;;;19495:39;19507:10;19518:1;19507:13;;;;;;;;;;;;;;;;;;;;;;19522:8;19531:1;19522:11;;;;;;;;;;;;;;;;;;;;;;19495;:39::i;:::-;19476:3;;;;;:::i;:::-;;;;19436:110;;;;19230:323;;:::o;20640:327::-;20763:8;:15;20742:10;:17;:36;20739:99;;20801:25;;;;;;;;;;;;;;20739:99;20853:6;20848:112;20869:10;:17;20865:1;:21;20848:112;;;20907:41;20921:10;20932:1;20921:13;;;;;;;;;;;;;;;;;;;;;;20936:8;20945:1;20936:11;;;;;;;;;;;;;;;;;;;;;;20907:13;:41::i;:::-;20888:3;;;;;:::i;:::-;;;;20848:112;;;;20640:327;;:::o;2135:132::-;2210:12;:10;:12::i;:::-;2199:23;;:7;:5;:7::i;:::-;:23;;;2191:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2135:132::o;3237:191::-;3311:16;3330:6;;;;;;;;;;;3311:25;;3356:8;3347:6;;:17;;;;;;;;;;;;;;;;;;3411:8;3380:40;;3401:8;3380:40;;;;;;;;;;;;3237:191;;:::o;19804:640::-;7629:1;8227:7;;:19;;8219:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7629:1;8360:7;:18;;;;4576:19:::1;:17;:19::i;:::-;20081:10:::2;20042:49;;20050:9;20042:26;;;20069:7;20042:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;20039:105;;20114:18;;;;;;;;;;;;;;20039:105;20154:31;20188:12;:23;20201:9;20188:23;;;;;;;;;;;;;;;:32;20212:7;20188:32;;;;;;;;;;;20154:66;;20252:10;20231:11;:18;;;:31;;;;;;;;;;;;;;;;;;20298:15;20273:11;:22;;:40;;;;20351:1;20324:11;:24;;:28;;;;20373:9;20365:35;;;20401:10;20421:4;20428:7;20365:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4606:1;7585::::0;8539:7;:22;;;;19804:640;;:::o;21225:555::-;7629:1;8227:7;;:19;;8219:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7629:1;8360:7;:18;;;;4576:19:::1;:17;:19::i;:::-;21330:31:::2;21364:12;:23;21377:9;21364:23;;;;;;;;;;;;;;;:32;21388:7;21364:32;;;;;;;;;;;21330:66;;21438:1;21412:11;:22;;;:27;21409:85;;;21462:20;;;;;;;;;;;;;;21409:85;21531:10;21509:32;;:11;:18;;;;;;;;;;;;:32;;;21506:90;;21564:19;;;;;;;;;;;;;;21506:90;21635:15;21608:11;:24;;:42;;;;21686:1;21661:11;:22;;:26;;;;21708:9;21700:35;;;21744:4;21751:10;21764:7;21700:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4606:1;7585::::0;8539:7;:22;;;;21225:555;;:::o;654:98::-;707:7;734:10;727:17;;654:98;:::o;5130:108::-;5201:8;:6;:8::i;:::-;5200:9;5192:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5130:108::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;702:655::-;798:5;823:81;839:64;896:6;839:64;:::i;:::-;823:81;:::i;:::-;814:90;;924:5;953:6;946:5;939:21;987:4;980:5;976:16;969:23;;1013:6;1063:3;1055:4;1047:6;1043:17;1038:3;1034:27;1031:36;1028:2;;;1092:1;1089;1082:12;1028:2;1128:1;1113:238;1138:6;1135:1;1132:13;1113:238;;;1206:3;1235:37;1268:3;1256:10;1235:37;:::i;:::-;1230:3;1223:50;1302:4;1297:3;1293:14;1286:21;;1336:4;1331:3;1327:14;1320:21;;1173:178;1160:1;1157;1153:9;1148:14;;1113:238;;;1117:14;804:553;;;;;;;:::o;1363:343::-;1440:5;1465:65;1481:48;1522:6;1481:48;:::i;:::-;1465:65;:::i;:::-;1456:74;;1553:6;1546:5;1539:21;1591:4;1584:5;1580:16;1629:3;1620:6;1615:3;1611:16;1608:25;1605:2;;;1646:1;1643;1636:12;1605:2;1659:41;1693:6;1688:3;1683;1659:41;:::i;:::-;1446:260;;;;;;:::o;1712:139::-;1758:5;1796:6;1783:20;1774:29;;1812:33;1839:5;1812:33;:::i;:::-;1764:87;;;;:::o;1857:143::-;1914:5;1945:6;1939:13;1930:22;;1961:33;1988:5;1961:33;:::i;:::-;1920:80;;;;:::o;2023:303::-;2094:5;2143:3;2136:4;2128:6;2124:17;2120:27;2110:2;;2161:1;2158;2151:12;2110:2;2201:6;2188:20;2226:94;2316:3;2308:6;2301:4;2293:6;2289:17;2226:94;:::i;:::-;2217:103;;2100:226;;;;;:::o;2349:303::-;2420:5;2469:3;2462:4;2454:6;2450:17;2446:27;2436:2;;2487:1;2484;2477:12;2436:2;2527:6;2514:20;2552:94;2642:3;2634:6;2627:4;2619:6;2615:17;2552:94;:::i;:::-;2543:103;;2426:226;;;;;:::o;2671:271::-;2726:5;2775:3;2768:4;2760:6;2756:17;2752:27;2742:2;;2793:1;2790;2783:12;2742:2;2833:6;2820:20;2858:78;2932:3;2924:6;2917:4;2909:6;2905:17;2858:78;:::i;:::-;2849:87;;2732:210;;;;;:::o;2948:139::-;2994:5;3032:6;3019:20;3010:29;;3048:33;3075:5;3048:33;:::i;:::-;3000:87;;;;:::o;3093:262::-;3152:6;3201:2;3189:9;3180:7;3176:23;3172:32;3169:2;;;3217:1;3214;3207:12;3169:2;3260:1;3285:53;3330:7;3321:6;3310:9;3306:22;3285:53;:::i;:::-;3275:63;;3231:117;3159:196;;;;:::o;3361:284::-;3431:6;3480:2;3468:9;3459:7;3455:23;3451:32;3448:2;;;3496:1;3493;3486:12;3448:2;3539:1;3564:64;3620:7;3611:6;3600:9;3596:22;3564:64;:::i;:::-;3554:74;;3510:128;3438:207;;;;:::o;3651:809::-;3746:6;3754;3762;3770;3819:3;3807:9;3798:7;3794:23;3790:33;3787:2;;;3836:1;3833;3826:12;3787:2;3879:1;3904:53;3949:7;3940:6;3929:9;3925:22;3904:53;:::i;:::-;3894:63;;3850:117;4006:2;4032:53;4077:7;4068:6;4057:9;4053:22;4032:53;:::i;:::-;4022:63;;3977:118;4134:2;4160:53;4205:7;4196:6;4185:9;4181:22;4160:53;:::i;:::-;4150:63;;4105:118;4290:2;4279:9;4275:18;4262:32;4321:18;4313:6;4310:30;4307:2;;;4353:1;4350;4343:12;4307:2;4381:62;4435:7;4426:6;4415:9;4411:22;4381:62;:::i;:::-;4371:72;;4233:220;3777:683;;;;;;;:::o;4466:407::-;4534:6;4542;4591:2;4579:9;4570:7;4566:23;4562:32;4559:2;;;4607:1;4604;4597:12;4559:2;4650:1;4675:53;4720:7;4711:6;4700:9;4696:22;4675:53;:::i;:::-;4665:63;;4621:117;4777:2;4803:53;4848:7;4839:6;4828:9;4824:22;4803:53;:::i;:::-;4793:63;;4748:118;4549:324;;;;;:::o;4879:693::-;4997:6;5005;5054:2;5042:9;5033:7;5029:23;5025:32;5022:2;;;5070:1;5067;5060:12;5022:2;5141:1;5130:9;5126:17;5113:31;5171:18;5163:6;5160:30;5157:2;;;5203:1;5200;5193:12;5157:2;5231:78;5301:7;5292:6;5281:9;5277:22;5231:78;:::i;:::-;5221:88;;5084:235;5386:2;5375:9;5371:18;5358:32;5417:18;5409:6;5406:30;5403:2;;;5449:1;5446;5439:12;5403:2;5477:78;5547:7;5538:6;5527:9;5523:22;5477:78;:::i;:::-;5467:88;;5329:236;5012:560;;;;;:::o;5578:1270::-;5764:6;5772;5780;5788;5837:3;5825:9;5816:7;5812:23;5808:33;5805:2;;;5854:1;5851;5844:12;5805:2;5925:1;5914:9;5910:17;5897:31;5955:18;5947:6;5944:30;5941:2;;;5987:1;5984;5977:12;5941:2;6015:78;6085:7;6076:6;6065:9;6061:22;6015:78;:::i;:::-;6005:88;;5868:235;6170:2;6159:9;6155:18;6142:32;6201:18;6193:6;6190:30;6187:2;;;6233:1;6230;6223:12;6187:2;6261:78;6331:7;6322:6;6311:9;6307:22;6261:78;:::i;:::-;6251:88;;6113:236;6416:2;6405:9;6401:18;6388:32;6447:18;6439:6;6436:30;6433:2;;;6479:1;6476;6469:12;6433:2;6507:78;6577:7;6568:6;6557:9;6553:22;6507:78;:::i;:::-;6497:88;;6359:236;6662:2;6651:9;6647:18;6634:32;6693:18;6685:6;6682:30;6679:2;;;6725:1;6722;6715:12;6679:2;6753:78;6823:7;6814:6;6803:9;6799:22;6753:78;:::i;:::-;6743:88;;6605:236;5795:1053;;;;;;;:::o;6854:108::-;6931:24;6949:5;6931:24;:::i;:::-;6926:3;6919:37;6909:53;;:::o;6968:118::-;7055:24;7073:5;7055:24;:::i;:::-;7050:3;7043:37;7033:53;;:::o;7092:109::-;7173:21;7188:5;7173:21;:::i;:::-;7168:3;7161:34;7151:50;;:::o;7207:115::-;7292:23;7309:5;7292:23;:::i;:::-;7287:3;7280:36;7270:52;;:::o;7328:366::-;7470:3;7491:67;7555:2;7550:3;7491:67;:::i;:::-;7484:74;;7567:93;7656:3;7567:93;:::i;:::-;7685:2;7680:3;7676:12;7669:19;;7474:220;;;:::o;7700:366::-;7842:3;7863:67;7927:2;7922:3;7863:67;:::i;:::-;7856:74;;7939:93;8028:3;7939:93;:::i;:::-;8057:2;8052:3;8048:12;8041:19;;7846:220;;;:::o;8072:366::-;8214:3;8235:67;8299:2;8294:3;8235:67;:::i;:::-;8228:74;;8311:93;8400:3;8311:93;:::i;:::-;8429:2;8424:3;8420:12;8413:19;;8218:220;;;:::o;8444:366::-;8586:3;8607:67;8671:2;8666:3;8607:67;:::i;:::-;8600:74;;8683:93;8772:3;8683:93;:::i;:::-;8801:2;8796:3;8792:12;8785:19;;8590:220;;;:::o;8864:703::-;9017:4;9012:3;9008:14;9106:4;9099:5;9095:16;9089:23;9125:63;9182:4;9177:3;9173:14;9159:12;9125:63;:::i;:::-;9032:166;9286:4;9279:5;9275:16;9269:23;9305:63;9362:4;9357:3;9353:14;9339:12;9305:63;:::i;:::-;9208:170;9468:4;9461:5;9457:16;9451:23;9487:63;9544:4;9539:3;9535:14;9521:12;9487:63;:::i;:::-;9388:172;8986:581;;;:::o;9573:108::-;9650:24;9668:5;9650:24;:::i;:::-;9645:3;9638:37;9628:53;;:::o;9687:118::-;9774:24;9792:5;9774:24;:::i;:::-;9769:3;9762:37;9752:53;;:::o;9811:222::-;9904:4;9942:2;9931:9;9927:18;9919:26;;9955:71;10023:1;10012:9;10008:17;9999:6;9955:71;:::i;:::-;9909:124;;;;:::o;10039:442::-;10188:4;10226:2;10215:9;10211:18;10203:26;;10239:71;10307:1;10296:9;10292:17;10283:6;10239:71;:::i;:::-;10320:72;10388:2;10377:9;10373:18;10364:6;10320:72;:::i;:::-;10402;10470:2;10459:9;10455:18;10446:6;10402:72;:::i;:::-;10193:288;;;;;;:::o;10487:210::-;10574:4;10612:2;10601:9;10597:18;10589:26;;10625:65;10687:1;10676:9;10672:17;10663:6;10625:65;:::i;:::-;10579:118;;;;:::o;10703:218::-;10794:4;10832:2;10821:9;10817:18;10809:26;;10845:69;10911:1;10900:9;10896:17;10887:6;10845:69;:::i;:::-;10799:122;;;;:::o;10927:419::-;11093:4;11131:2;11120:9;11116:18;11108:26;;11180:9;11174:4;11170:20;11166:1;11155:9;11151:17;11144:47;11208:131;11334:4;11208:131;:::i;:::-;11200:139;;11098:248;;;:::o;11352:419::-;11518:4;11556:2;11545:9;11541:18;11533:26;;11605:9;11599:4;11595:20;11591:1;11580:9;11576:17;11569:47;11633:131;11759:4;11633:131;:::i;:::-;11625:139;;11523:248;;;:::o;11777:419::-;11943:4;11981:2;11970:9;11966:18;11958:26;;12030:9;12024:4;12020:20;12016:1;12005:9;12001:17;11994:47;12058:131;12184:4;12058:131;:::i;:::-;12050:139;;11948:248;;;:::o;12202:419::-;12368:4;12406:2;12395:9;12391:18;12383:26;;12455:9;12449:4;12445:20;12441:1;12430:9;12426:17;12419:47;12483:131;12609:4;12483:131;:::i;:::-;12475:139;;12373:248;;;:::o;12627:334::-;12776:4;12814:2;12803:9;12799:18;12791:26;;12827:127;12951:1;12940:9;12936:17;12927:6;12827:127;:::i;:::-;12781:180;;;;:::o;12967:222::-;13060:4;13098:2;13087:9;13083:18;13075:26;;13111:71;13179:1;13168:9;13164:17;13155:6;13111:71;:::i;:::-;13065:124;;;;:::o;13195:129::-;13229:6;13256:20;;:::i;:::-;13246:30;;13285:33;13313:4;13305:6;13285:33;:::i;:::-;13236:88;;;:::o;13330:75::-;13363:6;13396:2;13390:9;13380:19;;13370:35;:::o;13411:311::-;13488:4;13578:18;13570:6;13567:30;13564:2;;;13600:18;;:::i;:::-;13564:2;13650:4;13642:6;13638:17;13630:25;;13710:4;13704;13700:15;13692:23;;13493:229;;;:::o;13728:311::-;13805:4;13895:18;13887:6;13884:30;13881:2;;;13917:18;;:::i;:::-;13881:2;13967:4;13959:6;13955:17;13947:25;;14027:4;14021;14017:15;14009:23;;13810:229;;;:::o;14045:307::-;14106:4;14196:18;14188:6;14185:30;14182:2;;;14218:18;;:::i;:::-;14182:2;14256:29;14278:6;14256:29;:::i;:::-;14248:37;;14340:4;14334;14330:15;14322:23;;14111:241;;;:::o;14358:169::-;14442:11;14476:6;14471:3;14464:19;14516:4;14511:3;14507:14;14492:29;;14454:73;;;;:::o;14533:96::-;14570:7;14599:24;14617:5;14599:24;:::i;:::-;14588:35;;14578:51;;;:::o;14635:90::-;14669:7;14712:5;14705:13;14698:21;14687:32;;14677:48;;;:::o;14731:149::-;14767:7;14807:66;14800:5;14796:78;14785:89;;14775:105;;;:::o;14886:126::-;14923:7;14963:42;14956:5;14952:54;14941:65;;14931:81;;;:::o;15018:77::-;15055:7;15084:5;15073:16;;15063:32;;;:::o;15101:154::-;15185:6;15180:3;15175;15162:30;15247:1;15238:6;15233:3;15229:16;15222:27;15152:103;;;:::o;15261:281::-;15344:27;15366:4;15344:27;:::i;:::-;15336:6;15332:40;15474:6;15462:10;15459:22;15438:18;15426:10;15423:34;15420:62;15417:2;;;15485:18;;:::i;:::-;15417:2;15525:10;15521:2;15514:22;15304:238;;;:::o;15548:233::-;15587:3;15610:24;15628:5;15610:24;:::i;:::-;15601:33;;15656:66;15649:5;15646:77;15643:2;;;15726:18;;:::i;:::-;15643:2;15773:1;15766:5;15762:13;15755:20;;15591:190;;;:::o;15787:180::-;15835:77;15832:1;15825:88;15932:4;15929:1;15922:15;15956:4;15953:1;15946:15;15973:180;16021:77;16018:1;16011:88;16118:4;16115:1;16108:15;16142:4;16139:1;16132:15;16159:102;16200:6;16251:2;16247:7;16242:2;16235:5;16231:14;16227:28;16217:38;;16207:54;;;:::o;16267:225::-;16407:34;16403:1;16395:6;16391:14;16384:58;16476:8;16471:2;16463:6;16459:15;16452:33;16373:119;:::o;16498:166::-;16638:18;16634:1;16626:6;16622:14;16615:42;16604:60;:::o;16670:182::-;16810:34;16806:1;16798:6;16794:14;16787:58;16776:76;:::o;16858:181::-;16998:33;16994:1;16986:6;16982:14;16975:57;16964:75;:::o;17045:122::-;17118:24;17136:5;17118:24;:::i;:::-;17111:5;17108:35;17098:2;;17157:1;17154;17147:12;17098:2;17088:79;:::o;17173:122::-;17246:24;17264:5;17246:24;:::i;:::-;17239:5;17236:35;17226:2;;17285:1;17282;17275:12;17226:2;17216:79;:::o
Swarm Source
ipfs://f46a850bcc64d1341366eaf71def420a7442637879d6faee4d3350eab1f396a7
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.