More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18018767 | 335 days ago | IN | 0 ETH | 0.00099243 | ||||
Claim | 18018764 | 335 days ago | IN | 0 ETH | 0.00056234 | ||||
Withdraw | 18018753 | 335 days ago | IN | 0 ETH | 0.00113339 | ||||
Claim | 18018750 | 335 days ago | IN | 0 ETH | 0.0006468 | ||||
Withdraw | 18018736 | 335 days ago | IN | 0 ETH | 0.00111311 | ||||
Claim | 18018733 | 335 days ago | IN | 0 ETH | 0.00063226 | ||||
Claim | 18010262 | 336 days ago | IN | 0 ETH | 0.00046463 | ||||
Claim | 18009782 | 336 days ago | IN | 0 ETH | 0.0004409 | ||||
Withdraw | 18009711 | 336 days ago | IN | 0 ETH | 0.00067953 | ||||
Claim | 18009709 | 336 days ago | IN | 0 ETH | 0.0004761 | ||||
Withdraw | 18007849 | 336 days ago | IN | 0 ETH | 0.00097794 | ||||
Claim | 18007838 | 336 days ago | IN | 0 ETH | 0.00052623 | ||||
Withdraw | 18005094 | 337 days ago | IN | 0 ETH | 0.00097688 | ||||
Withdraw | 18003010 | 337 days ago | IN | 0 ETH | 0.00091722 | ||||
Claim | 17999757 | 338 days ago | IN | 0 ETH | 0.00073883 | ||||
Claim | 17998724 | 338 days ago | IN | 0 ETH | 0.00090508 | ||||
Claim | 17995795 | 338 days ago | IN | 0 ETH | 0.00052094 | ||||
Claim | 17995420 | 338 days ago | IN | 0 ETH | 0.00053741 | ||||
Claim | 17995344 | 338 days ago | IN | 0 ETH | 0.00054638 | ||||
Claim | 17995319 | 338 days ago | IN | 0 ETH | 0.0005649 | ||||
Claim | 17995256 | 338 days ago | IN | 0 ETH | 0.00054703 | ||||
Claim | 17995213 | 338 days ago | IN | 0 ETH | 0.00059865 | ||||
Claim | 17995097 | 338 days ago | IN | 0 ETH | 0.00087253 | ||||
Set Token | 17995019 | 338 days ago | IN | 0 ETH | 0.00063956 | ||||
0x60806040 | 17994812 | 338 days ago | IN | 0 ETH | 0.0117414 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18020869 | 335 days ago | 0.00210687 ETH | ||||
18020869 | 335 days ago | 0.00526718 ETH | ||||
18018764 | 335 days ago | 0.03703042 ETH | ||||
18018759 | 335 days ago | 0.00197277 ETH | ||||
18018759 | 335 days ago | 0.00493192 ETH | ||||
18018750 | 335 days ago | 0.11600821 ETH | ||||
18018733 | 335 days ago | 0.07900893 ETH | ||||
18010262 | 336 days ago | 0.05553857 ETH | ||||
18009782 | 336 days ago | 0.00610753 ETH | ||||
18009709 | 336 days ago | 0.06629128 ETH | ||||
18008963 | 336 days ago | 1.82115027 ETH | ||||
18007861 | 336 days ago | 0.0018351 ETH | ||||
18007861 | 336 days ago | 0.00458776 ETH | ||||
18007838 | 336 days ago | 0.00079794 ETH | ||||
18005094 | 337 days ago | 0.00290117 ETH | ||||
18003010 | 337 days ago | 0.05249507 ETH | ||||
18001886 | 337 days ago | 0.00376801 ETH | ||||
18001886 | 337 days ago | 0.00942004 ETH | ||||
18000174 | 338 days ago | 0.00181355 ETH | ||||
18000174 | 338 days ago | 0.00453388 ETH | ||||
17999770 | 338 days ago | 0.0019501 ETH | ||||
17999770 | 338 days ago | 0.00487527 ETH | ||||
17999757 | 338 days ago | 0.01875248 ETH | ||||
17999541 | 338 days ago | 0.00258315 ETH | ||||
17999541 | 338 days ago | 0.00645789 ETH |
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.8.1+commit.df193b15
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-25 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.1; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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); } } interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } contract Staking is Ownable { struct Share { uint depositTime; uint initialDeposit; uint sumETH; } mapping(address => Share) public shares; IERC20 public token; uint public sumETH; uint private constant PRECISION = 1e18; address private _taxWallet; uint public totalETH; modifier onlyToken() { assert(msg.sender == address(token)); _; } constructor() { _taxWallet = msg.sender; } function setToken(IERC20 token_) external onlyOwner { token = token_; super.renounceOwnership(); } function deposit(address who, uint amount) external onlyToken { require(amount > 0, "Amount must be greater than zero"); Share memory share = shares[who]; _payoutGainsUpdateShare(who, share, share.initialDeposit + amount, true); } function withdraw() external { Share memory share = shares[msg.sender]; require(share.initialDeposit > 0, "No initial deposit"); require(share.depositTime + 24 hours < block.timestamp, "withdraw after one day"); token.transfer(msg.sender, share.initialDeposit); _payoutGainsUpdateShare(msg.sender, share, 0, true); } function claim() external { Share memory share = shares[msg.sender]; require(share.initialDeposit > 0, "No initial deposit"); _payoutGainsUpdateShare(msg.sender, share, share.initialDeposit, false); } function _payoutGainsUpdateShare(address who, Share memory share, uint newAmount, bool resetTimer) private { uint gains; if (share.initialDeposit != 0) gains = share.initialDeposit * (sumETH - share.sumETH) / PRECISION; if (newAmount == 0) delete shares[who]; else if (resetTimer) shares[who] = Share(block.timestamp, newAmount, sumETH); else shares[who] = Share(share.depositTime, newAmount, sumETH); if (gains > 0) Address.sendValue(payable(who), gains); } function pending(address who) external view returns (uint) { Share memory share = shares[who]; return share.initialDeposit * (sumETH - share.sumETH) / PRECISION; } receive() external payable { if (msg.value == 0) return; uint balance = token.balanceOf(address(this)); if (balance == 0) return Address.sendValue(payable(_taxWallet), msg.value); uint amount = (msg.value / 5) * 3; uint gpus = amount * PRECISION / balance; sumETH += gpus; totalETH += amount; uint taxAmount = msg.value - amount; if (taxAmount > 0) Address.sendValue(payable(_taxWallet), taxAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"depositTime","type":"uint256"},{"internalType":"uint256","name":"initialDeposit","type":"uint256"},{"internalType":"uint256","name":"sumETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sumETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5061002161001c610038565b61003c565b600480546001600160a01b0319163317905561008c565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c588061009b6000396000f3fe6080604052600436106100ab5760003560e01c8063715018a611610064578063715018a6146102b55780637cb549be146102ca5780638da5cb5b146102df578063ce7c2ac214610301578063f2fde38b14610330578063fc0c546a14610350576101fb565b8063144fa6d71461020057806336bdee74146102205780633ccfd60b1461024b57806347e7ef24146102605780634e71d92d146102805780635eebea2014610295576101fb565b366101fb57346100ba576101f9565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a08231906100eb90309060040161099d565b60206040518083038186803b15801561010357600080fd5b505afa158015610117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013b9190610982565b90508061015e57600454610158906001600160a01b031634610365565b506101f9565b600061016b600534610ba1565b610176906003610bc1565b905060008261018d670de0b6b3a764000084610bc1565b6101979190610ba1565b905080600360008282546101ab9190610b89565b9250508190555081600560008282546101c49190610b89565b90915550600090506101d68334610be0565b905080156101f4576004546101f4906001600160a01b031682610365565b505050505b005b600080fd5b34801561020c57600080fd5b506101f961021b36600461091b565b61040f565b34801561022c57600080fd5b5061023561043d565b6040516102429190610b6a565b60405180910390f35b34801561025757600080fd5b506101f9610443565b34801561026c57600080fd5b506101f961027b366004610937565b610559565b34801561028c57600080fd5b506101f96105f9565b3480156102a157600080fd5b506102356102b036600461091b565b61065b565b3480156102c157600080fd5b506101f96106cf565b3480156102d657600080fd5b506102356106e3565b3480156102eb57600080fd5b506102f46106e9565b604051610242919061099d565b34801561030d57600080fd5b5061032161031c36600461091b565b6106f8565b60405161024293929190610b73565b34801561033c57600080fd5b506101f961034b36600461091b565b610718565b34801561035c57600080fd5b506102f461074f565b8047101561038e5760405162461bcd60e51b815260040161038590610ad2565b60405180910390fd5b6000826001600160a01b0316826040516103a79061099a565b60006040518083038185875af1925050503d80600081146103e4576040519150601f19603f3d011682016040523d82523d6000602084013e6103e9565b606091505b505090508061040a5760405162461bcd60e51b815260040161038590610a75565b505050565b61041761075e565b600280546001600160a01b0319166001600160a01b03831617905561043a6106cf565b50565b60055481565b33600090815260016020818152604092839020835160608101855281548152928101549183018290526002015492820192909252906104945760405162461bcd60e51b815260040161038590610b3e565b805142906104a59062015180610b89565b106104c25760405162461bcd60e51b815260040161038590610a45565b600254602082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916104f8913391906004016109b1565b602060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610962565b5061043a33826000600161079d565b6002546001600160a01b0316331461058157634e487b7160e01b600052600160045260246000fd5b600081116105a15760405162461bcd60e51b815260040161038590610a10565b6001600160a01b0382166000908152600160208181526040928390208351606081018552815481529281015491830182905260020154928201929092529061040a90849083906105f2908690610b89565b600161079d565b336000908152600160208181526040928390208351606081018552815481529281015491830182905260020154928201929092529061064a5760405162461bcd60e51b815260040161038590610b3e565b61043a33828360200151600061079d565b6001600160a01b03811660009081526001602081815260408084208151606081018352815481529381015492840192909252600290910154908201819052600354670de0b6b3a7640000916106af91610be0565b82602001516106be9190610bc1565b6106c89190610ba1565b9392505050565b6106d761075e565b6106e160006108c7565b565b60035481565b6000546001600160a01b031690565b600160208190526000918252604090912080549181015460029091015483565b61072061075e565b6001600160a01b0381166107465760405162461bcd60e51b8152600401610385906109ca565b61043a816108c7565b6002546001600160a01b031681565b610766610917565b6001600160a01b03166107776106e9565b6001600160a01b0316146106e15760405162461bcd60e51b815260040161038590610b09565b600083602001516000146107e257670de0b6b3a764000084604001516003546107c69190610be0565b85602001516107d59190610bc1565b6107df9190610ba1565b90505b82610813576001600160a01b03851660009081526001602081905260408220828155908101829055600201556108b0565b8115610866576040805160608101825242815260208082018681526003548385019081526001600160a01b038a1660009081526001938490529490942092518355519082015590516002909101556108b0565b604080516060810182528551815260208082018681526003548385019081526001600160a01b038a1660009081526001938490529490942092518355519082015590516002909101555b80156108c0576108c08582610365565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3390565b60006020828403121561092c578081fd5b81356106c881610c0d565b60008060408385031215610949578081fd5b823561095481610c0d565b946020939093013593505050565b600060208284031215610973578081fd5b815180151581146106c8578182fd5b600060208284031215610993578081fd5b5051919050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b6020808252601690820152757769746864726177206166746572206f6e652064617960501b604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260129082015271139bc81a5b9a5d1a585b0819195c1bdcda5d60721b604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610b9c57610b9c610bf7565b500190565b600082610bbc57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610bdb57610bdb610bf7565b500290565b600082821015610bf257610bf2610bf7565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461043a57600080fdfea26469706673582212203b293fc8150a0ac61336b0239c76e51ed9458ed57342112e6184303a7e51606064736f6c63430008010033
Deployed Bytecode
0x6080604052600436106100ab5760003560e01c8063715018a611610064578063715018a6146102b55780637cb549be146102ca5780638da5cb5b146102df578063ce7c2ac214610301578063f2fde38b14610330578063fc0c546a14610350576101fb565b8063144fa6d71461020057806336bdee74146102205780633ccfd60b1461024b57806347e7ef24146102605780634e71d92d146102805780635eebea2014610295576101fb565b366101fb57346100ba576101f9565b6002546040516370a0823160e01b81526000916001600160a01b0316906370a08231906100eb90309060040161099d565b60206040518083038186803b15801561010357600080fd5b505afa158015610117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013b9190610982565b90508061015e57600454610158906001600160a01b031634610365565b506101f9565b600061016b600534610ba1565b610176906003610bc1565b905060008261018d670de0b6b3a764000084610bc1565b6101979190610ba1565b905080600360008282546101ab9190610b89565b9250508190555081600560008282546101c49190610b89565b90915550600090506101d68334610be0565b905080156101f4576004546101f4906001600160a01b031682610365565b505050505b005b600080fd5b34801561020c57600080fd5b506101f961021b36600461091b565b61040f565b34801561022c57600080fd5b5061023561043d565b6040516102429190610b6a565b60405180910390f35b34801561025757600080fd5b506101f9610443565b34801561026c57600080fd5b506101f961027b366004610937565b610559565b34801561028c57600080fd5b506101f96105f9565b3480156102a157600080fd5b506102356102b036600461091b565b61065b565b3480156102c157600080fd5b506101f96106cf565b3480156102d657600080fd5b506102356106e3565b3480156102eb57600080fd5b506102f46106e9565b604051610242919061099d565b34801561030d57600080fd5b5061032161031c36600461091b565b6106f8565b60405161024293929190610b73565b34801561033c57600080fd5b506101f961034b36600461091b565b610718565b34801561035c57600080fd5b506102f461074f565b8047101561038e5760405162461bcd60e51b815260040161038590610ad2565b60405180910390fd5b6000826001600160a01b0316826040516103a79061099a565b60006040518083038185875af1925050503d80600081146103e4576040519150601f19603f3d011682016040523d82523d6000602084013e6103e9565b606091505b505090508061040a5760405162461bcd60e51b815260040161038590610a75565b505050565b61041761075e565b600280546001600160a01b0319166001600160a01b03831617905561043a6106cf565b50565b60055481565b33600090815260016020818152604092839020835160608101855281548152928101549183018290526002015492820192909252906104945760405162461bcd60e51b815260040161038590610b3e565b805142906104a59062015180610b89565b106104c25760405162461bcd60e51b815260040161038590610a45565b600254602082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916104f8913391906004016109b1565b602060405180830381600087803b15801561051257600080fd5b505af1158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190610962565b5061043a33826000600161079d565b6002546001600160a01b0316331461058157634e487b7160e01b600052600160045260246000fd5b600081116105a15760405162461bcd60e51b815260040161038590610a10565b6001600160a01b0382166000908152600160208181526040928390208351606081018552815481529281015491830182905260020154928201929092529061040a90849083906105f2908690610b89565b600161079d565b336000908152600160208181526040928390208351606081018552815481529281015491830182905260020154928201929092529061064a5760405162461bcd60e51b815260040161038590610b3e565b61043a33828360200151600061079d565b6001600160a01b03811660009081526001602081815260408084208151606081018352815481529381015492840192909252600290910154908201819052600354670de0b6b3a7640000916106af91610be0565b82602001516106be9190610bc1565b6106c89190610ba1565b9392505050565b6106d761075e565b6106e160006108c7565b565b60035481565b6000546001600160a01b031690565b600160208190526000918252604090912080549181015460029091015483565b61072061075e565b6001600160a01b0381166107465760405162461bcd60e51b8152600401610385906109ca565b61043a816108c7565b6002546001600160a01b031681565b610766610917565b6001600160a01b03166107776106e9565b6001600160a01b0316146106e15760405162461bcd60e51b815260040161038590610b09565b600083602001516000146107e257670de0b6b3a764000084604001516003546107c69190610be0565b85602001516107d59190610bc1565b6107df9190610ba1565b90505b82610813576001600160a01b03851660009081526001602081905260408220828155908101829055600201556108b0565b8115610866576040805160608101825242815260208082018681526003548385019081526001600160a01b038a1660009081526001938490529490942092518355519082015590516002909101556108b0565b604080516060810182528551815260208082018681526003548385019081526001600160a01b038a1660009081526001938490529490942092518355519082015590516002909101555b80156108c0576108c08582610365565b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3390565b60006020828403121561092c578081fd5b81356106c881610c0d565b60008060408385031215610949578081fd5b823561095481610c0d565b946020939093013593505050565b600060208284031215610973578081fd5b815180151581146106c8578182fd5b600060208284031215610993578081fd5b5051919050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b6020808252601690820152757769746864726177206166746572206f6e652064617960501b604082015260600190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260129082015271139bc81a5b9a5d1a585b0819195c1bdcda5d60721b604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610b9c57610b9c610bf7565b500190565b600082610bbc57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610bdb57610bdb610bf7565b500290565b600082821015610bf257610bf2610bf7565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461043a57600080fdfea26469706673582212203b293fc8150a0ac61336b0239c76e51ed9458ed57342112e6184303a7e51606064736f6c63430008010033
Deployed Bytecode Sourcemap
11448:2445:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13490:9;13486:27;;13506:7;;13486:27;13534:5;;:30;;-1:-1:-1;;;13534:30:0;;13519:12;;-1:-1:-1;;;;;13534:5:0;;:15;;:30;;13558:4;;13534:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13519:45;-1:-1:-1;13573:12:0;13569:74;;13620:10;;13594:49;;-1:-1:-1;;;;;13620:10:0;13633:9;13594:17;:49::i;:::-;13587:56;;;13569:74;13650:11;13665:13;13677:1;13665:9;:13;:::i;:::-;13664:19;;13682:1;13664:19;:::i;:::-;13650:33;-1:-1:-1;13688:9:0;13721:7;13700:18;11686:4;13650:33;13700:18;:::i;:::-;:28;;;;:::i;:::-;13688:40;;13743:4;13733:6;;:14;;;;;;;:::i;:::-;;;;;;;;13764:6;13752:8;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;13777:14:0;;-1:-1:-1;13794:18:0;13806:6;13794:9;:18;:::i;:::-;13777:35;-1:-1:-1;13821:13:0;;13817:68;;13862:10;;13836:49;;-1:-1:-1;;;;;13862:10:0;13875:9;13836:17;:49::i;:::-;13454:436;;;;;11448:2445;;;;;11880:106;;;;;;;;;;-1:-1:-1;11880:106:0;;;;;:::i;:::-;;:::i;11724:20::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12237:333;;;;;;;;;;;;;:::i;11991:241::-;;;;;;;;;;-1:-1:-1;11991:241:0;;;;;:::i;:::-;;:::i;12575:211::-;;;;;;;;;;;;;:::i;13278:171::-;;;;;;;;;;-1:-1:-1;13278:171:0;;;;;:::i;:::-;;:::i;8024:103::-;;;;;;;;;;;;;:::i;11630:18::-;;;;;;;;;;;;;:::i;7383:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11564:39::-;;;;;;;;;;-1:-1:-1;11564:39:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;8282:201::-;;;;;;;;;;-1:-1:-1;8282:201:0;;;;;:::i;:::-;;:::i;11607:19::-;;;;;;;;;;;;;:::i;667:317::-;782:6;757:21;:31;;749:73;;;;-1:-1:-1;;;749:73:0;;;;;;;:::i;:::-;;;;;;;;;836:12;854:9;-1:-1:-1;;;;;854:14:0;876:6;854:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:52;;;906:7;898:78;;;;-1:-1:-1;;;898:78:0;;;;;;;:::i;:::-;667:317;;;:::o;11880:106::-;7269:13;:11;:13::i;:::-;11937:5:::1;:14:::0;;-1:-1:-1;;;;;;11937:14:0::1;-1:-1:-1::0;;;;;11937:14:0;::::1;;::::0;;11956:25:::1;:23;:25::i;:::-;11880:106:::0;:::o;11724:20::-;;;;:::o;12237:333::-;12299:10;12271:18;12292;;;:6;:18;;;;;;;;;12271:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12315:55;;;;-1:-1:-1;;;12315:55:0;;;;;;;:::i;:::-;12383:17;;12414:15;;12383:28;;12403:8;12383:28;:::i;:::-;:46;12375:81;;;;-1:-1:-1;;;12375:81:0;;;;;;;:::i;:::-;12461:5;;12488:20;;;;12461:48;;-1:-1:-1;;;12461:48:0;;-1:-1:-1;;;;;12461:5:0;;;;:14;;:48;;12476:10;;12488:20;12461:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12514:51;12538:10;12550:5;12557:1;12560:4;12514:23;:51::i;11991:241::-;11805:5;;-1:-1:-1;;;;;11805:5:0;11783:10;:28;11776:36;;-1:-1:-1;;;11776:36:0;;;;;;;;;12075:1:::1;12066:6;:10;12058:55;;;;-1:-1:-1::0;;;12058:55:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12139:11:0;::::1;12118:18;12139:11:::0;;;:6:::1;:11;::::0;;;;;;;;12118:32;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;;;;;;;12155:72:::1;::::0;12146:3;;12118:32;;12191:29:::1;::::0;12214:6;;12191:29:::1;:::i;:::-;12222:4;12155:23;:72::i;12575:211::-:0;12634:10;12606:18;12627;;;:6;:18;;;;;;;;;12606:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12650:55;;;;-1:-1:-1;;;12650:55:0;;;;;;;:::i;:::-;12710:71;12734:10;12746:5;12753;:20;;;12775:5;12710:23;:71::i;13278:171::-;-1:-1:-1;;;;;13363:11:0;;13331:4;13363:11;;;:6;:11;;;;;;;;13342:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13410:6;;11686:4;;13410:21;;;:::i;:::-;13386:5;:20;;;:46;;;;:::i;:::-;:58;;;;:::i;:::-;13379:65;13278:171;-1:-1:-1;;;13278:171:0:o;8024:103::-;7269:13;:11;:13::i;:::-;8089:30:::1;8116:1;8089:18;:30::i;:::-;8024:103::o:0;11630:18::-;;;;:::o;7383:87::-;7429:7;7456:6;-1:-1:-1;;;;;7456:6:0;7383:87;:::o;11564:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8282:201::-;7269:13;:11;:13::i;:::-;-1:-1:-1;;;;;8371:22:0;::::1;8363:73;;;;-1:-1:-1::0;;;8363:73:0::1;;;;;;;:::i;:::-;8447:28;8466:8;8447:18;:28::i;11607:19::-:0;;;-1:-1:-1;;;;;11607:19:0;;:::o;7548:132::-;7623:12;:10;:12::i;:::-;-1:-1:-1;;;;;7612:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;7612:23:0;;7604:68;;;;-1:-1:-1;;;7604:68:0;;;;;;;:::i;12791:482::-;12903:10;12922:5;:20;;;12946:1;12922:25;12918:97;;11686:4;12990:5;:12;;;12981:6;;:21;;;;:::i;:::-;12957:5;:20;;;:46;;;;:::i;:::-;:58;;;;:::i;:::-;12949:66;;12918:97;13026:14;13022:186;;-1:-1:-1;;;;;13049:11:0;;;;;;:6;:11;;;;;;;13042:18;;;;;;;;;;;;13022:186;;;13074:10;13070:138;;;13100:41;;;;;;;;13106:15;13100:41;;;;;;;;;13134:6;;13100:41;;;;;;-1:-1:-1;;;;;13086:11:0;;-1:-1:-1;13086:11:0;;;:6;:11;;;;;;;;:55;;;;;;;;;;;;;;;;13070:138;;;13165:43;;;;;;;;13171:17;;13165:43;;;;;;;;;13201:6;;13165:43;;;;;;-1:-1:-1;;;;;13151:11:0;;-1:-1:-1;13151:11:0;;;:6;:11;;;;;;;;:57;;;;;;;;;;;;;;;;13070:138;13219:9;;13215:53;;13230:38;13256:3;13262:5;13230:17;:38::i;:::-;12791:482;;;;;:::o;8643:191::-;8717:16;8736:6;;-1:-1:-1;;;;;8753:17:0;;;-1:-1:-1;;;;;;8753:17:0;;;;;;8786:40;;8736:6;;;;;;;8786:40;;8717:16;8786:40;8643:191;;:::o;94:98::-;174:10;94:98;:::o;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:327::-;;;407:2;395:9;386:7;382:23;378:32;375:2;;;428:6;420;413:22;375:2;472:9;459:23;491:33;518:5;491:33;:::i;:::-;543:5;595:2;580:18;;;;567:32;;-1:-1:-1;;;365:240:1:o;610:297::-;;730:2;718:9;709:7;705:23;701:32;698:2;;;751:6;743;736:22;698:2;788:9;782:16;841:5;834:13;827:21;820:5;817:32;807:2;;868:6;860;853:22;1190:194;;1313:2;1301:9;1292:7;1288:23;1284:32;1281:2;;;1334:6;1326;1319:22;1281:2;-1:-1:-1;1362:16:1;;1271:113;-1:-1:-1;1271:113:1:o;1389:205::-;1589:3;1580:14::o;1599:203::-;-1:-1:-1;;;;;1763:32:1;;;;1745:51;;1733:2;1718:18;;1700:102::o;1807:274::-;-1:-1:-1;;;;;1999:32:1;;;;1981:51;;2063:2;2048:18;;2041:34;1969:2;1954:18;;1936:145::o;2308:402::-;2510:2;2492:21;;;2549:2;2529:18;;;2522:30;2588:34;2583:2;2568:18;;2561:62;-1:-1:-1;;;2654:2:1;2639:18;;2632:36;2700:3;2685:19;;2482:228::o;2715:356::-;2917:2;2899:21;;;2936:18;;;2929:30;2995:34;2990:2;2975:18;;2968:62;3062:2;3047:18;;2889:182::o;3076:346::-;3278:2;3260:21;;;3317:2;3297:18;;;3290:30;-1:-1:-1;;;3351:2:1;3336:18;;3329:52;3413:2;3398:18;;3250:172::o;3427:422::-;3629:2;3611:21;;;3668:2;3648:18;;;3641:30;3707:34;3702:2;3687:18;;3680:62;3778:28;3773:2;3758:18;;3751:56;3839:3;3824:19;;3601:248::o;3854:353::-;4056:2;4038:21;;;4095:2;4075:18;;;4068:30;4134:31;4129:2;4114:18;;4107:59;4198:2;4183:18;;4028:179::o;4212:356::-;4414:2;4396:21;;;4433:18;;;4426:30;4492:34;4487:2;4472:18;;4465:62;4559:2;4544:18;;4386:182::o;4573:342::-;4775:2;4757:21;;;4814:2;4794:18;;;4787:30;-1:-1:-1;;;4848:2:1;4833:18;;4826:48;4906:2;4891:18;;4747:168::o;4920:177::-;5066:25;;;5054:2;5039:18;;5021:76::o;5102:319::-;5304:25;;;5360:2;5345:18;;5338:34;;;;5403:2;5388:18;;5381:34;5292:2;5277:18;;5259:162::o;5426:128::-;;5497:1;5493:6;5490:1;5487:13;5484:2;;;5503:18;;:::i;:::-;-1:-1:-1;5539:9:1;;5474:80::o;5559:217::-;;5625:1;5615:2;;-1:-1:-1;;;5650:31:1;;5704:4;5701:1;5694:15;5732:4;5657:1;5722:15;5615:2;-1:-1:-1;5761:9:1;;5605:171::o;5781:168::-;;5887:1;5883;5879:6;5875:14;5872:1;5869:21;5864:1;5857:9;5850:17;5846:45;5843:2;;;5894:18;;:::i;:::-;-1:-1:-1;5934:9:1;;5833:116::o;5954:125::-;;6022:1;6019;6016:8;6013:2;;;6027:18;;:::i;:::-;-1:-1:-1;6064:9:1;;6003:76::o;6084:127::-;6145:10;6140:3;6136:20;6133:1;6126:31;6176:4;6173:1;6166:15;6200:4;6197:1;6190:15;6216:133;-1:-1:-1;;;;;6293:31:1;;6283:42;;6273:2;;6339:1;6336;6329:12
Swarm Source
ipfs://3b293fc8150a0ac61336b0239c76e51ed9458ed57342112e6184303a7e516060
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3,299.54 | 0.3536 | $1,166.68 |
Loading...
Loading
[ Download: CSV Export ]
[ 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.