More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 87 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Multi S... | 17633012 | 553 days ago | IN | 0 ETH | 0.00872707 | ||||
Withdraw Multi S... | 17338359 | 594 days ago | IN | 0 ETH | 0.00232348 | ||||
Transfer | 17338341 | 594 days ago | IN | 0.013 ETH | 0.00066015 | ||||
Transfer | 17338334 | 594 days ago | IN | 0.013 ETH | 0.00071186 | ||||
Create Multi Sta... | 17288548 | 601 days ago | IN | 0 ETH | 0.00538062 | ||||
Withdraw Multi S... | 17282574 | 602 days ago | IN | 0 ETH | 0.00556647 | ||||
Withdraw Multi S... | 17282568 | 602 days ago | IN | 0 ETH | 0.00506408 | ||||
Withdraw Multi S... | 17185564 | 616 days ago | IN | 0 ETH | 0.00373275 | ||||
Withdraw Multi S... | 16894944 | 657 days ago | IN | 0 ETH | 0.0354321 | ||||
Withdraw Multi S... | 16894905 | 657 days ago | IN | 0 ETH | 0.00604015 | ||||
Withdraw Multi S... | 16894867 | 657 days ago | IN | 0 ETH | 0.00552763 | ||||
Withdraw Multi S... | 16888390 | 658 days ago | IN | 0 ETH | 0.00165688 | ||||
Withdraw Multi S... | 16888012 | 658 days ago | IN | 0 ETH | 0.00084144 | ||||
Withdraw Multi S... | 16888002 | 658 days ago | IN | 0 ETH | 0.00479151 | ||||
Withdraw Multi S... | 16405351 | 725 days ago | IN | 0 ETH | 0.00138694 | ||||
Withdraw Multi S... | 16395780 | 727 days ago | IN | 0 ETH | 0.00143219 | ||||
Withdraw Multi S... | 16358443 | 732 days ago | IN | 0 ETH | 0.00090886 | ||||
Create Multi Sta... | 16358186 | 732 days ago | IN | 0 ETH | 0.00143311 | ||||
Create Multi Sta... | 16358092 | 732 days ago | IN | 0 ETH | 0.00129816 | ||||
Create Multi Sta... | 16346562 | 734 days ago | IN | 0 ETH | 0.00134575 | ||||
Create Multi Sta... | 16328041 | 736 days ago | IN | 0 ETH | 0.0015985 | ||||
Create Multi Sta... | 16138097 | 763 days ago | IN | 0 ETH | 0.00201802 | ||||
Withdraw Multi S... | 16120679 | 765 days ago | IN | 0 ETH | 0.00178136 | ||||
Create Multi Sta... | 16120250 | 765 days ago | IN | 0 ETH | 0.00264415 | ||||
Create Multi Sta... | 16093641 | 769 days ago | IN | 0 ETH | 0.00111005 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x28d57130...4B042fC7F The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
OmniStake
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-21 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IERC721 { /** * @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 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); } contract OmniStake { // fired when NFT stake created event StakeCreated(address staker, address asset, uint256[] tokenIds); // fired when NFT stake cancelled event StakeWithdrawn(address staker, address asset, uint256[] tokenIds); // fired when NFT stake created event MultiStakeCreated( address staker, address[] asset, uint256[][] tokenIds ); // fired when NFT stake cancelled event MultiStakeWithdrawn( address staker, address[] asset, uint256[][] tokenIds ); /** * NFT stakes map * key: keccak256(abi.encodePacked(stacker,asset,tokenId)) * value: true if stake exists */ mapping(bytes32 => bool) private Stake; /** * @dev calculate stakeMap key */ function getStakeKey( address staker, address asset, uint256 tokenId ) public pure returns (bytes32) { return keccak256(abi.encodePacked(staker, asset, tokenId)); } /** * @dev true if stake exists * @param stakeKey keccak256(abi.encodePacked(stacker,asset,tokenId)) */ function StakeExists(bytes32 stakeKey) external view returns (bool) { return Stake[stakeKey]; } /** * @dev create a new NFT stake * @param asset NFT address * @param tokenIds tokenIds of the NFT * * Emits a {StakeCreated} event. */ function createStake(address asset, uint256[] calldata tokenIds) public { require(tokenIds.length > 0, "Stake: No tokens provided"); address sender = msg.sender; IERC721 ERC721 = IERC721(asset); require( ERC721.isApprovedForAll(sender, address(this)), "Stake: Not approved for all" ); for (uint256 i = 0; i < tokenIds.length; ) { uint256 tokenId = tokenIds[i]; try ERC721.transferFrom(sender, address(this), tokenId) { Stake[getStakeKey(sender, asset, tokenId)] = true; } catch { revert("Stake: Transfer failed"); } unchecked { i++; } } emit StakeCreated(sender, asset, tokenIds); } /** * @dev create a new NFT stake * @param asset NFT address * @param tokenIds tokenIds of the NFT * * Emits a {MultiStakeCreated} event. */ function createMultiStake( address[] calldata asset, uint256[][] calldata tokenIds ) public { require(tokenIds.length > 0, "Stake: No tokens provided"); require(asset.length == tokenIds.length, "Stake: Invalid input"); address sender = msg.sender; for (uint256 i = 0; i < asset.length; ) { IERC721 ERC721 = IERC721(asset[i]); uint256[] memory _tokenIds = tokenIds[i]; require(_tokenIds.length > 0, "Stake: No tokens provided"); require( ERC721.isApprovedForAll(sender, address(this)), "Stake: Not approved for all" ); for (uint256 j = 0; j < _tokenIds.length; ) { uint256 tokenId = _tokenIds[j]; try ERC721.transferFrom(sender, address(this), tokenId) { Stake[getStakeKey(sender, asset[i], tokenId)] = true; } catch { revert("Stake: Transfer failed"); } unchecked { j++; } } unchecked { i++; } } emit MultiStakeCreated(sender, asset, tokenIds); } /** * @dev withdraw NFT stake * @param asset NFT address * @param tokenIds tokenIds of the NFT * * Emits a {StakeWithdrawn} event. */ function withdrawStake(address asset, uint256[] calldata tokenIds) public { require(tokenIds.length > 0, "Stake: No tokens provided"); address sender = msg.sender; IERC721 ERC721 = IERC721(asset); for (uint256 i = 0; i < tokenIds.length; ) { uint256 _tokenId = tokenIds[i]; bytes32 key = getStakeKey(sender, asset, _tokenId); require(Stake[key], "Stake: Not staked"); try ERC721.transferFrom(address(this), sender, _tokenId) { delete Stake[key]; } catch { revert("Stake: Transfer failed"); } unchecked { i++; } } emit StakeWithdrawn(sender, asset, tokenIds); } /** * @dev withdraw NFT stake * @param asset NFT address * @param tokenIds tokenIds of the NFT * * Emits a {MultiStakeWithdrawn} event. */ function withdrawMultiStake( address[] calldata asset, uint256[][] calldata tokenIds ) public { require(tokenIds.length > 0, "Stake: No tokens provided"); require(asset.length == tokenIds.length, "Stake: Invalid input"); address sender = msg.sender; for (uint256 i = 0; i < asset.length; ) { IERC721 ERC721 = IERC721(asset[i]); uint256[] memory _tokenIds = tokenIds[i]; require(_tokenIds.length > 0, "Stake: No tokens provided"); for (uint256 j = 0; j < _tokenIds.length; ) { uint256 _tokenId = _tokenIds[j]; bytes32 key = getStakeKey(sender, asset[i], _tokenId); require(Stake[key], "Stake: Not staked"); try ERC721.transferFrom(address(this), sender, _tokenId) { delete Stake[key]; } catch { revert("Stake: Transfer failed"); } unchecked { j++; } } unchecked { i++; } } emit MultiStakeWithdrawn(sender, asset, tokenIds); } /** * @dev stake withdraw at the same time * @param stakeAsset stake NFT address * @param stakeTokenIds stake tokenIds of the NFT * @param withdrawAsset withdraw NFT address * @param withdrawTokenIds withdraw tokenIds of the NFT * Emits {StakeWithdrawn} and {StakeCreated} event. */ function createStakeAndWithdraw( address stakeAsset, uint256[] calldata stakeTokenIds, address withdrawAsset, uint256[] calldata withdrawTokenIds ) public { withdrawStake(withdrawAsset, withdrawTokenIds); createStake(stakeAsset, stakeTokenIds); } /** * @dev stake withdraw at the same time * @param stakeAsset stake NFT address * @param stakeTokenIds stake tokenIds of the NFT * @param withdrawAsset withdraw NFT address * @param withdrawTokenIds withdraw tokenIds of the NFT * Emits {MultiStakeWithdrawn} and {MultiStakeCreated} event. */ function createMultiStakeAndWithdraw( address[] calldata stakeAsset, uint256[][] calldata stakeTokenIds, address[] calldata withdrawAsset, uint256[][] calldata withdrawTokenIds ) public { withdrawMultiStake(withdrawAsset, withdrawTokenIds); createMultiStake(stakeAsset, stakeTokenIds); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address[]","name":"asset","type":"address[]"},{"indexed":false,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"MultiStakeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address[]","name":"asset","type":"address[]"},{"indexed":false,"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"MultiStakeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"StakeCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"StakeWithdrawn","type":"event"},{"inputs":[{"internalType":"bytes32","name":"stakeKey","type":"bytes32"}],"name":"StakeExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"asset","type":"address[]"},{"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"createMultiStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"stakeAsset","type":"address[]"},{"internalType":"uint256[][]","name":"stakeTokenIds","type":"uint256[][]"},{"internalType":"address[]","name":"withdrawAsset","type":"address[]"},{"internalType":"uint256[][]","name":"withdrawTokenIds","type":"uint256[][]"}],"name":"createMultiStakeAndWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"createStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakeAsset","type":"address"},{"internalType":"uint256[]","name":"stakeTokenIds","type":"uint256[]"},{"internalType":"address","name":"withdrawAsset","type":"address"},{"internalType":"uint256[]","name":"withdrawTokenIds","type":"uint256[]"}],"name":"createStakeAndWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getStakeKey","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"asset","type":"address[]"},{"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"withdrawMultiStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639117d30e1161005b5780639117d30e1461015b578063a81b7cb51461016e578063d55d092314610181578063e39efc6c1461019457600080fd5b806338e7b4551461008d578063430f3842146100a2578063493d2362146100b55780638bfa095a14610128575b600080fd5b6100a061009b366004610f5a565b6101a7565b005b6100a06100b0366004610fee565b6101c5565b6101156100c3366004611041565b6040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b6040519081526020015b60405180910390f35b61014b61013636600461107d565b60009081526020819052604090205460ff1690565b604051901515815260200161011f565b6100a0610169366004611096565b6104ac565b6100a061017c36600461115a565b6104ce565b6100a061018f366004610fee565b610870565b6100a06101a236600461115a565b610ab1565b6101b2838383610870565b6101bd8686866101c5565b505050505050565b806102175760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f76696465640000000000000060448201526064015b60405180910390fd5b6040517fe985e9c5000000000000000000000000000000000000000000000000000000008152336004820181905230602483015290849073ffffffffffffffffffffffffffffffffffffffff82169063e985e9c590604401602060405180830381865afa15801561028c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b091906111c6565b6102fc5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8381101561046757600085858381811061031b5761031b6111ef565b6040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff8881166004830152306024830152602090920293909301356044840181905293508516916323b872dd9150606401600060405180830381600087803b15801561038557600080fd5b505af1925050508015610396575060015b6103e25760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b600160008061043f878b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff1916911515919091179055506001016102ff565b507ff070f6fb17b358fded430ccc5fc22c7a2d44bd8e75683de84a7b7f2e6b72b7228286868660405161049d9493929190611269565b60405180910390a15050505050565b6104b8848484846104ce565b6104c488888888610ab1565b5050505050505050565b8061051b5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b82811461056a5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b8481101561083857600086868381811061058a5761058a6111ef565b905060200201602081019061059f91906112ad565b905060008585848181106105b5576105b56111ef565b90506020028101906105c791906112c8565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050825192935050506106495760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b60005b815181101561082d576000828281518110610669576106696111ef565b6020026020010151905060006106f3878c8c8981811061068b5761068b6111ef565b90506020020160208101906106a091906112ad565b846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166107545760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8881166024830152604482018490528616906323b872dd90606401600060405180830381600087803b1580156107b157600080fd5b505af19250505080156107c2575060015b61080e5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff191690555060010161064c565b50505060010161056e565b507fb91254996feab404491fb2088db7b7b1aefd1f59e6d1391f0add834684f60779818686868660405161049d959493929190611312565b806108bd5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b338360005b83811015610a7b5760008585838181106108de576108de6111ef565b90506020020135905060006109418589846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166109a25760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018490528516906323b872dd90606401600060405180830381600087803b1580156109ff57600080fd5b505af1925050508015610a10575060015b610a5c5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff19169055506001016108c2565b507f6e7923d30eccb408bdc077cf6fe71b5ddcbd125d5a036bfe7ea272577e7aac838286868660405161049d9493929190611269565b80610afe5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b828114610b4d5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b84811015610ead576000868683818110610b6d57610b6d6111ef565b9050602002016020810190610b8291906112ad565b90506000858584818110610b9857610b986111ef565b9050602002810190610baa91906112c8565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505082519293505050610c2c5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b6040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015230602483015283169063e985e9c590604401602060405180830381865afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906111c6565b610d0e5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8151811015610ea2576000828281518110610d2e57610d2e6111ef565b60209081029190910101516040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff888116600483015230602483015260448201839052919250908516906323b872dd90606401600060405180830381600087803b158015610d9a57600080fd5b505af1925050508015610dab575060015b610df75760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6001600080610e7a898e8e8b818110610e1257610e126111ef565b9050602002016020810190610e2791906112ad565b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff191691151591909117905550600101610d11565b505050600101610b51565b507fb96cd7bef32d835312572aba8a672445dc2ea748c715761d63bd7255dd0c88e9818686868660405161049d959493929190611312565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f0957600080fd5b919050565b60008083601f840112610f2057600080fd5b50813567ffffffffffffffff811115610f3857600080fd5b6020830191508360208260051b8501011115610f5357600080fd5b9250929050565b60008060008060008060808789031215610f7357600080fd5b610f7c87610ee5565b9550602087013567ffffffffffffffff80821115610f9957600080fd5b610fa58a838b01610f0e565b9097509550859150610fb960408a01610ee5565b94506060890135915080821115610fcf57600080fd5b50610fdc89828a01610f0e565b979a9699509497509295939492505050565b60008060006040848603121561100357600080fd5b61100c84610ee5565b9250602084013567ffffffffffffffff81111561102857600080fd5b61103486828701610f0e565b9497909650939450505050565b60008060006060848603121561105657600080fd5b61105f84610ee5565b925061106d60208501610ee5565b9150604084013590509250925092565b60006020828403121561108f57600080fd5b5035919050565b6000806000806000806000806080898b0312156110b257600080fd5b883567ffffffffffffffff808211156110ca57600080fd5b6110d68c838d01610f0e565b909a50985060208b01359150808211156110ef57600080fd5b6110fb8c838d01610f0e565b909850965060408b013591508082111561111457600080fd5b6111208c838d01610f0e565b909650945060608b013591508082111561113957600080fd5b506111468b828c01610f0e565b999c989b5096995094979396929594505050565b6000806000806040858703121561117057600080fd5b843567ffffffffffffffff8082111561118857600080fd5b61119488838901610f0e565b909650945060208701359150808211156111ad57600080fd5b506111ba87828801610f0e565b95989497509550505050565b6000602082840312156111d857600080fd5b815180151581146111e857600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561125057600080fd5b8260051b80836020870137939093016020019392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526112a360608301848661121e565b9695505050505050565b6000602082840312156112bf57600080fd5b6111e882610ee5565b6000808335601e198436030181126112df57600080fd5b83018035915067ffffffffffffffff8211156112fa57600080fd5b6020019150600581901b3603821315610f5357600080fd5b73ffffffffffffffffffffffffffffffffffffffff868116825260606020808401829052908301869052600091879160808501845b8981101561136c578361135986610ee5565b1682529382019390820190600101611347565b50858103604087015286815281810193506005925086831b810182018860005b8981101561141b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08484030187528135601e198c36030181126113cf57600080fd5b8b01858101903567ffffffffffffffff8111156113eb57600080fd5b80881b36038213156113fc57600080fd5b61140785828461121e565b98870198945050509084019060010161138c565b50909c9b50505050505050505050505056fea2646970667358221220e9255eba3d66d1a60c2a4682ae2999328ec1d57520c3b6add55d854496580d2564736f6c63430008110033
Deployed Bytecode Sourcemap
998:7448:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7434:310;;;;;;:::i;:::-;;:::i;:::-;;2461:818;;;;;;:::i;:::-;;:::i;1822:210::-;;;;;;:::i;:::-;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;;;;2509:25:1;;;2497:2;2482:18;1822:210:0;;;;;;;;2167:109;;;;;;:::i;:::-;2229:4;2253:15;;;;;;;;;;;;;;2167:109;;;;2895:14:1;;2888:22;2870:41;;2858:2;2843:18;2167:109:0;2730:187:1;8092:351:0;;;;;;:::i;:::-;;:::i;5879:1217::-;;;;;;:::i;:::-;;:::i;4915:776::-;;;;;;:::i;:::-;;:::i;3469:1263::-;;;;;;:::i;:::-;;:::i;7434:310::-;7641:46;7655:13;7670:16;;7641:13;:46::i;:::-;7698:38;7710:10;7722:13;;7698:11;:38::i;:::-;7434:310;;;;;;:::o;2461:818::-;2552:19;2544:57;;;;-1:-1:-1;;;2544:57:0;;5392:2:1;2544:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;2544:57:0;;;;;;;;;2714:46;;;;;2629:10;2714:46;;;5779:34:1;;;2754:4:0;5829:18:1;;;5822:43;2629:10:0;2675:5;;2714:23;;;;;;5691:18:1;;2714:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2692:123;;;;-1:-1:-1;;;2692:123:0;;6360:2:1;2692:123:0;;;6342:21:1;6399:2;6379:18;;;6372:30;6438:29;6418:18;;;6411:57;6485:18;;2692:123:0;6158:351:1;2692:123:0;2833:9;2828:389;2848:19;;;2828:389;;;2886:15;2904:8;;2913:1;2904:11;;;;;;;:::i;:::-;2934:51;;-1:-1:-1;;;2934:51:0;;:19;6984:15:1;;;2934:51:0;;;6966:34:1;2970:4:0;7016:18:1;;;7009:43;2904:11:0;;;;;;;;;7068:18:1;;;7061:34;;;2904:11:0;-1:-1:-1;2934:19:0;;;;;-1:-1:-1;6878:18:1;;2934:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2930:214;;3096:32;;-1:-1:-1;;;3096:32:0;;7308:2:1;3096:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;3096:32:0;7106:346:1;2930:214:0;3050:4;3005:5;:42;3011:35;3023:6;3031:5;3038:7;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;3011:35;3005:42;;;;;;;;;;;-1:-1:-1;3005:42:0;:49;;-1:-1:-1;;3005:49:0;;;;;;;;;;-1:-1:-1;;3187:3:0;2828:389;;;;3234:37;3247:6;3255:5;3262:8;;3234:37;;;;;;;;;:::i;:::-;;;;;;;;2533:746;;2461:818;;;:::o;8092:351::-;8330:51;8349:13;;8364:16;;8330:18;:51::i;:::-;8392:43;8409:10;;8421:13;;8392:16;:43::i;:::-;8092:351;;;;;;;;:::o;5879:1217::-;6015:19;6007:57;;;;-1:-1:-1;;;6007:57:0;;5392:2:1;6007:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;6007:57:0;5190:349:1;6007:57:0;6083:31;;;6075:64;;;;-1:-1:-1;;;6075:64:0;;8974:2:1;6075:64:0;;;8956:21:1;9013:2;8993:18;;;8986:30;9052:22;9032:18;;;9025:50;9092:18;;6075:64:0;8772:344:1;6075:64:0;6167:10;6150:14;6188:839;6208:16;;;6188:839;;;6243:14;6268:5;;6274:1;6268:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6243:34;;6292:26;6321:8;;6330:1;6321:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6292:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6355:16:0;;6292:40;;-1:-1:-1;;;6347:58:0;;;;-1:-1:-1;;;6347:58:0;;5392:2:1;6347:58:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;6347:58:0;5190:349:1;6347:58:0;6425:9;6420:534;6444:9;:16;6440:1;:20;6420:534;;;6483:16;6502:9;6512:1;6502:12;;;;;;;;:::i;:::-;;;;;;;6483:31;;6533:11;6547:39;6559:6;6567:5;;6573:1;6567:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6577;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;6547:39;6613:5;:10;;;;;;;;;;;6533:53;;-1:-1:-1;6613:10:0;;6605:40;;;;-1:-1:-1;;;6605:40:0;;10123:2:1;6605:40:0;;;10105:21:1;10162:2;10142:18;;;10135:30;10201:19;10181:18;;;10174:47;10238:18;;6605:40:0;9921:341:1;6605:40:0;6670:52;;-1:-1:-1;;;6670:52:0;;6698:4;6670:52;;;6966:34:1;6670:19:0;7036:15:1;;;7016:18;;;7009:43;7068:18;;;7061:34;;;6670:19:0;;;;;6878:18:1;;6670:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:199;;6813:32;;-1:-1:-1;;;6813:32:0;;7308:2:1;6813:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;6813:32:0;7106:346:1;6666:199:0;6753:5;:10;;;;;;;;;;6746:17;;-1:-1:-1;;6746:17:0;;;-1:-1:-1;;6916:3:0;6420:534;;;-1:-1:-1;;;6997:3:0;;6188:839;;;;7044:44;7064:6;7072:5;;7079:8;;7044:44;;;;;;;;;;:::i;4915:776::-;5008:19;5000:57;;;;-1:-1:-1;;;5000:57:0;;5392:2:1;5000:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;5000:57:0;5190:349:1;5000:57:0;5085:10;5131:5;5068:14;5148:481;5168:19;;;5148:481;;;5206:16;5225:8;;5234:1;5225:11;;;;;;;:::i;:::-;;;;;;;5206:30;;5251:11;5265:36;5277:6;5285:5;5292:8;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;5265:36;5324:5;:10;;;;;;;;;;;5251:50;;-1:-1:-1;5324:10:0;;5316:40;;;;-1:-1:-1;;;5316:40:0;;10123:2:1;5316:40:0;;;10105:21:1;10162:2;10142:18;;;10135:30;10201:19;10181:18;;;10174:47;10238:18;;5316:40:0;9921:341:1;5316:40:0;5377:52;;-1:-1:-1;;;5377:52:0;;5405:4;5377:52;;;6966:34:1;5377:19:0;7036:15:1;;;7016:18;;;7009:43;7068:18;;;7061:34;;;5377:19:0;;;;;6878:18:1;;5377:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5373:183;;5508:32;;-1:-1:-1;;;5508:32:0;;7308:2:1;5508:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;5508:32:0;7106:346:1;5373:183:0;5456:5;:10;;;;;;;;;;5449:17;;-1:-1:-1;;5449:17:0;;;-1:-1:-1;;5599:3:0;5148:481;;;;5644:39;5659:6;5667:5;5674:8;;5644:39;;;;;;;;;:::i;3469:1263::-;3603:19;3595:57;;;;-1:-1:-1;;;3595:57:0;;5392:2:1;3595:57:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;3595:57:0;5190:349:1;3595:57:0;3671:31;;;3663:64;;;;-1:-1:-1;;;3663:64:0;;8974:2:1;3663:64:0;;;8956:21:1;9013:2;8993:18;;;8986:30;9052:22;9032:18;;;9025:50;9092:18;;3663:64:0;8772:344:1;3663:64:0;3755:10;3738:14;3776:889;3796:16;;;3776:889;;;3831:14;3856:5;;3862:1;3856:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3831:34;;3880:26;3909:8;;3918:1;3909:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3880:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3943:16:0;;3880:40;;-1:-1:-1;;;3935:58:0;;;;-1:-1:-1;;;3935:58:0;;5392:2:1;3935:58:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:27;5450:18;;;5443:55;5515:18;;3935:58:0;5190:349:1;3935:58:0;4034:46;;;;;:23;5797:15:1;;;4034:46:0;;;5779:34:1;4074:4:0;5829:18:1;;;5822:43;4034:23:0;;;;;5691:18:1;;4034:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4008:135;;;;-1:-1:-1;;;4008:135:0;;6360:2:1;4008:135:0;;;6342:21:1;6399:2;6379:18;;;6372:30;6438:29;6418:18;;;6411:57;6485:18;;4008:135:0;6158:351:1;4008:135:0;4163:9;4158:434;4182:9;:16;4178:1;:20;4158:434;;;4221:15;4239:9;4249:1;4239:12;;;;;;;;:::i;:::-;;;;;;;;;;;4274:51;;-1:-1:-1;;;4274:51:0;;:19;6984:15:1;;;4274:51:0;;;6966:34:1;4310:4:0;7016:18:1;;;7009:43;7068:18;;;7061:34;;;4239:12:0;;-1:-1:-1;4274:19:0;;;;;;6878:18:1;;4274:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4270:233;;4451:32;;-1:-1:-1;;;4451:32:0;;7308:2:1;4451:32:0;;;7290:21:1;7347:2;7327:18;;;7320:30;7386:24;7366:18;;;7359:52;7428:18;;4451:32:0;7106:346:1;4270:233:0;4397:4;4349:5;:45;4355:38;4367:6;4375:5;;4381:1;4375:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4385:7;1983:40;;-1:-1:-1;;8624:2:1;8620:15;;;8616:24;;1983:40:0;;;8604:37:1;8675:15;;;8671:24;8657:12;;;8650:46;8712:12;;;8705:28;;;1946:7:0;;8749:12:1;;1983:40:0;;;;;;;;;;;;1973:51;;;;;;1966:58;;1822:210;;;;;;4355:38;4349:45;;;;;;;;;;;-1:-1:-1;4349:45:0;:52;;-1:-1:-1;;4349:52:0;;;;;;;;;;-1:-1:-1;;4554:3:0;4158:434;;;-1:-1:-1;;;4635:3:0;;3776:889;;;;4682:42;4700:6;4708:5;;4715:8;;4682:42;;;;;;;;;;:::i;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:1;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;215:367;;;;;:::o;587:922::-;727:6;735;743;751;759;767;820:3;808:9;799:7;795:23;791:33;788:53;;;837:1;834;827:12;788:53;860:29;879:9;860:29;:::i;:::-;850:39;;940:2;929:9;925:18;912:32;963:18;1004:2;996:6;993:14;990:34;;;1020:1;1017;1010:12;990:34;1059:70;1121:7;1112:6;1101:9;1097:22;1059:70;:::i;:::-;1148:8;;-1:-1:-1;1033:96:1;-1:-1:-1;1033:96:1;;-1:-1:-1;1202:38:1;1236:2;1221:18;;1202:38;:::i;:::-;1192:48;;1293:2;1282:9;1278:18;1265:32;1249:48;;1322:2;1312:8;1309:16;1306:36;;;1338:1;1335;1328:12;1306:36;;1377:72;1441:7;1430:8;1419:9;1415:24;1377:72;:::i;:::-;587:922;;;;-1:-1:-1;587:922:1;;-1:-1:-1;587:922:1;;1468:8;;587:922;-1:-1:-1;;;587:922:1:o;1514:511::-;1609:6;1617;1625;1678:2;1666:9;1657:7;1653:23;1649:32;1646:52;;;1694:1;1691;1684:12;1646:52;1717:29;1736:9;1717:29;:::i;:::-;1707:39;;1797:2;1786:9;1782:18;1769:32;1824:18;1816:6;1813:30;1810:50;;;1856:1;1853;1846:12;1810:50;1895:70;1957:7;1948:6;1937:9;1933:22;1895:70;:::i;:::-;1514:511;;1984:8;;-1:-1:-1;1869:96:1;;-1:-1:-1;;;;1514:511:1:o;2030:328::-;2107:6;2115;2123;2176:2;2164:9;2155:7;2151:23;2147:32;2144:52;;;2192:1;2189;2182:12;2144:52;2215:29;2234:9;2215:29;:::i;:::-;2205:39;;2263:38;2297:2;2286:9;2282:18;2263:38;:::i;:::-;2253:48;;2348:2;2337:9;2333:18;2320:32;2310:42;;2030:328;;;;;:::o;2545:180::-;2604:6;2657:2;2645:9;2636:7;2632:23;2628:32;2625:52;;;2673:1;2670;2663:12;2625:52;-1:-1:-1;2696:23:1;;2545:180;-1:-1:-1;2545:180:1:o;2922:1458::-;3170:6;3178;3186;3194;3202;3210;3218;3226;3279:3;3267:9;3258:7;3254:23;3250:33;3247:53;;;3296:1;3293;3286:12;3247:53;3336:9;3323:23;3365:18;3406:2;3398:6;3395:14;3392:34;;;3422:1;3419;3412:12;3392:34;3461:70;3523:7;3514:6;3503:9;3499:22;3461:70;:::i;:::-;3550:8;;-1:-1:-1;3435:96:1;-1:-1:-1;3638:2:1;3623:18;;3610:32;;-1:-1:-1;3654:16:1;;;3651:36;;;3683:1;3680;3673:12;3651:36;3722:72;3786:7;3775:8;3764:9;3760:24;3722:72;:::i;:::-;3813:8;;-1:-1:-1;3696:98:1;-1:-1:-1;3901:2:1;3886:18;;3873:32;;-1:-1:-1;3917:16:1;;;3914:36;;;3946:1;3943;3936:12;3914:36;3985:72;4049:7;4038:8;4027:9;4023:24;3985:72;:::i;:::-;4076:8;;-1:-1:-1;3959:98:1;-1:-1:-1;4164:2:1;4149:18;;4136:32;;-1:-1:-1;4180:16:1;;;4177:36;;;4209:1;4206;4199:12;4177:36;;4248:72;4312:7;4301:8;4290:9;4286:24;4248:72;:::i;:::-;2922:1458;;;;-1:-1:-1;2922:1458:1;;-1:-1:-1;2922:1458:1;;;;;;4339:8;-1:-1:-1;;;2922:1458:1:o;4385:800::-;4534:6;4542;4550;4558;4611:2;4599:9;4590:7;4586:23;4582:32;4579:52;;;4627:1;4624;4617:12;4579:52;4667:9;4654:23;4696:18;4737:2;4729:6;4726:14;4723:34;;;4753:1;4750;4743:12;4723:34;4792:70;4854:7;4845:6;4834:9;4830:22;4792:70;:::i;:::-;4881:8;;-1:-1:-1;4766:96:1;-1:-1:-1;4969:2:1;4954:18;;4941:32;;-1:-1:-1;4985:16:1;;;4982:36;;;5014:1;5011;5004:12;4982:36;;5053:72;5117:7;5106:8;5095:9;5091:24;5053:72;:::i;:::-;4385:800;;;;-1:-1:-1;5144:8:1;-1:-1:-1;;;;4385:800:1:o;5876:277::-;5943:6;5996:2;5984:9;5975:7;5971:23;5967:32;5964:52;;;6012:1;6009;6002:12;5964:52;6044:9;6038:16;6097:5;6090:13;6083:21;6076:5;6073:32;6063:60;;6119:1;6116;6109:12;6063:60;6142:5;5876:277;-1:-1:-1;;;5876:277:1:o;6514:184::-;6566:77;6563:1;6556:88;6663:4;6660:1;6653:15;6687:4;6684:1;6677:15;7457:358;7557:6;7552:3;7545:19;7527:3;7587:66;7579:6;7576:78;7573:98;;;7667:1;7664;7657:12;7573:98;7703:6;7700:1;7696:14;7755:8;7748:5;7741:4;7736:3;7732:14;7719:45;7784:18;;;;7804:4;7780:29;;7457:358;-1:-1:-1;;;7457:358:1:o;7820:509::-;8028:4;8057:42;8138:2;8130:6;8126:15;8115:9;8108:34;8190:2;8182:6;8178:15;8173:2;8162:9;8158:18;8151:43;;8230:2;8225;8214:9;8210:18;8203:30;8250:73;8319:2;8308:9;8304:18;8296:6;8288;8250:73;:::i;:::-;8242:81;7820:509;-1:-1:-1;;;;;;7820:509:1:o;9121:186::-;9180:6;9233:2;9221:9;9212:7;9208:23;9204:32;9201:52;;;9249:1;9246;9239:12;9201:52;9272:29;9291:9;9272:29;:::i;9312:604::-;9405:4;9411:6;9471:11;9458:25;-1:-1:-1;;9550:8:1;9534:14;9530:29;9526:102;9506:18;9502:127;9492:155;;9643:1;9640;9633:12;9492:155;9670:33;;9722:20;;;-1:-1:-1;9765:18:1;9754:30;;9751:50;;;9797:1;9794;9787:12;9751:50;9830:4;9818:17;;-1:-1:-1;9881:1:1;9877:14;;;9861;9857:35;9847:46;;9844:66;;;9906:1;9903;9896:12;10267:2045;10657:42;10726:15;;;10708:34;;10635:2;10761;10779:18;;;10772:30;;;10620:18;;;10837:22;;;10587:4;;10917:6;;10890:3;10875:19;;10587:4;10951:191;10965:6;10962:1;10959:13;10951:191;;;11058:2;11030:26;11049:6;11030:26;:::i;:::-;11026:35;11014:48;;11117:15;;;;11082:12;;;;10987:1;10980:9;10951:191;;;-1:-1:-1;11178:19:1;;;11173:2;11158:18;;11151:47;11232:19;;;11269:12;;;;-1:-1:-1;11300:1:1;;-1:-1:-1;11337:15:1;;;11328:25;;11324:34;;11383:6;11409:1;11419:864;11435:6;11430:3;11427:15;11419:864;;;11524:66;11518:3;11510:6;11506:16;11502:89;11495:5;11488:104;11644:8;11631:22;-1:-1:-1;;11724:6:1;11708:14;11704:27;11700:100;11680:18;11676:125;11666:153;;11815:1;11812;11805:12;11666:153;11845:31;;11950:14;;;;11903:19;11991:18;11980:30;;11977:50;;;12023:1;12020;12013:12;11977:50;12084:6;12080:2;12076:15;12060:14;12056:36;12047:7;12043:50;12040:70;;;12106:1;12103;12096:12;12040:70;12133:62;12188:6;12180;12171:7;12133:62;:::i;:::-;12259:14;;;;12123:72;-1:-1:-1;;;12220:17:1;;;;11461:1;11452:11;11419:864;;;-1:-1:-1;12300:6:1;;10267:2045;-1:-1:-1;;;;;;;;;;;;10267:2045:1:o
Swarm Source
ipfs://e9255eba3d66d1a60c2a4682ae2999328ec1d57520c3b6add55d854496580d25
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.