More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Stake | 6425541 | 25 days ago | IN | 0 APE | 0.00544727 | ||||
Unstake | 6424649 | 25 days ago | IN | 0 APE | 0.01983159 | ||||
Stake | 6424615 | 25 days ago | IN | 0 APE | 0.08595025 | ||||
Unstake | 6424541 | 25 days ago | IN | 0 APE | 0.00195424 | ||||
Claim And Stake | 6424180 | 25 days ago | IN | 0 APE | 0.00226096 | ||||
Unstake | 6424085 | 25 days ago | IN | 0 APE | 0.00289503 | ||||
Claim And Stake | 6424072 | 25 days ago | IN | 0 APE | 0.00226096 | ||||
Claim And Stake | 6406544 | 26 days ago | IN | 0 APE | 0.00226096 | ||||
Unstake | 6406536 | 26 days ago | IN | 0 APE | 0.00195424 | ||||
Unstake | 6376493 | 26 days ago | IN | 0 APE | 0.00195426 | ||||
Claim And Stake | 6376482 | 26 days ago | IN | 0 APE | 0.00226096 | ||||
Unstake | 6373698 | 26 days ago | IN | 0 APE | 0.00230199 | ||||
Stake | 6370550 | 27 days ago | IN | 0 APE | 0.00544724 | ||||
Stake | 6366595 | 27 days ago | IN | 0 APE | 0.00544729 | ||||
Stake | 6366532 | 27 days ago | IN | 0 APE | 0.01392115 | ||||
Stake | 6305081 | 28 days ago | IN | 0 APE | 0.00544727 | ||||
Stake | 6281506 | 28 days ago | IN | 0 APE | 0.00544727 | ||||
Stake | 6281461 | 28 days ago | IN | 0 APE | 0.00544727 | ||||
Stake | 6281437 | 28 days ago | IN | 0 APE | 0.00544727 | ||||
Stake | 6281320 | 28 days ago | IN | 0 APE | 0.00544727 | ||||
Stake | 6281303 | 28 days ago | IN | 0 APE | 0.00544727 | ||||
Stake | 6281116 | 28 days ago | IN | 0 APE | 0.00544729 | ||||
Stake | 6279599 | 28 days ago | IN | 0 APE | 0.00968439 | ||||
Stake | 6279319 | 28 days ago | IN | 0 APE | 0.01011908 | ||||
Unstake | 6118162 | 31 days ago | IN | 0 APE | 0.00195424 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Staking
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 10000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; /** * @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; } } /** * @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); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function percentageOf(uint a, uint b) internal pure returns (uint256) { require(b > 0); return a * b / 100; } function percentageOf10000(uint a, uint b) internal pure returns (uint256) { require(b > 0); return a * b / 10000; } } interface IToken { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint); function mint(address to, uint256 amount) external; function burn(uint256 amount) external; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface INft { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function setApprovalForAll(address operator, bool _approved) external; function getApproved(uint256 tokenId) external view returns (address operator); function isApprovedForAll(address owner, address operator) external view returns (bool); } library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeApprove: approve failed' ); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeTransfer: transfer failed' ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::transferFrom: transferFrom failed' ); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'TransferHelper::safeTransferETH: ETH transfer failed'); } function deposit(address _weth, uint256 _value) internal { (bool success, ) = _weth.call{value: _value}(new bytes(0)); require(success, 'TransferHelper::safeTransferETH: ETH transfer failed'); } function withdraw(address _weth, uint256 _value) internal { (bool success, bytes memory data) = _weth.call(abi.encodeWithSelector(0x2e1a7d4d, _value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::withdraw: withdraw failed' ); } } abstract contract BaseStake is Ownable { struct Pool { address erc721; uint duration; uint reward; } bytes32[] keys; mapping(bytes32 => Pool) values; mapping(bytes32 => uint256) indexOf; mapping(bytes32 => bool) inserted; uint private poolCounter; function get(bytes32 key) internal view returns (bytes32, address, uint, uint) { Pool memory val = values[key]; return (key, val.erc721, val.duration, val.reward); } function getKeyAtIndex(uint256 index) internal view returns (bytes32) { return keys[index]; } function size() internal view returns (uint256) { return keys.length; } function push( uint counter, address erc721, uint duration, uint reward) private { bytes32 key = keccak256(abi.encode(counter, erc721, duration, reward)); Pool memory val = Pool(erc721, duration, reward); if (inserted[key]) { values[key] = val; } else { inserted[key] = true; values[key] = val; indexOf[key] = keys.length; keys.push(key); } } function remove(bytes32 key) private { if (!inserted[key]) { return; } delete inserted[key]; delete values[key]; uint256 index = indexOf[key]; bytes32 lastKey = keys[keys.length - 1]; indexOf[lastKey] = index; delete indexOf[key]; keys[index] = lastKey; keys.pop(); } function _addPool(address erc721, uint duration, uint reward) internal { push(poolCounter, erc721, duration, reward); poolCounter += 1; } function _removePool(bytes32 key) internal { remove(key); } function getPools(bytes32 key) public view virtual returns (bytes32, address, uint, uint) { (bytes32 id, address nft, uint duration, uint reward) = get(key); return (id, nft, duration, reward); } function getPools() public view virtual returns (bytes32[] memory, address[] memory, uint[] memory, uint[] memory) { uint poolSize = size(); bytes32[] memory ids = new bytes32[](poolSize); address[] memory erc721 = new address[](poolSize); uint[] memory durations = new uint[](poolSize); uint[] memory rewards = new uint[](poolSize); for (uint256 i = 0; i < size(); i++) { bytes32 key = getKeyAtIndex(i); (bytes32 id, address nft, uint duration, uint reward) = get(key); ids[i] = id; erc721[i] = nft; durations[i] = duration; rewards[i] = reward; } return (ids, erc721, durations, rewards); } } contract Staking is BaseStake { using SafeMath for uint; struct Vesting { bytes32 uid; address erc721; uint tokenId; bytes32 poolId; uint duration; uint startDate; uint endDate; uint reward; } event LogStake(address sender, uint createdAt, bytes32 uid, address erc721, uint tokenId, bytes32 poolId, uint duration, uint startDate, uint endDate, uint reward); event LogUnstake(address sender, uint createdAt, bytes32 uid, address erc721, uint tokenId, bytes32 poolId, uint duration, uint startDate, uint endDate, uint reward); uint constant EXTRA_PERCENT = 10; bool public initiated; address public stakingToken; address public stakingNft; uint256 private decimal; mapping(bytes32 => Vesting) private staker; uint private stakerCount; constructor() BaseStake() { } function init(address erc20, address erc721, uint256 duration) onlyOwner external { require(!initiated, "already initiated"); stakingToken = erc20; stakingNft = erc721; decimal = 10 ** IToken(erc20).decimals(); _addPool(stakingNft, 10 * duration, 100 * decimal); _addPool(stakingNft, 30 * duration, 500 * decimal); _addPool(stakingNft, 90 * duration, 2000 * decimal); initiated = true; } function addPool(address[] memory erc721, uint256[] memory duration, uint256[] memory reward) onlyOwner external { for (uint256 i = 0; i < erc721.length; i++) { _addPool(erc721[i], duration[i], reward[i]); } } function removePool(bytes32[] memory ids) onlyOwner external { for (uint256 i = 0; i < ids.length; i++) { _removePool(ids[i]); } } function stake(bytes32 poolId, address[] memory erc721, uint256[] memory tokenId, bool[] memory hasExtra) external { require(erc721.length > 0 && erc721.length == tokenId.length && erc721.length == hasExtra.length, "input error"); require(balance() > 0, "pool empty"); (bytes32 _poolId, address _nft, uint _duration, uint _reward) = get(poolId); for (uint256 i = 0; i < erc721.length; i++) { bytes32 uid = nftHash(erc721[i], tokenId[i]); require(poolId == _poolId && erc721[i] == _nft, "pool not found"); require(staker[uid].uid == bytes32(0), "already staked"); require(INft(erc721[i]).ownerOf(tokenId[i]) == msg.sender, "not owner"); uint reward = _reward; if(stakingNft == erc721[i] && hasExtra[i]) { uint extra = reward.percentageOf(EXTRA_PERCENT); reward += extra; } Vesting memory item = Vesting(uid, erc721[i], tokenId[i], poolId, _duration, block.timestamp, block.timestamp + _duration, reward); staker[uid] = item; logStake(item); stakerCount += 1; } } function claimAndStake(address[] memory erc721, uint256[] memory tokenId) external { require(erc721.length > 0 && erc721.length == tokenId.length, "input error"); require(balance() > 0, "pool empty"); uint totalReward = 0; for (uint256 i = 0; i < erc721.length; i++) { require(INft(erc721[i]).ownerOf(tokenId[i]) == msg.sender, "not owner"); bytes32 uid = nftHash(erc721[i], tokenId[i]); Vesting memory current = staker[uid]; require(current.uid != bytes32(0), "not staked"); require(block.timestamp > current.endDate, "not reached yet"); (bytes32 _poolId, , ,) = get(current.poolId); require(current.poolId == _poolId && current.erc721 == erc721[i], "pool not found"); logUnstake(current); totalReward += current.reward; Vesting memory item = Vesting(uid, erc721[i], tokenId[i], current.poolId, current.duration, block.timestamp, block.timestamp + current.duration, current.reward); staker[uid] = item; logStake(item); } sendReward(stakingToken, msg.sender, totalReward); } function unstake(address[] memory erc721, uint256[] memory tokenId) external { require(erc721.length > 0 && erc721.length == tokenId.length, "input error"); uint totalReward = 0; for (uint256 i = 0; i < erc721.length; i++) { require(INft(erc721[i]).ownerOf(tokenId[i]) == msg.sender, "not owner"); Vesting memory current = staker[nftHash(erc721[i], tokenId[i])]; require(current.uid != bytes32(0), "not staked"); require(block.timestamp > current.endDate, "not reached yet"); logUnstake(current); totalReward += current.reward; stakerCount -= 1; delete staker[current.uid]; } sendReward(stakingToken, msg.sender, totalReward); } function balance() public view returns (uint256) { return IToken(stakingToken).balanceOf(address(this)); } function logStake(Vesting memory data) private { emit LogStake(msg.sender, block.timestamp, data.uid, data.erc721, data.tokenId, data.poolId, data.duration, data.startDate, data.endDate, data.reward); } function logUnstake(Vesting memory data) private { emit LogUnstake(msg.sender, block.timestamp, data.uid, data.erc721, data.tokenId, data.poolId, data.duration, data.startDate, data.endDate, data.reward); } function nftHash(address nft, uint256 tokenId) private pure returns (bytes32) { return keccak256(abi.encode(nft, tokenId)); } function sendReward(address erc20, address recipient, uint amount) private returns (uint256) { uint _balance = balance(); if(_balance == 0 || amount == 0) { return 0; } if(_balance >= amount) { TransferHelper.safeTransfer(erc20, recipient, amount); return amount; } TransferHelper.safeTransfer(erc20, recipient, _balance); return _balance; } function participants() public view returns (uint256) { return stakerCount; } function vesting(address erc721, uint256 tokenId) public view returns (Vesting memory data) { return staker[nftHash(erc721, tokenId)]; } function vestings(address[] calldata erc721, uint256[] calldata tokenId) public view returns (Vesting[] memory data) { data = new Vesting[](erc721.length); for (uint256 i = 0; i < erc721.length; i++) { data[i] = staker[nftHash(erc721[i], tokenId[i])]; } } }
{ "optimizer": { "enabled": true, "runs": 10000 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"createdAt","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"uid","type":"bytes32"},{"indexed":false,"internalType":"address","name":"erc721","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"LogStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"createdAt","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"uid","type":"bytes32"},{"indexed":false,"internalType":"address","name":"erc721","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"LogUnstake","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":[{"internalType":"address[]","name":"erc721","type":"address[]"},{"internalType":"uint256[]","name":"duration","type":"uint256[]"},{"internalType":"uint256[]","name":"reward","type":"uint256[]"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"claimAndStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getPools","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"erc20","type":"address"},{"internalType":"address","name":"erc721","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initiated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"participants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"ids","type":"bytes32[]"}],"name":"removePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address[]","name":"erc721","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"bool[]","name":"hasExtra","type":"bool[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingNft","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"erc721","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"vesting","outputs":[{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"address","name":"erc721","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"}],"internalType":"struct Staking.Vesting","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"vestings","outputs":[{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"address","name":"erc721","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"}],"internalType":"struct Staking.Vesting[]","name":"data","type":"tuple[]"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612d0f8061007a6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806372f702f3116100b2578063b69ef8a811610081578063cfa4a6a611610066578063cfa4a6a614610290578063e5b47522146102cb578063f2fde38b146102de57600080fd5b8063b69ef8a814610275578063bcca1e041461027d57600080fd5b806372f702f31461021c57806386863ec6146102345780638da5cb5b146102475780639f1185361461025857600080fd5b8063673a2a1f116101095780636b130999116100ee5780636b130999146101e25780636c4470fb14610202578063715018a61461021457600080fd5b8063673a2a1f1461019f5780636982d815146101b757600080fd5b80630666c6811461013b5780630f3da11814610150578063143ee5b9146101635780633628a8ed1461018c575b600080fd5b61014e610149366004612348565b6102f1565b005b61014e61015e3660046124c7565b61038a565b61017661017136600461255b565b610454565b6040516101839190612587565b60405180910390f35b61014e61019a3660046125e8565b610542565b6101a7610ac8565b604051610183949392919061268d565b6007546101ca906001600160a01b031681565b6040516001600160a01b039091168152602001610183565b6101f56101f036600461278c565b610d19565b60405161018391906127fd565b600a545b604051908152602001610183565b61014e610ef5565b6006546101ca9061010090046001600160a01b031681565b61014e61024236600461289e565b610f5b565b6000546001600160a01b03166101ca565b6006546102659060ff1681565b6040519015158152602001610183565b6102066111ad565b61014e61028b3660046125e8565b61123d565b6102a361029e3660046128df565b611593565b604080519485526001600160a01b039093166020850152918301526060820152608001610183565b61014e6102d9366004612906565b6115fc565b61014e6102ec366004612a06565b611af9565b6000546001600160a01b031633146103505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b81518110156103865761037e82828151811061037157610371612a23565b6020026020010151611bdb565b600101610353565b5050565b6000546001600160a01b031633146103e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b60005b835181101561044e5761044684828151811061040557610405612a23565b602002602001015184838151811061041f5761041f612a23565b602002602001015184848151811061043957610439612a23565b6020026020010151611be4565b6001016103e7565b50505050565b60408051610100810182526000808252602080830182905282840182905260608084018390526080840183905260a0840183905260c0840183905260e0840183905284516001600160a01b03881681840152808601879052855180820387018152910190945283519301929092209091600991815260208082019290925260409081016000208151610100810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460e082015290505b92915050565b60008251118015610554575080518251145b6105a05760405162461bcd60e51b815260206004820152600b60248201527f696e707574206572726f720000000000000000000000000000000000000000006044820152606401610347565b60006105aa6111ad565b116105f75760405162461bcd60e51b815260206004820152600a60248201527f706f6f6c20656d707479000000000000000000000000000000000000000000006044820152606401610347565b6000805b8351811015610aab57336001600160a01b031684828151811061062057610620612a23565b60200260200101516001600160a01b0316636352211e85848151811061064857610648612a23565b60200260200101516040518263ffffffff1660e01b815260040161066e91815260200190565b602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190612a52565b6001600160a01b0316146107055760405162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610347565b600061077b85838151811061071c5761071c612a23565b602002602001015185848151811061073657610736612a23565b6020026020010151604080516001600160a01b038416602082015290810182905260009060600160405160208183030381529060405280519060200120905092915050565b600081815260096020908152604091829020825161010081018452815480825260018301546001600160a01b0316938201939093526002820154938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c08401526007015460e08301529192509061083d5760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610347565b8060c0015142116108905760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420726561636865642079657400000000000000000000000000000000006044820152606401610347565b606081810180516000818152600260208181526040928390208351968701845280546001600160a01b031687526001810154918701919091520154930192909252518114801561090e57508684815181106108ed576108ed612a23565b60200260200101516001600160a01b031682602001516001600160a01b0316145b61095a5760405162461bcd60e51b815260206004820152600e60248201527f706f6f6c206e6f7420666f756e640000000000000000000000000000000000006044820152606401610347565b61096382611c0f565b60e08201516109729086612a9e565b9450600060405180610100016040528085815260200189878151811061099a5761099a612a23565b60200260200101516001600160a01b031681526020018887815181106109c2576109c2612a23565b6020026020010151815260200184606001518152602001846080015181526020014281526020018460800151426109f99190612a9e565b815260e08581015160209283015260008781526009835260409081902084518155928401516001840180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790558301516002830155606083015160038301556080830151600483015560a0830151600583015560c083015160068301558201516007909101559050610a9b81611cbe565b5050600190920191506105fb9050565b5060065461044e9061010090046001600160a01b03163383611d66565b6060806060806000610ad960015490565b905060008167ffffffffffffffff811115610af657610af66122a6565b604051908082528060200260200182016040528015610b1f578160200160208202803683370190505b50905060008267ffffffffffffffff811115610b3d57610b3d6122a6565b604051908082528060200260200182016040528015610b66578160200160208202803683370190505b50905060008367ffffffffffffffff811115610b8457610b846122a6565b604051908082528060200260200182016040528015610bad578160200160208202803683370190505b50905060008467ffffffffffffffff811115610bcb57610bcb6122a6565b604051908082528060200260200182016040528015610bf4578160200160208202803683370190505b50905060005b600154811015610d09576000610c0f82611dbd565b9050600080600080610c6185600081815260026020818152604092839020835160608101855281546001600160a01b031680825260018301549382018490529190930154929093018290529293919291565b9350935093509350838a8781518110610c7c57610c7c612a23565b60200260200101818152505082898781518110610c9b57610c9b612a23565b60200260200101906001600160a01b031690816001600160a01b03168152505081888781518110610cce57610cce612a23565b60200260200101818152505080878781518110610ced57610ced612a23565b6020908102919091010152505060019093019250610bfa915050565b5092989197509550909350915050565b60608367ffffffffffffffff811115610d3457610d346122a6565b604051908082528060200260200182016040528015610dc157816020015b604080516101008101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d525790505b50905060005b84811015610eec5760096000610e53888885818110610de857610de8612a23565b9050602002016020810190610dfd9190612a06565b878786818110610e0f57610e0f612a23565b90506020020135604080516001600160a01b038416602082015290810182905260009060600160405160208183030381529060405280519060200120905092915050565b815260208082019290925260409081016000208151610100810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460e08201528251839083908110610ed957610ed9612a23565b6020908102919091010152600101610dc7565b50949350505050565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b610f596000611de4565b565b6000546001600160a01b03163314610fb55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b60065460ff16156110085760405162461bcd60e51b815260206004820152601160248201527f616c726561647920696e697469617465640000000000000000000000000000006044820152606401610347565b600680547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0386811691820292909217909255600780547fffffffffffffffffffffffff000000000000000000000000000000000000000016918516919091179055604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa1580156110c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ed9190612ab1565b6110f890600a612bed565b600855600754611129906001600160a01b031661111683600a612bf9565b600854611124906064612bf9565b611be4565b600754611153906001600160a01b031661114483601e612bf9565b600854611124906101f4612bf9565b60075461117d906001600160a01b031661116e83605a612bf9565b600854611124906107d0612bf9565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009161010090046001600160a01b0316906370a0823190602401602060405180830381865afa158015611214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112389190612ab1565b905090565b6000825111801561124f575080518251145b61129b5760405162461bcd60e51b815260206004820152600b60248201527f696e707574206572726f720000000000000000000000000000000000000000006044820152606401610347565b6000805b8351811015610aab57336001600160a01b03168482815181106112c4576112c4612a23565b60200260200101516001600160a01b0316636352211e8584815181106112ec576112ec612a23565b60200260200101516040518263ffffffff1660e01b815260040161131291815260200190565b602060405180830381865afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190612a52565b6001600160a01b0316146113a95760405162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610347565b6000600960006113de8785815181106113c4576113c4612a23565b602002602001015187868151811061073657610736612a23565b81526020808201929092526040908101600020815161010081018352815480825260018301546001600160a01b0316948201949094526002820154928101929092526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460e0820152915061149f5760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610347565b8060c0015142116114f25760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420726561636865642079657400000000000000000000000000000000006044820152606401610347565b6114fb81611c0f565b60e081015161150a9084612a9e565b92506001600a600082825461151f9190612c10565b9091555050516000908152600960205260408120818155600180820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560028201839055600382018390556004820183905560058201839055600682018390556007909101919091550161129f565b6000806000806000806000806115e989600081815260026020818152604092839020835160608101855281546001600160a01b031680825260018301549382018490529190930154929093018290529293919291565b929c919b50995090975095505050505050565b6000835111801561160e575081518351145b801561161b575080518351145b6116675760405162461bcd60e51b815260206004820152600b60248201527f696e707574206572726f720000000000000000000000000000000000000000006044820152606401610347565b60006116716111ad565b116116be5760405162461bcd60e51b815260206004820152600a60248201527f706f6f6c20656d707479000000000000000000000000000000000000000000006044820152606401610347565b60008060008061170e88600081815260026020818152604092839020835160608101855281546001600160a01b031680825260018301549382018490529190930154929093018290529293919291565b935093509350935060005b8751811015611aee57600061175389838151811061173957611739612a23565b602002602001015189848151811061073657610736612a23565b9050858a14801561178e5750846001600160a01b031689838151811061177b5761177b612a23565b60200260200101516001600160a01b0316145b6117da5760405162461bcd60e51b815260206004820152600e60248201527f706f6f6c206e6f7420666f756e640000000000000000000000000000000000006044820152606401610347565b600081815260096020526040902054156118365760405162461bcd60e51b815260206004820152600e60248201527f616c7265616479207374616b65640000000000000000000000000000000000006044820152606401610347565b336001600160a01b031689838151811061185257611852612a23565b60200260200101516001600160a01b0316636352211e8a858151811061187a5761187a612a23565b60200260200101516040518263ffffffff1660e01b81526004016118a091815260200190565b602060405180830381865afa1580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e19190612a52565b6001600160a01b0316146119375760405162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610347565b600083905089838151811061194e5761194e612a23565b60209081029190910101516007546001600160a01b03908116911614801561198c575087838151811061198357611983612a23565b60200260200101515b156119ae57600061199e82600a611e4c565b90506119aa8183612a9e565b9150505b60006040518061010001604052808481526020018c86815181106119d4576119d4612a23565b60200260200101516001600160a01b031681526020018b86815181106119fc576119fc612a23565b602002602001015181526020018d81526020018781526020014281526020018742611a279190612a9e565b8152602090810184905260008581526009825260409081902083518155918301516001830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0820151600682015560e08201516007909101559050611ac781611cbe565b6001600a6000828254611ada9190612a9e565b909155505060019093019250611719915050565b505050505050505050565b6000546001600160a01b03163314611b535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b6001600160a01b038116611bcf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610347565b611bd881611de4565b50565b611bd881611e70565b611bf2600554848484611f9c565b600160056000828254611c059190612a9e565b9091555050505050565b805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e0808f01518b51338152429e81019e909e529a8d019d909d526001600160a01b03909a16968b0196909652928901959095529387019190915290850191909152938301939093526101008201526101208101919091527f4ad4e00f7548f7da9a1763c1d447789dbf141b8b91b13b01df350ab643423ed890610140015b60405180910390a150565b805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e0808f01518b51338152429e81019e909e529a8d019d909d526001600160a01b03909a16968b0196909652928901959095529387019190915290850191909152938301939093526101008201526101208101919091527f9eb120f0fdd9bcf5e5901cd6709f4c7d3d3d01d0752036bb5b71d4630ae00ac89061014001611cb3565b600080611d716111ad565b9050801580611d7e575082155b15611d8d576000915050611db6565b828110611da857611d9f858585612137565b82915050611db6565b611db3858583612137565b90505b9392505050565b600060018281548110611dd257611dd2612a23565b90600052602060002001549050919050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808211611e5a57600080fd5b6064611e668385612bf9565b611db69190612c23565b60008181526004602052604090205460ff16611e895750565b600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810186905591018490556003909252822054815490929190611f14908290612c10565b81548110611f2457611f24612a23565b60009182526020808320909101548083526003909152604080832085905585835282209190915560018054919250829184908110611f6457611f64612a23565b6000918252602090912001556001805480611f8157611f81612c5e565b60019003818190600052602060002001600090559055505050565b6040805160208082018790526001600160a01b0386168284018190526060830186905260808084018690528451808503909101815260a084018086528151918401919091206101008501865291815260c0840187905260e0909301859052600081815260049092529290205460ff161561206b57600082815260026020818152604092839020845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781559084015160018201559183015191015561212f565b6000828152600460209081526040808320805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681179091556002808452828520865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781558685015181840155868401519101558054600390935290832082905581810181559091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018290555b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916121c19190612c8d565b6000604051808303816000865af19150503d80600081146121fe576040519150601f19603f3d011682016040523d82523d6000602084013e612203565b606091505b509150915081801561222d57508051158061222d57508080602001905181019061222d9190612cbc565b61229f5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610347565b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561231c5761231c6122a6565b604052919050565b600067ffffffffffffffff82111561233e5761233e6122a6565b5060051b60200190565b60006020828403121561235a57600080fd5b813567ffffffffffffffff81111561237157600080fd5b8201601f8101841361238257600080fd5b803561239561239082612324565b6122d5565b8082825260208201915060208360051b8501019250868311156123b757600080fd5b6020840193505b828410156123d95783358252602093840193909101906123be565b9695505050505050565b6001600160a01b0381168114611bd857600080fd5b600082601f83011261240957600080fd5b813561241761239082612324565b8082825260208201915060208360051b86010192508583111561243957600080fd5b602085015b8381101561245f578035612451816123e3565b83526020928301920161243e565b5095945050505050565b600082601f83011261247a57600080fd5b813561248861239082612324565b8082825260208201915060208360051b8601019250858311156124aa57600080fd5b602085015b8381101561245f5780358352602092830192016124af565b6000806000606084860312156124dc57600080fd5b833567ffffffffffffffff8111156124f357600080fd5b6124ff868287016123f8565b935050602084013567ffffffffffffffff81111561251c57600080fd5b61252886828701612469565b925050604084013567ffffffffffffffff81111561254557600080fd5b61255186828701612469565b9150509250925092565b6000806040838503121561256e57600080fd5b8235612579816123e3565b946020939093013593505050565b610100810161053c8284805182526001600160a01b03602082015116602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b600080604083850312156125fb57600080fd5b823567ffffffffffffffff81111561261257600080fd5b61261e858286016123f8565b925050602083013567ffffffffffffffff81111561263b57600080fd5b61264785828601612469565b9150509250929050565b600081518084526020840193506020830160005b82811015612683578151865260209586019590910190600101612665565b5093949350505050565b60808082528551908201819052600090602087019060a0840190835b818110156126c75783518352602093840193909201916001016126a9565b50508381036020808601919091528751808352918101925087019060005b8181101561270c5782516001600160a01b03168452602093840193909201916001016126e5565b50505082810360408401526127218186612651565b905082810360608401526127358185612651565b979650505050505050565b60008083601f84011261275257600080fd5b50813567ffffffffffffffff81111561276a57600080fd5b6020830191508360208260051b850101111561278557600080fd5b9250929050565b600080600080604085870312156127a257600080fd5b843567ffffffffffffffff8111156127b957600080fd5b6127c587828801612740565b909550935050602085013567ffffffffffffffff8111156127e557600080fd5b6127f187828801612740565b95989497509550505050565b602080825282518282018190526000918401906040840190835b818110156128935761287c838551805182526001600160a01b03602082015116602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b602093909301926101009290920191600101612817565b509095945050505050565b6000806000606084860312156128b357600080fd5b83356128be816123e3565b925060208401356128ce816123e3565b929592945050506040919091013590565b6000602082840312156128f157600080fd5b5035919050565b8015158114611bd857600080fd5b6000806000806080858703121561291c57600080fd5b84359350602085013567ffffffffffffffff81111561293a57600080fd5b612946878288016123f8565b935050604085013567ffffffffffffffff81111561296357600080fd5b61296f87828801612469565b925050606085013567ffffffffffffffff81111561298c57600080fd5b8501601f8101871361299d57600080fd5b80356129ab61239082612324565b8082825260208201915060208360051b8501019250898311156129cd57600080fd5b6020840193505b828410156129f85783356129e7816128f8565b8252602093840193909101906129d4565b969995985093965050505050565b600060208284031215612a1857600080fd5b8135611db6816123e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612a6457600080fd5b8151611db6816123e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561053c5761053c612a6f565b600060208284031215612ac357600080fd5b5051919050565b6001815b6001841115612b0557808504811115612ae957612ae9612a6f565b6001841615612af757908102905b60019390931c928002612ace565b935093915050565b600082612b1c5750600161053c565b81612b295750600061053c565b8160018114612b3f5760028114612b4957612b65565b600191505061053c565b60ff841115612b5a57612b5a612a6f565b50506001821b61053c565b5060208310610133831016604e8410600b8410161715612b88575081810a61053c565b612bb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612aca565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612be557612be5612a6f565b029392505050565b6000611db68383612b0d565b808202811582820484141761053c5761053c612a6f565b8181038181111561053c5761053c612a6f565b600082612c59577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000825160005b81811015612cae5760208186018101518583015201612c94565b506000920191825250919050565b600060208284031215612cce57600080fd5b8151611db6816128f856fea26469706673582212209c555257fa4c833a6b238ce357412b6cfd1e3b9eccc0f81e109a818839a3568664736f6c634300081b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101365760003560e01c806372f702f3116100b2578063b69ef8a811610081578063cfa4a6a611610066578063cfa4a6a614610290578063e5b47522146102cb578063f2fde38b146102de57600080fd5b8063b69ef8a814610275578063bcca1e041461027d57600080fd5b806372f702f31461021c57806386863ec6146102345780638da5cb5b146102475780639f1185361461025857600080fd5b8063673a2a1f116101095780636b130999116100ee5780636b130999146101e25780636c4470fb14610202578063715018a61461021457600080fd5b8063673a2a1f1461019f5780636982d815146101b757600080fd5b80630666c6811461013b5780630f3da11814610150578063143ee5b9146101635780633628a8ed1461018c575b600080fd5b61014e610149366004612348565b6102f1565b005b61014e61015e3660046124c7565b61038a565b61017661017136600461255b565b610454565b6040516101839190612587565b60405180910390f35b61014e61019a3660046125e8565b610542565b6101a7610ac8565b604051610183949392919061268d565b6007546101ca906001600160a01b031681565b6040516001600160a01b039091168152602001610183565b6101f56101f036600461278c565b610d19565b60405161018391906127fd565b600a545b604051908152602001610183565b61014e610ef5565b6006546101ca9061010090046001600160a01b031681565b61014e61024236600461289e565b610f5b565b6000546001600160a01b03166101ca565b6006546102659060ff1681565b6040519015158152602001610183565b6102066111ad565b61014e61028b3660046125e8565b61123d565b6102a361029e3660046128df565b611593565b604080519485526001600160a01b039093166020850152918301526060820152608001610183565b61014e6102d9366004612906565b6115fc565b61014e6102ec366004612a06565b611af9565b6000546001600160a01b031633146103505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b81518110156103865761037e82828151811061037157610371612a23565b6020026020010151611bdb565b600101610353565b5050565b6000546001600160a01b031633146103e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b60005b835181101561044e5761044684828151811061040557610405612a23565b602002602001015184838151811061041f5761041f612a23565b602002602001015184848151811061043957610439612a23565b6020026020010151611be4565b6001016103e7565b50505050565b60408051610100810182526000808252602080830182905282840182905260608084018390526080840183905260a0840183905260c0840183905260e0840183905284516001600160a01b03881681840152808601879052855180820387018152910190945283519301929092209091600991815260208082019290925260409081016000208151610100810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460e082015290505b92915050565b60008251118015610554575080518251145b6105a05760405162461bcd60e51b815260206004820152600b60248201527f696e707574206572726f720000000000000000000000000000000000000000006044820152606401610347565b60006105aa6111ad565b116105f75760405162461bcd60e51b815260206004820152600a60248201527f706f6f6c20656d707479000000000000000000000000000000000000000000006044820152606401610347565b6000805b8351811015610aab57336001600160a01b031684828151811061062057610620612a23565b60200260200101516001600160a01b0316636352211e85848151811061064857610648612a23565b60200260200101516040518263ffffffff1660e01b815260040161066e91815260200190565b602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af9190612a52565b6001600160a01b0316146107055760405162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610347565b600061077b85838151811061071c5761071c612a23565b602002602001015185848151811061073657610736612a23565b6020026020010151604080516001600160a01b038416602082015290810182905260009060600160405160208183030381529060405280519060200120905092915050565b600081815260096020908152604091829020825161010081018452815480825260018301546001600160a01b0316938201939093526002820154938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c08401526007015460e08301529192509061083d5760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610347565b8060c0015142116108905760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420726561636865642079657400000000000000000000000000000000006044820152606401610347565b606081810180516000818152600260208181526040928390208351968701845280546001600160a01b031687526001810154918701919091520154930192909252518114801561090e57508684815181106108ed576108ed612a23565b60200260200101516001600160a01b031682602001516001600160a01b0316145b61095a5760405162461bcd60e51b815260206004820152600e60248201527f706f6f6c206e6f7420666f756e640000000000000000000000000000000000006044820152606401610347565b61096382611c0f565b60e08201516109729086612a9e565b9450600060405180610100016040528085815260200189878151811061099a5761099a612a23565b60200260200101516001600160a01b031681526020018887815181106109c2576109c2612a23565b6020026020010151815260200184606001518152602001846080015181526020014281526020018460800151426109f99190612a9e565b815260e08581015160209283015260008781526009835260409081902084518155928401516001840180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790558301516002830155606083015160038301556080830151600483015560a0830151600583015560c083015160068301558201516007909101559050610a9b81611cbe565b5050600190920191506105fb9050565b5060065461044e9061010090046001600160a01b03163383611d66565b6060806060806000610ad960015490565b905060008167ffffffffffffffff811115610af657610af66122a6565b604051908082528060200260200182016040528015610b1f578160200160208202803683370190505b50905060008267ffffffffffffffff811115610b3d57610b3d6122a6565b604051908082528060200260200182016040528015610b66578160200160208202803683370190505b50905060008367ffffffffffffffff811115610b8457610b846122a6565b604051908082528060200260200182016040528015610bad578160200160208202803683370190505b50905060008467ffffffffffffffff811115610bcb57610bcb6122a6565b604051908082528060200260200182016040528015610bf4578160200160208202803683370190505b50905060005b600154811015610d09576000610c0f82611dbd565b9050600080600080610c6185600081815260026020818152604092839020835160608101855281546001600160a01b031680825260018301549382018490529190930154929093018290529293919291565b9350935093509350838a8781518110610c7c57610c7c612a23565b60200260200101818152505082898781518110610c9b57610c9b612a23565b60200260200101906001600160a01b031690816001600160a01b03168152505081888781518110610cce57610cce612a23565b60200260200101818152505080878781518110610ced57610ced612a23565b6020908102919091010152505060019093019250610bfa915050565b5092989197509550909350915050565b60608367ffffffffffffffff811115610d3457610d346122a6565b604051908082528060200260200182016040528015610dc157816020015b604080516101008101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d525790505b50905060005b84811015610eec5760096000610e53888885818110610de857610de8612a23565b9050602002016020810190610dfd9190612a06565b878786818110610e0f57610e0f612a23565b90506020020135604080516001600160a01b038416602082015290810182905260009060600160405160208183030381529060405280519060200120905092915050565b815260208082019290925260409081016000208151610100810183528154815260018201546001600160a01b0316938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460e08201528251839083908110610ed957610ed9612a23565b6020908102919091010152600101610dc7565b50949350505050565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b610f596000611de4565b565b6000546001600160a01b03163314610fb55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b60065460ff16156110085760405162461bcd60e51b815260206004820152601160248201527f616c726561647920696e697469617465640000000000000000000000000000006044820152606401610347565b600680547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0386811691820292909217909255600780547fffffffffffffffffffffffff000000000000000000000000000000000000000016918516919091179055604080517f313ce567000000000000000000000000000000000000000000000000000000008152905163313ce567916004808201926020929091908290030181865afa1580156110c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ed9190612ab1565b6110f890600a612bed565b600855600754611129906001600160a01b031661111683600a612bf9565b600854611124906064612bf9565b611be4565b600754611153906001600160a01b031661114483601e612bf9565b600854611124906101f4612bf9565b60075461117d906001600160a01b031661116e83605a612bf9565b600854611124906107d0612bf9565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009161010090046001600160a01b0316906370a0823190602401602060405180830381865afa158015611214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112389190612ab1565b905090565b6000825111801561124f575080518251145b61129b5760405162461bcd60e51b815260206004820152600b60248201527f696e707574206572726f720000000000000000000000000000000000000000006044820152606401610347565b6000805b8351811015610aab57336001600160a01b03168482815181106112c4576112c4612a23565b60200260200101516001600160a01b0316636352211e8584815181106112ec576112ec612a23565b60200260200101516040518263ffffffff1660e01b815260040161131291815260200190565b602060405180830381865afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190612a52565b6001600160a01b0316146113a95760405162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610347565b6000600960006113de8785815181106113c4576113c4612a23565b602002602001015187868151811061073657610736612a23565b81526020808201929092526040908101600020815161010081018352815480825260018301546001600160a01b0316948201949094526002820154928101929092526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460e0820152915061149f5760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152606401610347565b8060c0015142116114f25760405162461bcd60e51b815260206004820152600f60248201527f6e6f7420726561636865642079657400000000000000000000000000000000006044820152606401610347565b6114fb81611c0f565b60e081015161150a9084612a9e565b92506001600a600082825461151f9190612c10565b9091555050516000908152600960205260408120818155600180820180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560028201839055600382018390556004820183905560058201839055600682018390556007909101919091550161129f565b6000806000806000806000806115e989600081815260026020818152604092839020835160608101855281546001600160a01b031680825260018301549382018490529190930154929093018290529293919291565b929c919b50995090975095505050505050565b6000835111801561160e575081518351145b801561161b575080518351145b6116675760405162461bcd60e51b815260206004820152600b60248201527f696e707574206572726f720000000000000000000000000000000000000000006044820152606401610347565b60006116716111ad565b116116be5760405162461bcd60e51b815260206004820152600a60248201527f706f6f6c20656d707479000000000000000000000000000000000000000000006044820152606401610347565b60008060008061170e88600081815260026020818152604092839020835160608101855281546001600160a01b031680825260018301549382018490529190930154929093018290529293919291565b935093509350935060005b8751811015611aee57600061175389838151811061173957611739612a23565b602002602001015189848151811061073657610736612a23565b9050858a14801561178e5750846001600160a01b031689838151811061177b5761177b612a23565b60200260200101516001600160a01b0316145b6117da5760405162461bcd60e51b815260206004820152600e60248201527f706f6f6c206e6f7420666f756e640000000000000000000000000000000000006044820152606401610347565b600081815260096020526040902054156118365760405162461bcd60e51b815260206004820152600e60248201527f616c7265616479207374616b65640000000000000000000000000000000000006044820152606401610347565b336001600160a01b031689838151811061185257611852612a23565b60200260200101516001600160a01b0316636352211e8a858151811061187a5761187a612a23565b60200260200101516040518263ffffffff1660e01b81526004016118a091815260200190565b602060405180830381865afa1580156118bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e19190612a52565b6001600160a01b0316146119375760405162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e657200000000000000000000000000000000000000000000006044820152606401610347565b600083905089838151811061194e5761194e612a23565b60209081029190910101516007546001600160a01b03908116911614801561198c575087838151811061198357611983612a23565b60200260200101515b156119ae57600061199e82600a611e4c565b90506119aa8183612a9e565b9150505b60006040518061010001604052808481526020018c86815181106119d4576119d4612a23565b60200260200101516001600160a01b031681526020018b86815181106119fc576119fc612a23565b602002602001015181526020018d81526020018781526020014281526020018742611a279190612a9e565b8152602090810184905260008581526009825260409081902083518155918301516001830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0820151600682015560e08201516007909101559050611ac781611cbe565b6001600a6000828254611ada9190612a9e565b909155505060019093019250611719915050565b505050505050505050565b6000546001600160a01b03163314611b535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610347565b6001600160a01b038116611bcf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610347565b611bd881611de4565b50565b611bd881611e70565b611bf2600554848484611f9c565b600160056000828254611c059190612a9e565b9091555050505050565b805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e0808f01518b51338152429e81019e909e529a8d019d909d526001600160a01b03909a16968b0196909652928901959095529387019190915290850191909152938301939093526101008201526101208101919091527f4ad4e00f7548f7da9a1763c1d447789dbf141b8b91b13b01df350ab643423ed890610140015b60405180910390a150565b805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e0808f01518b51338152429e81019e909e529a8d019d909d526001600160a01b03909a16968b0196909652928901959095529387019190915290850191909152938301939093526101008201526101208101919091527f9eb120f0fdd9bcf5e5901cd6709f4c7d3d3d01d0752036bb5b71d4630ae00ac89061014001611cb3565b600080611d716111ad565b9050801580611d7e575082155b15611d8d576000915050611db6565b828110611da857611d9f858585612137565b82915050611db6565b611db3858583612137565b90505b9392505050565b600060018281548110611dd257611dd2612a23565b90600052602060002001549050919050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808211611e5a57600080fd5b6064611e668385612bf9565b611db69190612c23565b60008181526004602052604090205460ff16611e895750565b600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280835281842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181810186905591018490556003909252822054815490929190611f14908290612c10565b81548110611f2457611f24612a23565b60009182526020808320909101548083526003909152604080832085905585835282209190915560018054919250829184908110611f6457611f64612a23565b6000918252602090912001556001805480611f8157611f81612c5e565b60019003818190600052602060002001600090559055505050565b6040805160208082018790526001600160a01b0386168284018190526060830186905260808084018690528451808503909101815260a084018086528151918401919091206101008501865291815260c0840187905260e0909301859052600081815260049092529290205460ff161561206b57600082815260026020818152604092839020845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781559084015160018201559183015191015561212f565b6000828152600460209081526040808320805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911681179091556002808452828520865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161781558685015181840155868401519101558054600390935290832082905581810181559091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018290555b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916121c19190612c8d565b6000604051808303816000865af19150503d80600081146121fe576040519150601f19603f3d011682016040523d82523d6000602084013e612203565b606091505b509150915081801561222d57508051158061222d57508080602001905181019061222d9190612cbc565b61229f5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610347565b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561231c5761231c6122a6565b604052919050565b600067ffffffffffffffff82111561233e5761233e6122a6565b5060051b60200190565b60006020828403121561235a57600080fd5b813567ffffffffffffffff81111561237157600080fd5b8201601f8101841361238257600080fd5b803561239561239082612324565b6122d5565b8082825260208201915060208360051b8501019250868311156123b757600080fd5b6020840193505b828410156123d95783358252602093840193909101906123be565b9695505050505050565b6001600160a01b0381168114611bd857600080fd5b600082601f83011261240957600080fd5b813561241761239082612324565b8082825260208201915060208360051b86010192508583111561243957600080fd5b602085015b8381101561245f578035612451816123e3565b83526020928301920161243e565b5095945050505050565b600082601f83011261247a57600080fd5b813561248861239082612324565b8082825260208201915060208360051b8601019250858311156124aa57600080fd5b602085015b8381101561245f5780358352602092830192016124af565b6000806000606084860312156124dc57600080fd5b833567ffffffffffffffff8111156124f357600080fd5b6124ff868287016123f8565b935050602084013567ffffffffffffffff81111561251c57600080fd5b61252886828701612469565b925050604084013567ffffffffffffffff81111561254557600080fd5b61255186828701612469565b9150509250925092565b6000806040838503121561256e57600080fd5b8235612579816123e3565b946020939093013593505050565b610100810161053c8284805182526001600160a01b03602082015116602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b600080604083850312156125fb57600080fd5b823567ffffffffffffffff81111561261257600080fd5b61261e858286016123f8565b925050602083013567ffffffffffffffff81111561263b57600080fd5b61264785828601612469565b9150509250929050565b600081518084526020840193506020830160005b82811015612683578151865260209586019590910190600101612665565b5093949350505050565b60808082528551908201819052600090602087019060a0840190835b818110156126c75783518352602093840193909201916001016126a9565b50508381036020808601919091528751808352918101925087019060005b8181101561270c5782516001600160a01b03168452602093840193909201916001016126e5565b50505082810360408401526127218186612651565b905082810360608401526127358185612651565b979650505050505050565b60008083601f84011261275257600080fd5b50813567ffffffffffffffff81111561276a57600080fd5b6020830191508360208260051b850101111561278557600080fd5b9250929050565b600080600080604085870312156127a257600080fd5b843567ffffffffffffffff8111156127b957600080fd5b6127c587828801612740565b909550935050602085013567ffffffffffffffff8111156127e557600080fd5b6127f187828801612740565b95989497509550505050565b602080825282518282018190526000918401906040840190835b818110156128935761287c838551805182526001600160a01b03602082015116602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b602093909301926101009290920191600101612817565b509095945050505050565b6000806000606084860312156128b357600080fd5b83356128be816123e3565b925060208401356128ce816123e3565b929592945050506040919091013590565b6000602082840312156128f157600080fd5b5035919050565b8015158114611bd857600080fd5b6000806000806080858703121561291c57600080fd5b84359350602085013567ffffffffffffffff81111561293a57600080fd5b612946878288016123f8565b935050604085013567ffffffffffffffff81111561296357600080fd5b61296f87828801612469565b925050606085013567ffffffffffffffff81111561298c57600080fd5b8501601f8101871361299d57600080fd5b80356129ab61239082612324565b8082825260208201915060208360051b8501019250898311156129cd57600080fd5b6020840193505b828410156129f85783356129e7816128f8565b8252602093840193909101906129d4565b969995985093965050505050565b600060208284031215612a1857600080fd5b8135611db6816123e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612a6457600080fd5b8151611db6816123e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561053c5761053c612a6f565b600060208284031215612ac357600080fd5b5051919050565b6001815b6001841115612b0557808504811115612ae957612ae9612a6f565b6001841615612af757908102905b60019390931c928002612ace565b935093915050565b600082612b1c5750600161053c565b81612b295750600061053c565b8160018114612b3f5760028114612b4957612b65565b600191505061053c565b60ff841115612b5a57612b5a612a6f565b50506001821b61053c565b5060208310610133831016604e8410600b8410161715612b88575081810a61053c565b612bb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612aca565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612be557612be5612a6f565b029392505050565b6000611db68383612b0d565b808202811582820484141761053c5761053c612a6f565b8181038181111561053c5761053c612a6f565b600082612c59577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000825160005b81811015612cae5760208186018101518583015201612c94565b506000920191825250919050565b600060208284031215612cce57600080fd5b8151611db6816128f856fea26469706673582212209c555257fa4c833a6b238ce357412b6cfd1e3b9eccc0f81e109a818839a3568664736f6c634300081b0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.