More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,158 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake By Ids | 20540063 | 14 days ago | IN | 0 ETH | 0.00012593 | ||||
Unstake By Ids | 20453393 | 26 days ago | IN | 0 ETH | 0.00006936 | ||||
Unstake By Ids | 20438990 | 28 days ago | IN | 0 ETH | 0.00017497 | ||||
Unstake By Ids | 20170992 | 65 days ago | IN | 0 ETH | 0.0052096 | ||||
Unstake By Ids | 18760666 | 263 days ago | IN | 0 ETH | 0.00200688 | ||||
Unstake By Ids | 18714165 | 270 days ago | IN | 0 ETH | 0.00314859 | ||||
Unstake By Ids | 18447154 | 307 days ago | IN | 0 ETH | 0.00079936 | ||||
Unstake By Ids | 18375294 | 317 days ago | IN | 0 ETH | 0.00058337 | ||||
Unstake By Ids | 18153786 | 348 days ago | IN | 0 ETH | 0.00067217 | ||||
Unstake By Ids | 18040445 | 364 days ago | IN | 0 ETH | 0.0031336 | ||||
Unstake By Ids | 17731664 | 407 days ago | IN | 0 ETH | 0.00126753 | ||||
Unstake By Ids | 17574073 | 429 days ago | IN | 0 ETH | 0.00089678 | ||||
Unstake By Ids | 17450931 | 447 days ago | IN | 0 ETH | 0.0020124 | ||||
Unstake By Ids | 17210659 | 480 days ago | IN | 0 ETH | 0.01016373 | ||||
Unstake By Ids | 17124781 | 493 days ago | IN | 0 ETH | 0.00280519 | ||||
Unstake By Ids | 17011477 | 509 days ago | IN | 0 ETH | 0.00181841 | ||||
Unstake By Ids | 16956158 | 516 days ago | IN | 0 ETH | 0.00129208 | ||||
Unstake By Ids | 16955150 | 517 days ago | IN | 0 ETH | 0.00260672 | ||||
Unstake By Ids | 16871268 | 528 days ago | IN | 0 ETH | 0.00159954 | ||||
Unstake By Ids | 16853233 | 531 days ago | IN | 0 ETH | 0.00126335 | ||||
Unstake By Ids | 16818033 | 536 days ago | IN | 0 ETH | 0.00129101 | ||||
Unstake By Ids | 16745652 | 546 days ago | IN | 0 ETH | 0.00109466 | ||||
Unstake By Ids | 16730756 | 548 days ago | IN | 0 ETH | 0.00158231 | ||||
Unstake By Ids | 16710282 | 551 days ago | IN | 0 ETH | 0.00207616 | ||||
Stake By Ids | 16665436 | 557 days ago | IN | 0 ETH | 0.00298526 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CBCStaking
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-22 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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 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); /** * @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; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: ChillBearStaking.sol pragma solidity ^0.8.7; contract CBCStaking is Ownable { address public constant CBC_ADDRESS = 0xc7b76846De3DB54DB45c8b5deBCabfF4b0834F78; bool public stakingLive = false; bool public unlockAll = false; uint256 public stakingLockPeriod = 2592000; // 30 days in seconds mapping(uint256 => address) internal tokenIdToAddress; mapping(address => uint256[]) internal addressToTokenIds; mapping(uint256 => uint256) internal tokenLockedUntil; event LockPeriodChanged(uint indexed prevLockPeriod, uint indexed newLockPeriod); IERC721 private constant _IERC721 = IERC721(CBC_ADDRESS); constructor() { } modifier stakingEnabled { require(stakingLive, "Staking not live yet"); _; } function getCBCStaked(address staker) public view returns (uint256[] memory) { return addressToTokenIds[staker]; } function getStakedCount(address staker) public view returns (uint256) { return addressToTokenIds[staker].length; } function removeTokenIdFromArray(uint256[] storage array, uint256 tokenId) internal { uint256 length = array.length; for (uint256 i = 0; i < length; i++) { if (array[i] == tokenId) { length--; if (i < length) { array[i] = array[length]; } array.pop(); break; } } } function stakeByIds(uint256[] memory tokenIds) public stakingEnabled { for (uint256 i = 0; i < tokenIds.length; i++) { uint256 id = tokenIds[i]; require(_IERC721.ownerOf(id) == msg.sender && tokenIdToAddress[id] == address(0), "You do not own the token!"); _IERC721.transferFrom(msg.sender, address(this), id); addressToTokenIds[msg.sender].push(id); tokenIdToAddress[id] = msg.sender; uint256 lockUntil = block.timestamp + stakingLockPeriod; tokenLockedUntil[id] = lockUntil; } } function unstakeByIds(uint256[] memory tokenIds) public { for (uint256 i = 0; i < tokenIds.length; i++) { uint256 id = tokenIds[i]; require(tokenIdToAddress[id] == msg.sender, "You are not the owner of this token!"); require(tokenLockedUntil[id] < block.timestamp || unlockAll == true, "Token is still locked"); _IERC721.transferFrom(address(this), msg.sender, id); removeTokenIdFromArray(addressToTokenIds[msg.sender], id); tokenIdToAddress[id] = address(0); } } function getTokenOwner(uint256 tokenId) public view returns (address) { return tokenIdToAddress[tokenId]; } function getLockedUntil(uint256 tokenId) public view returns (uint256) { return tokenLockedUntil[tokenId]; } function toggleStaking() external onlyOwner { stakingLive = !stakingLive; } function toggleUnlockAll() external onlyOwner { unlockAll = !unlockAll; } function setLockPeriod(uint newLockPeriod) external onlyOwner { uint prevLockPeriod = stakingLockPeriod; stakingLockPeriod = newLockPeriod; emit LockPeriodChanged(prevLockPeriod, newLockPeriod); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"prevLockPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newLockPeriod","type":"uint256"}],"name":"LockPeriodChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"CBC_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getCBCStaked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getLockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getStakedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getTokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockPeriod","type":"uint256"}],"name":"setLockPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeByIds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingLockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleUnlockAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeByIds","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805461ffff60a01b1916905562278d0060015534801561002557600080fd5b5061002f33610034565b610084565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61115b806100936000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063d9ffad4711610066578063d9ffad47146102a1578063e0639364146102b4578063e18ea393146102bd578063f2fde38b146102dd57600080fd5b80638da5cb5b146101f2578063a5cd761f14610210578063cd24b0a314610246578063d92656a71461027c57600080fd5b80636691b0fe116100d35780636691b0fe14610153578063715018a614610193578063779972da1461019b57806383c13db2146101ae57600080fd5b806304333f29146101055780632aa645341461012e5780633b8105b31461013857806348aa193614610140575b600080fd5b610118610113366004610e40565b6102f0565b6040516101259190610f7d565b60405180910390f35b610136610369565b005b61013661043d565b61013661014e366004610e81565b61050b565b61016e73c7b76846de3db54db45c8b5debcabff4b0834f7881565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610125565b61013661077d565b6101366101a9366004610f64565b61080a565b6101e46101bc366004610e40565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b604051908152602001610125565b60005473ffffffffffffffffffffffffffffffffffffffff1661016e565b61016e61021e366004610f64565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005461026c907501000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610125565b60005461026c9074010000000000000000000000000000000000000000900460ff1681565b6101366102af366004610e81565b6108c4565b6101e460015481565b6101e46102cb366004610f64565b60009081526004602052604090205490565b6101366102eb366004610e40565b610bd6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561035d57602002820191906000526020600020905b815481526020019060010190808311610349575b50505050509050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff811675010000000000000000000000000000000000000000009182900460ff1615909102179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff1615909102179055565b60005b815181101561077957600082828151811061052b5761052b6110a5565b6020908102919091018101516000818152600290925260409091205490915073ffffffffffffffffffffffffffffffffffffffff1633146105ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f596f7520617265206e6f7420746865206f776e6572206f66207468697320746f60448201527f6b656e210000000000000000000000000000000000000000000000000000000060648201526084016103e6565b60008181526004602052604090205442118061062957506000547501000000000000000000000000000000000000000000900460ff1615156001145b61068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f546f6b656e206973207374696c6c206c6f636b6564000000000000000000000060448201526064016103e6565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523060048201523360248201526044810182905273c7b76846de3db54db45c8b5debcabff4b0834f78906323b872dd90606401600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b50503360009081526003602052604090206107339250905082610d06565b600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055806107718161100e565b91505061050e565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b6108086000610dcb565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b6001805490829055604051829082907f215ad44af04f93b13eb61772a293ca5bf60435095285cf459417ae102dde988b90600090a35050565b60005474010000000000000000000000000000000000000000900460ff16610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5374616b696e67206e6f74206c6976652079657400000000000000000000000060448201526064016103e6565b60005b8151811015610779576000828281518110610968576109686110a5565b60209081029190910101516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052909150339073c7b76846de3db54db45c8b5debcabff4b0834f7890636352211e9060240160206040518083038186803b1580156109dc57600080fd5b505afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190610e64565b73ffffffffffffffffffffffffffffffffffffffff16148015610a59575060008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16155b610abf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f596f7520646f206e6f74206f776e2074686520746f6b656e210000000000000060448201526064016103e6565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273c7b76846de3db54db45c8b5debcabff4b0834f78906323b872dd90606401600060405180830381600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b5050336000818152600360209081526040808320805460018181018355918552838520018890558784526002909252822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169093179092559054909250610bb0915042610fc1565b600092835260046020526040909220919091555080610bce8161100e565b91505061094b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b73ffffffffffffffffffffffffffffffffffffffff8116610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103e6565b610d0381610dcb565b50565b815460005b81811015610dc55782848281548110610d2657610d266110a5565b90600052602060002001541415610db35781610d4181610fd9565b92505081811015610d8857838281548110610d5e57610d5e6110a5565b9060005260206000200154848281548110610d7b57610d7b6110a5565b6000918252602090912001555b83805480610d9857610d98611076565b60019003818190600052602060002001600090559055610dc5565b80610dbd8161100e565b915050610d0b565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610e5257600080fd5b8135610e5d81611103565b9392505050565b600060208284031215610e7657600080fd5b8151610e5d81611103565b60006020808385031215610e9457600080fd5b823567ffffffffffffffff80821115610eac57600080fd5b818501915085601f830112610ec057600080fd5b813581811115610ed257610ed26110d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f1557610f156110d4565b604052828152858101935084860182860187018a1015610f3457600080fd5b600095505b83861015610f57578035855260019590950194938601938601610f39565b5098975050505050505050565b600060208284031215610f7657600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610fb557835183529284019291840191600101610f99565b50909695505050505050565b60008219821115610fd457610fd4611047565b500190565b600081610fe857610fe8611047565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104057611040611047565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610d0357600080fdfea26469706673582212206fbff4e1d4f74461db015027ef4572d3aa98722d3c2313df89d65dcffdb9d9ef64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063d9ffad4711610066578063d9ffad47146102a1578063e0639364146102b4578063e18ea393146102bd578063f2fde38b146102dd57600080fd5b80638da5cb5b146101f2578063a5cd761f14610210578063cd24b0a314610246578063d92656a71461027c57600080fd5b80636691b0fe116100d35780636691b0fe14610153578063715018a614610193578063779972da1461019b57806383c13db2146101ae57600080fd5b806304333f29146101055780632aa645341461012e5780633b8105b31461013857806348aa193614610140575b600080fd5b610118610113366004610e40565b6102f0565b6040516101259190610f7d565b60405180910390f35b610136610369565b005b61013661043d565b61013661014e366004610e81565b61050b565b61016e73c7b76846de3db54db45c8b5debcabff4b0834f7881565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610125565b61013661077d565b6101366101a9366004610f64565b61080a565b6101e46101bc366004610e40565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b604051908152602001610125565b60005473ffffffffffffffffffffffffffffffffffffffff1661016e565b61016e61021e366004610f64565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005461026c907501000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610125565b60005461026c9074010000000000000000000000000000000000000000900460ff1681565b6101366102af366004610e81565b6108c4565b6101e460015481565b6101e46102cb366004610f64565b60009081526004602052604090205490565b6101366102eb366004610e40565b610bd6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561035d57602002820191906000526020600020905b815481526020019060010190808311610349575b50505050509050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff811675010000000000000000000000000000000000000000009182900460ff1615909102179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff1615909102179055565b60005b815181101561077957600082828151811061052b5761052b6110a5565b6020908102919091018101516000818152600290925260409091205490915073ffffffffffffffffffffffffffffffffffffffff1633146105ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f596f7520617265206e6f7420746865206f776e6572206f66207468697320746f60448201527f6b656e210000000000000000000000000000000000000000000000000000000060648201526084016103e6565b60008181526004602052604090205442118061062957506000547501000000000000000000000000000000000000000000900460ff1615156001145b61068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f546f6b656e206973207374696c6c206c6f636b6564000000000000000000000060448201526064016103e6565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523060048201523360248201526044810182905273c7b76846de3db54db45c8b5debcabff4b0834f78906323b872dd90606401600060405180830381600087803b15801561070157600080fd5b505af1158015610715573d6000803e3d6000fd5b50503360009081526003602052604090206107339250905082610d06565b600090815260026020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055806107718161100e565b91505061050e565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b6108086000610dcb565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b6001805490829055604051829082907f215ad44af04f93b13eb61772a293ca5bf60435095285cf459417ae102dde988b90600090a35050565b60005474010000000000000000000000000000000000000000900460ff16610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5374616b696e67206e6f74206c6976652079657400000000000000000000000060448201526064016103e6565b60005b8151811015610779576000828281518110610968576109686110a5565b60209081029190910101516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052909150339073c7b76846de3db54db45c8b5debcabff4b0834f7890636352211e9060240160206040518083038186803b1580156109dc57600080fd5b505afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190610e64565b73ffffffffffffffffffffffffffffffffffffffff16148015610a59575060008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16155b610abf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f596f7520646f206e6f74206f776e2074686520746f6b656e210000000000000060448201526064016103e6565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273c7b76846de3db54db45c8b5debcabff4b0834f78906323b872dd90606401600060405180830381600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b5050336000818152600360209081526040808320805460018181018355918552838520018890558784526002909252822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169093179092559054909250610bb0915042610fc1565b600092835260046020526040909220919091555080610bce8161100e565b91505061094b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e6565b73ffffffffffffffffffffffffffffffffffffffff8116610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103e6565b610d0381610dcb565b50565b815460005b81811015610dc55782848281548110610d2657610d266110a5565b90600052602060002001541415610db35781610d4181610fd9565b92505081811015610d8857838281548110610d5e57610d5e6110a5565b9060005260206000200154848281548110610d7b57610d7b6110a5565b6000918252602090912001555b83805480610d9857610d98611076565b60019003818190600052602060002001600090559055610dc5565b80610dbd8161100e565b915050610d0b565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610e5257600080fd5b8135610e5d81611103565b9392505050565b600060208284031215610e7657600080fd5b8151610e5d81611103565b60006020808385031215610e9457600080fd5b823567ffffffffffffffff80821115610eac57600080fd5b818501915085601f830112610ec057600080fd5b813581811115610ed257610ed26110d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715610f1557610f156110d4565b604052828152858101935084860182860187018a1015610f3457600080fd5b600095505b83861015610f57578035855260019590950194938601938601610f39565b5098975050505050505050565b600060208284031215610f7657600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610fb557835183529284019291840191600101610f99565b50909695505050505050565b60008219821115610fd457610fd4611047565b500190565b600081610fe857610fe8611047565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104057611040611047565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610d0357600080fdfea26469706673582212206fbff4e1d4f74461db015027ef4572d3aa98722d3c2313df89d65dcffdb9d9ef64736f6c63430008070033
Deployed Bytecode Sourcemap
9268:3353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10028:128;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12295:87;;;:::i;:::-;;12198:89;;;:::i;11359:570::-;;;;;;:::i;:::-;;:::i;9308:80::-;;9346:42;9308:80;;;;;2073:42:1;2061:55;;;2043:74;;2031:2;2016:18;9308:80:0;1897:226:1;8385:103:0;;;:::i;12390:228::-;;;;;;:::i;:::-;;:::i;10168:128::-;;;;;;:::i;:::-;10256:25;;10229:7;10256:25;;;:17;:25;;;;;:32;;10168:128;;;;5732:25:1;;;5720:2;5705:18;10168:128:0;5586:177:1;7734:87:0;7780:7;7807:6;;;7734:87;;11939:121;;;;;;:::i;:::-;12000:7;12027:25;;;:16;:25;;;;;;;;;11939:121;9433:29;;;;;;;;;;;;;;;3333:14:1;;3326:22;3308:41;;3296:2;3281:18;9433:29:0;3168:187:1;9395:31:0;;;;;;;;;;;;10739:612;;;;;;:::i;:::-;;:::i;9469:42::-;;;;;;12068:122;;;;;;:::i;:::-;12130:7;12157:25;;;:16;:25;;;;;;;12068:122;8643:201;;;;;;:::i;:::-;;:::i;10028:128::-;10123:25;;;;;;;:17;:25;;;;;;;;;10116:32;;;;;;;;;;;;;;;;;10087:16;;10116:32;;;10123:25;10116:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10028:128;;;:::o;12295:87::-;7780:7;7807:6;7954:23;7807:6;6538:10;7954:23;7946:68;;;;;;;5427:2:1;7946:68:0;;;5409:21:1;;;5446:18;;;5439:30;5505:34;5485:18;;;5478:62;5557:18;;7946:68:0;;;;;;;;;12365:9:::1;::::0;;12352:22;;::::1;12365:9:::0;;;;::::1;;;12364:10;12352:22:::0;;::::1;;::::0;;12295:87::o;12198:89::-;7780:7;7807:6;7954:23;7807:6;6538:10;7954:23;7946:68;;;;;;;5427:2:1;7946:68:0;;;5409:21:1;;;5446:18;;;5439:30;5505:34;5485:18;;;5478:62;5557:18;;7946:68:0;5225:356:1;7946:68:0;12268:11:::1;::::0;;12253:26;;::::1;12268:11:::0;;;;::::1;;;12267:12;12253:26:::0;;::::1;;::::0;;12198:89::o;11359:570::-;11433:9;11428:494;11452:8;:15;11448:1;:19;11428:494;;;11489:10;11502:8;11511:1;11502:11;;;;;;;;:::i;:::-;;;;;;;;;;;;11536:20;;;;:16;:20;;;;;;;;11502:11;;-1:-1:-1;11536:34:0;:20;11560:10;11536:34;11528:83;;;;;;;4672:2:1;11528:83:0;;;4654:21:1;4711:2;4691:18;;;4684:30;4750:34;4730:18;;;4723:62;4821:6;4801:18;;;4794:34;4845:19;;11528:83:0;4470:400:1;11528:83:0;11634:20;;;;:16;:20;;;;;;11657:15;-1:-1:-1;11634:38:0;:59;;-1:-1:-1;11676:9:0;;;;;;;:17;;11689:4;11676:17;11634:59;11626:93;;;;;;;5077:2:1;11626:93:0;;;5059:21:1;5116:2;5096:18;;;5089:30;5155:23;5135:18;;;5128:51;5196:18;;11626:93:0;4875:345:1;11626:93:0;11736:52;;;;;11766:4;11736:52;;;2391:34:1;11773:10:0;2441:18:1;;;2434:43;2493:18;;;2486:34;;;9346:42:0;;11736:21;;2303:18:1;;11736:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11846:10:0;11828:29;;;;:17;:29;;;;;11805:57;;-1:-1:-1;11828:29:0;-1:-1:-1;11859:2:0;11805:22;:57::i;:::-;11908:1;11877:20;;;:16;:20;;;;;:33;;;;;;11469:3;;;;:::i;:::-;;;;11428:494;;;;11359:570;:::o;8385:103::-;7780:7;7807:6;7954:23;7807:6;6538:10;7954:23;7946:68;;;;;;;5427:2:1;7946:68:0;;;5409:21:1;;;5446:18;;;5439:30;5505:34;5485:18;;;5478:62;5557:18;;7946:68:0;5225:356:1;7946:68:0;8450:30:::1;8477:1;8450:18;:30::i;:::-;8385:103::o:0;12390:228::-;7780:7;7807:6;7954:23;7807:6;6538:10;7954:23;7946:68;;;;;;;5427:2:1;7946:68:0;;;5409:21:1;;;5446:18;;;5439:30;5505:34;5485:18;;;5478:62;5557:18;;7946:68:0;5225:356:1;7946:68:0;12485:17:::1;::::0;;12513:33;;;;12562:48:::1;::::0;12533:13;;12485:17;;12562:48:::1;::::0;12463:19:::1;::::0;12562:48:::1;12452:166;12390:228:::0;:::o;10739:612::-;9964:11;;;;;;;9956:44;;;;;;;3969:2:1;9956:44:0;;;3951:21:1;4008:2;3988:18;;;3981:30;4047:22;4027:18;;;4020:50;4087:18;;9956:44:0;3767:344:1;9956:44:0;10826:9:::1;10821:523;10845:8;:15;10841:1;:19;10821:523;;;10882:10;10895:8;10904:1;10895:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;10929:20:::1;::::0;;;;::::1;::::0;::::1;5732:25:1::0;;;10895:11:0;;-1:-1:-1;10953:10:0::1;::::0;9346:42:::1;::::0;10929:16:::1;::::0;5705:18:1;;10929:20:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;:72;;;;-1:-1:-1::0;10999:1:0::1;10967:20:::0;;;:16:::1;:20;::::0;;;;;:34:::1;:20;:34:::0;10929:72:::1;10921:110;;;::::0;::::1;::::0;;4318:2:1;10921:110:0::1;::::0;::::1;4300:21:1::0;4357:2;4337:18;;;4330:30;4396:27;4376:18;;;4369:55;4441:18;;10921:110:0::1;4116:349:1::0;10921:110:0::1;11046:52;::::0;;;;11068:10:::1;11046:52;::::0;::::1;2391:34:1::0;11088:4:0::1;2441:18:1::0;;;2434:43;2493:18;;;2486:34;;;9346:42:0::1;::::0;11046:21:::1;::::0;2303:18:1;;11046:52:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11133:10:0::1;11115:29;::::0;;;:17:::1;:29;::::0;;;;;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;::::1;::::0;;;11168:20;;;:16:::1;:20:::0;;;;;:33;;;::::1;::::0;;::::1;::::0;;;11268:17;;11115:29;;-1:-1:-1;11250:35:0::1;::::0;-1:-1:-1;11250:15:0::1;:35;:::i;:::-;11300:20;::::0;;;:16:::1;:20;::::0;;;;;:32;;;;-1:-1:-1;10862:3:0;::::1;::::0;::::1;:::i;:::-;;;;10821:523;;8643:201:::0;7780:7;7807:6;7954:23;7807:6;6538:10;7954:23;7946:68;;;;;;;5427:2:1;7946:68:0;;;5409:21:1;;;5446:18;;;5439:30;5505:34;5485:18;;;5478:62;5557:18;;7946:68:0;5225:356:1;7946:68:0;8732:22:::1;::::0;::::1;8724:73;;;::::0;::::1;::::0;;3562:2:1;8724:73:0::1;::::0;::::1;3544:21:1::0;3601:2;3581:18;;;3574:30;3640:34;3620:18;;;3613:62;3711:8;3691:18;;;3684:36;3737:19;;8724:73:0::1;3360:402:1::0;8724:73:0::1;8808:28;8827:8;8808:18;:28::i;:::-;8643:201:::0;:::o;10304:427::-;10415:12;;10398:14;10438:286;10462:6;10458:1;:10;10438:286;;;10506:7;10494:5;10500:1;10494:8;;;;;;;;:::i;:::-;;;;;;;;;:19;10490:223;;;10534:8;;;;:::i;:::-;;;;10569:6;10565:1;:10;10561:83;;;10611:5;10617:6;10611:13;;;;;;;;:::i;:::-;;;;;;;;;10600:5;10606:1;10600:8;;;;;;;;:::i;:::-;;;;;;;;;;:24;10561:83;10662:5;:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10692:5;;10490:223;10470:3;;;;:::i;:::-;;;;10438:286;;;;10387:344;10304:427;;:::o;9004:191::-;9078:16;9097:6;;;9114:17;;;;;;;;;;9147:40;;9097:6;;;;;;;9147:40;;9078:16;9147:40;9067:128;9004:191;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:1185::-;606:6;637:2;680;668:9;659:7;655:23;651:32;648:52;;;696:1;693;686:12;648:52;736:9;723:23;765:18;806:2;798:6;795:14;792:34;;;822:1;819;812:12;792:34;860:6;849:9;845:22;835:32;;905:7;898:4;894:2;890:13;886:27;876:55;;927:1;924;917:12;876:55;963:2;950:16;985:2;981;978:10;975:36;;;991:18;;:::i;:::-;1037:2;1034:1;1030:10;1069:2;1063:9;1128:66;1123:2;1119;1115:11;1111:84;1103:6;1099:97;1246:6;1234:10;1231:22;1226:2;1214:10;1211:18;1208:46;1205:72;;;1257:18;;:::i;:::-;1293:2;1286:22;1343:18;;;1377:15;;;;-1:-1:-1;1412:11:1;;;1442;;;1438:20;;1435:33;-1:-1:-1;1432:53:1;;;1481:1;1478;1471:12;1432:53;1503:1;1494:10;;1513:163;1527:2;1524:1;1521:9;1513:163;;;1584:17;;1572:30;;1545:1;1538:9;;;;;1622:12;;;;1654;;1513:163;;;-1:-1:-1;1695:6:1;522:1185;-1:-1:-1;;;;;;;;522:1185:1:o;1712:180::-;1771:6;1824:2;1812:9;1803:7;1799:23;1795:32;1792:52;;;1840:1;1837;1830:12;1792:52;-1:-1:-1;1863:23:1;;1712:180;-1:-1:-1;1712:180:1:o;2531:632::-;2702:2;2754:21;;;2824:13;;2727:18;;;2846:22;;;2673:4;;2702:2;2925:15;;;;2899:2;2884:18;;;2673:4;2968:169;2982:6;2979:1;2976:13;2968:169;;;3043:13;;3031:26;;3112:15;;;;3077:12;;;;3004:1;2997:9;2968:169;;;-1:-1:-1;3154:3:1;;2531:632;-1:-1:-1;;;;;;2531:632:1:o;5768:128::-;5808:3;5839:1;5835:6;5832:1;5829:13;5826:39;;;5845:18;;:::i;:::-;-1:-1:-1;5881:9:1;;5768:128::o;5901:196::-;5940:3;5968:5;5958:39;;5977:18;;:::i;:::-;-1:-1:-1;6024:66:1;6013:78;;5901:196::o;6102:195::-;6141:3;6172:66;6165:5;6162:77;6159:103;;;6242:18;;:::i;:::-;-1:-1:-1;6289:1:1;6278:13;;6102:195::o;6302:184::-;6354:77;6351:1;6344:88;6451:4;6448:1;6441:15;6475:4;6472:1;6465:15;6491:184;6543:77;6540:1;6533:88;6640:4;6637:1;6630:15;6664:4;6661:1;6654:15;6680:184;6732:77;6729:1;6722:88;6829:4;6826:1;6819:15;6853:4;6850:1;6843:15;6869:184;6921:77;6918:1;6911:88;7018:4;7015:1;7008:15;7042:4;7039:1;7032:15;7058:154;7144:42;7137:5;7133:54;7126:5;7123:65;7113:93;;7202:1;7199;7192:12
Swarm Source
ipfs://6fbff4e1d4f74461db015027ef4572d3aa98722d3c2313df89d65dcffdb9d9ef
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.