Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 3,994 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim Payout | 18253960 | 781 days ago | IN | 0 ETH | 0.00022406 | ||||
| Claim Payout | 18253955 | 781 days ago | IN | 0 ETH | 0.00021714 | ||||
| Set Locked | 17709416 | 857 days ago | IN | 0 ETH | 0.00048729 | ||||
| Claim Payout | 17708778 | 858 days ago | IN | 0 ETH | 0.0012263 | ||||
| Claim Payout | 17708201 | 858 days ago | IN | 0 ETH | 0.00166486 | ||||
| Claim Payout | 17708045 | 858 days ago | IN | 0 ETH | 0.00167963 | ||||
| Claim Payout | 17707899 | 858 days ago | IN | 0 ETH | 0.00135367 | ||||
| Claim Payout | 17707149 | 858 days ago | IN | 0 ETH | 0.0017382 | ||||
| Claim Payout | 17707089 | 858 days ago | IN | 0 ETH | 0.0020924 | ||||
| Claim Payout | 17705179 | 858 days ago | IN | 0 ETH | 0.00149857 | ||||
| Claim Payout | 17704697 | 858 days ago | IN | 0 ETH | 0.00152081 | ||||
| Claim Payout | 17704676 | 858 days ago | IN | 0 ETH | 0.00150551 | ||||
| Claim Payout | 17704663 | 858 days ago | IN | 0 ETH | 0.00122422 | ||||
| Claim Payout | 17704653 | 858 days ago | IN | 0 ETH | 0.00147563 | ||||
| Claim Payout | 17704639 | 858 days ago | IN | 0 ETH | 0.0015369 | ||||
| Claim Payout | 17704620 | 858 days ago | IN | 0 ETH | 0.00167029 | ||||
| Claim Payout | 17704609 | 858 days ago | IN | 0 ETH | 0.00154062 | ||||
| Claim Payout | 17704585 | 858 days ago | IN | 0 ETH | 0.00177508 | ||||
| Claim Payout | 17704547 | 858 days ago | IN | 0 ETH | 0.00162431 | ||||
| Claim Payout | 17704528 | 858 days ago | IN | 0 ETH | 0.00157311 | ||||
| Claim Payout | 17704513 | 858 days ago | IN | 0 ETH | 0.00160729 | ||||
| Claim Payout | 17704503 | 858 days ago | IN | 0 ETH | 0.00156141 | ||||
| Claim Payout | 17704488 | 858 days ago | IN | 0 ETH | 0.00147748 | ||||
| Claim Payout | 17704447 | 858 days ago | IN | 0 ETH | 0.00154595 | ||||
| Claim Payout | 17704433 | 858 days ago | IN | 0 ETH | 0.00171629 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PayoutClaimDistributor
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-19 */ // Sources flattened with hardhat v2.6.4 https://hardhat.org // File @openzeppelin/contracts/cryptography/[email protected] // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev These functions deal with verification of Merkle trees (hash trees), */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } // Check if the computed hash (root) is equal to the provided root return computedHash == root; } } // File @animoca/ethereum-contracts-assets/contracts/token/ERC20/interfaces/[email protected] pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, basic interface. * @dev See https://eips.ethereum.org/EIPS/eip-20 * @dev Note: The ERC-165 identifier for this interface is 0x36372b07. */ interface IERC20 { /** * @dev Emitted when tokens are transferred, including zero value transfers. * @param _from The account where the transferred tokens are withdrawn from. * @param _to The account where the transferred tokens are deposited to. * @param _value The amount of tokens being transferred. */ event Transfer(address indexed _from, address indexed _to, uint256 _value); /** * @dev Emitted when a successful call to {IERC20-approve(address,uint256)} is made. * @param _owner The account granting an allowance to `_spender`. * @param _spender The account being granted an allowance from `_owner`. * @param _value The allowance amount being granted. */ event Approval(address indexed _owner, address indexed _spender, uint256 _value); /** * @notice Returns the total token supply. * @return The total token supply. */ function totalSupply() external view returns (uint256); /** * @notice Returns the account balance of another account with address `owner`. * @param owner The account whose balance will be returned. * @return The account balance of another account with address `owner`. */ function balanceOf(address owner) external view returns (uint256); /** * Transfers `value` amount of tokens to address `to`. * @dev Reverts if `to` is the zero address. * @dev Reverts if the sender does not have enough balance. * @dev Emits an {IERC20-Transfer} event. * @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event. * @param to The receiver account. * @param value The amount of tokens to transfer. * @return True if the transfer succeeds, false otherwise. */ function transfer(address to, uint256 value) external returns (bool); /** * @notice Transfers `value` amount of tokens from address `from` to address `to`. * @dev Reverts if `to` is the zero address. * @dev Reverts if `from` does not have at least `value` of balance. * @dev Reverts if the sender is not `from` and has not been approved by `from` for at least `value`. * @dev Emits an {IERC20-Transfer} event. * @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event. * @param from The emitter account. * @param to The receiver account. * @param value The amount of tokens to transfer. * @return True if the transfer succeeds, false otherwise. */ function transferFrom( address from, address to, uint256 value ) external returns (bool); /** * Sets `value` as the allowance from the caller to `spender`. * 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 * @dev Reverts if `spender` is the zero address. * @dev Emits the {IERC20-Approval} event. * @param spender The account being granted the allowance by the message caller. * @param value The allowance amount to grant. * @return True if the approval succeeds, false otherwise. */ function approve(address spender, uint256 value) external returns (bool); /** * Returns the amount which `spender` is allowed to spend on behalf of `owner`. * @param owner The account that has granted an allowance to `spender`. * @param spender The account that was granted an allowance by `owner`. * @return The amount which `spender` is allowed to spend on behalf of `owner`. */ function allowance(address owner, address spender) external view returns (uint256); } // File @animoca/ethereum-contracts-core/contracts/metatx/[email protected] pragma solidity >=0.7.6 <0.8.0; /* * 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. */ abstract contract ManagedIdentity { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { return msg.data; } } // File @animoca/ethereum-contracts-core/contracts/access/[email protected] pragma solidity >=0.7.6 <0.8.0; /** * @title ERC-173 Contract Ownership Standard * Note: the ERC-165 identifier for this interface is 0x7f5828d0 */ interface IERC173 { /** * Event emited when ownership of a contract changes. * @param previousOwner the previous owner. * @param newOwner the new owner. */ event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * Get the address of the owner * @return The address of the owner. */ function owner() external view returns (address); /** * Set the address of the new owner of the contract * Set newOwner to address(0) to renounce any ownership. * @dev Emits an {OwnershipTransferred} event. * @param newOwner The address of the new owner of the contract. Using the zero address means renouncing ownership. */ function transferOwnership(address newOwner) external; } // File @animoca/ethereum-contracts-core/contracts/access/[email protected] pragma solidity >=0.7.6 <0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is ManagedIdentity, IERC173 { address internal _owner; /** * Initializes the contract, setting the deployer as the initial owner. * @dev Emits an {IERC173-OwnershipTransferred(address,address)} event. */ constructor(address owner_) { _owner = owner_; emit OwnershipTransferred(address(0), owner_); } /** * Gets the address of the current contract owner. */ function owner() public view virtual override returns (address) { return _owner; } /** * See {IERC173-transferOwnership(address)} * @dev Reverts if the sender is not the current contract owner. * @param newOwner the address of the new owner. Use the zero address to renounce the ownership. */ function transferOwnership(address newOwner) public virtual override { _requireOwnership(_msgSender()); _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } /** * @dev Reverts if `account` is not the contract owner. * @param account the account to test. */ function _requireOwnership(address account) internal virtual { require(account == this.owner(), "Ownable: not the owner"); } } // File contracts/payout/PayoutClaimDistributor.sol pragma solidity >=0.7.6 <0.8.0; /// @title PayoutClaimDistributor /// @notice Through this contract, users could claim ERC20 token s/he is eligible to claim the rewards. /// - The owner/deployer of the contract could set merkle root, distributor address or lock/unlock the distribution. /// - Owner sets the ERC20 Token address (`token`) when deploying the contract, the owner also /// sets distributor address (`distAddress`) through `setDistributorAddress` function from which to distribute the tokens. /// - Owner should also approve the amount of ERC20 tokens allowed to distribute through this contract. /// - For owner to set new merkle root through `setMerkleRoot` function, contract distribution should be locked though /// `setLocked`. /// - To enable distribution again, it should be unlocked with `setLocked` function. /// - Users could claim the ERC20 token payout when the distributor is unlocked. contract PayoutClaimDistributor is Ownable { using MerkleProof for bytes32[]; event SetMerkleRoot(bytes32 indexed merkleRoot); event ClaimedPayout(address indexed account, uint256 amount, uint256 batch); event DistributionLocked(bool isLocked); event SetDistributorAddress(address indexed ownerAddress, address indexed distAddress); bytes32 public merkleRoot; IERC20 public token; address public distAddress; bool public isLocked; /* * Mapping for hash for (address, amount, batch) for claimed status */ mapping(bytes32 => bool) public claimed; /// @dev Constructor for setting ERC token address on deployment /// @param token_ Address for token to distribute /// @dev `distAddress` deployer address will be distributor address by default constructor(IERC20 token_) Ownable(msg.sender) { token = token_; distAddress = msg.sender; } /// @notice Merkle Root for current period to use for payout. /// - distributor contract should be locked before setting new merkle root /// @dev Owner sets merkle hash generated based on the payout set /// @dev Reverts if the distribution contract is not locked while setting new merkle root /// @dev Emits SetMerkleRoot event. /// @param merkleRoot_ bytes32 string of merkle root to set for specific period function setMerkleRoot(bytes32 merkleRoot_) public { _requireOwnership(_msgSender()); require(isLocked, "Payout not locked"); merkleRoot = merkleRoot_; emit SetMerkleRoot(merkleRoot_); } /// @notice Set locked/unlocked status for PayoutClaim Distributor /// @dev Owner lock/unlock each time new merkle root is being generated /// @dev Emits DistributionLocked event. /// @param isLocked_ = true/false status function setLocked(bool isLocked_) public { _requireOwnership(_msgSender()); isLocked = isLocked_; emit DistributionLocked(isLocked_); } /// @notice Distributor address in PayoutClaim Distributor /// @dev Wallet that holds token for distribution /// @dev Emits SetDistributorAddress event. /// @param distributorAddress Distributor address used for distribution of `token` token function setDistributorAddress(address distributorAddress) public { address msgSender = _msgSender(); _requireOwnership(msgSender); distAddress = distributorAddress; emit SetDistributorAddress(msgSender, distributorAddress); } /// @notice Payout method that user calls to claim /// @dev Method user calls for claiming the payout for user /// @dev Emits ClaimedPayout event. /// @param account Address of the user to claim the payout /// @param amount Claimable amount of address /// @param batch Unique value for each new merkle root generating /// @param merkleProof Merkle proof of the user based on the merkle root function claimPayout( address account, uint256 amount, uint256 batch, bytes32[] calldata merkleProof ) external { require(!isLocked, "Payout locked"); bytes32 leafHash = keccak256(abi.encodePacked(account, amount, batch)); require(!claimed[leafHash], "Payout already claimed"); require(merkleProof.verify(merkleRoot, leafHash), "Invalid proof"); claimed[leafHash] = true; IERC20(token).transferFrom(distAddress, account, amount); emit ClaimedPayout(account, amount, batch); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"batch","type":"uint256"}],"name":"ClaimedPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isLocked","type":"bool"}],"name":"DistributionLocked","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ownerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"distAddress","type":"address"}],"name":"SetDistributorAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"name":"SetMerkleRoot","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"batch","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claimPayout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"distributorAddress","type":"address"}],"name":"setDistributorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isLocked_","type":"bool"}],"name":"setLocked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506040516109103803806109108339818101604052602081101561003357600080fd5b5051600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b039092166001600160a01b03199283161790556003805490911633179055610862806100ae6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806387950f491161007157806387950f49146101b65780638da5cb5b146101dc578063a4e2d634146101e4578063cc3c0f0614610200578063f2fde38b1461021d578063fc0c546a14610243576100a9565b8063211e28b6146100ae57806321c3df25146100cf5780632eb4a7ab1461015b5780637cb6475914610175578063878e065814610192575b600080fd5b6100cd600480360360208110156100c457600080fd5b5035151561024b565b005b6100cd600480360360808110156100e557600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561011c57600080fd5b82018360208201111561012e57600080fd5b8035906020019184602083028401116401000000008311171561015057600080fd5b5090925090506102ae565b610163610518565b60408051918252519081900360200190f35b6100cd6004803603602081101561018b57600080fd5b503561051e565b61019a6105ae565b604080516001600160a01b039092168252519081900360200190f35b6100cd600480360360208110156101cc57600080fd5b50356001600160a01b03166105bd565b61019a610623565b6101ec610632565b604080519115158252519081900360200190f35b6101ec6004803603602081101561021657600080fd5b5035610642565b6100cd6004803603602081101561023357600080fd5b50356001600160a01b0316610657565b61019a6106b0565b61025b6102566106bf565b6106c3565b60038054821515600160a01b810260ff60a01b199092169190911790915560408051918252517f02facaa785222e4bd80c10706458a82b36f6c826954368073e6a0cbf0405ae709181900360200190a150565b600354600160a01b900460ff16156102fd576040805162461bcd60e51b815260206004820152600d60248201526c14185e5bdd5d081b1bd8dad959609a1b604482015290519081900360640190fd5b604080516bffffffffffffffffffffffff19606088901b166020808301919091526034820187905260548083018790528351808403909101815260749092018352815191810191909120600081815260049092529190205460ff16156103a3576040805162461bcd60e51b815260206004820152601660248201527514185e5bdd5d08185b1c9958591e4818db185a5b595960521b604482015290519081900360640190fd5b6103e7600154828585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509294939250506107839050565b610428576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015290519081900360640190fd5b6000818152600460208181526040808420805460ff1916600117905560025460035482516323b872dd60e01b81526001600160a01b03918216958101959095528b81166024860152604485018b905291519116936323b872dd936064808201949392918390030190829087803b1580156104a157600080fd5b505af11580156104b5573d6000803e3d6000fd5b505050506040513d60208110156104cb57600080fd5b5050604080518681526020810186905281516001600160a01b038916927f50bfd7a1ed22b77390b27d4c62acb66656778c2f221853834365a348f894077b928290030190a2505050505050565b60015481565b6105296102566106bf565b600354600160a01b900460ff1661057b576040805162461bcd60e51b815260206004820152601160248201527014185e5bdd5d081b9bdd081b1bd8dad959607a1b604482015290519081900360640190fd5b600181905560405181907f914960aef5e033ce5cae8a7992d4b7a6f0f9741227b66acb67c605b7019f8a4690600090a250565b6003546001600160a01b031681565b60006105c76106bf565b90506105d2816106c3565b600380546001600160a01b0319166001600160a01b0384811691821790925560405190918316907fe9286a175900d0389b36adb63c9d6992999e166909e1050adf0fc5efa15c91fd90600090a35050565b6000546001600160a01b031690565b600354600160a01b900460ff1681565b60046020526000908152604090205460ff1681565b6106626102566106bf565b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002546001600160a01b031681565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b50516001600160a01b03828116911614610780576040805162461bcd60e51b815260206004820152601660248201527527bbb730b136329d103737ba103a34329037bbb732b960511b604482015290519081900360640190fd5b50565b600081815b855181101561082157600086828151811061079f57fe5b602002602001015190508083116107e65782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610818565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610788565b50909214939250505056fea26469706673582212207ef6c24ae9947e0bee0a808e941938541b7c0bdca71145d39e581f1b2847617764736f6c6343000706003300000000000000000000000046e98ffe40e408ba6412beb670507e083c8b95ff
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806387950f491161007157806387950f49146101b65780638da5cb5b146101dc578063a4e2d634146101e4578063cc3c0f0614610200578063f2fde38b1461021d578063fc0c546a14610243576100a9565b8063211e28b6146100ae57806321c3df25146100cf5780632eb4a7ab1461015b5780637cb6475914610175578063878e065814610192575b600080fd5b6100cd600480360360208110156100c457600080fd5b5035151561024b565b005b6100cd600480360360808110156100e557600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561011c57600080fd5b82018360208201111561012e57600080fd5b8035906020019184602083028401116401000000008311171561015057600080fd5b5090925090506102ae565b610163610518565b60408051918252519081900360200190f35b6100cd6004803603602081101561018b57600080fd5b503561051e565b61019a6105ae565b604080516001600160a01b039092168252519081900360200190f35b6100cd600480360360208110156101cc57600080fd5b50356001600160a01b03166105bd565b61019a610623565b6101ec610632565b604080519115158252519081900360200190f35b6101ec6004803603602081101561021657600080fd5b5035610642565b6100cd6004803603602081101561023357600080fd5b50356001600160a01b0316610657565b61019a6106b0565b61025b6102566106bf565b6106c3565b60038054821515600160a01b810260ff60a01b199092169190911790915560408051918252517f02facaa785222e4bd80c10706458a82b36f6c826954368073e6a0cbf0405ae709181900360200190a150565b600354600160a01b900460ff16156102fd576040805162461bcd60e51b815260206004820152600d60248201526c14185e5bdd5d081b1bd8dad959609a1b604482015290519081900360640190fd5b604080516bffffffffffffffffffffffff19606088901b166020808301919091526034820187905260548083018790528351808403909101815260749092018352815191810191909120600081815260049092529190205460ff16156103a3576040805162461bcd60e51b815260206004820152601660248201527514185e5bdd5d08185b1c9958591e4818db185a5b595960521b604482015290519081900360640190fd5b6103e7600154828585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509294939250506107839050565b610428576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015290519081900360640190fd5b6000818152600460208181526040808420805460ff1916600117905560025460035482516323b872dd60e01b81526001600160a01b03918216958101959095528b81166024860152604485018b905291519116936323b872dd936064808201949392918390030190829087803b1580156104a157600080fd5b505af11580156104b5573d6000803e3d6000fd5b505050506040513d60208110156104cb57600080fd5b5050604080518681526020810186905281516001600160a01b038916927f50bfd7a1ed22b77390b27d4c62acb66656778c2f221853834365a348f894077b928290030190a2505050505050565b60015481565b6105296102566106bf565b600354600160a01b900460ff1661057b576040805162461bcd60e51b815260206004820152601160248201527014185e5bdd5d081b9bdd081b1bd8dad959607a1b604482015290519081900360640190fd5b600181905560405181907f914960aef5e033ce5cae8a7992d4b7a6f0f9741227b66acb67c605b7019f8a4690600090a250565b6003546001600160a01b031681565b60006105c76106bf565b90506105d2816106c3565b600380546001600160a01b0319166001600160a01b0384811691821790925560405190918316907fe9286a175900d0389b36adb63c9d6992999e166909e1050adf0fc5efa15c91fd90600090a35050565b6000546001600160a01b031690565b600354600160a01b900460ff1681565b60046020526000908152604090205460ff1681565b6106626102566106bf565b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002546001600160a01b031681565b3390565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b50516001600160a01b03828116911614610780576040805162461bcd60e51b815260206004820152601660248201527527bbb730b136329d103737ba103a34329037bbb732b960511b604482015290519081900360640190fd5b50565b600081815b855181101561082157600086828151811061079f57fe5b602002602001015190508083116107e65782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610818565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610788565b50909214939250505056fea26469706673582212207ef6c24ae9947e0bee0a808e941938541b7c0bdca71145d39e581f1b2847617764736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000046e98ffe40e408ba6412beb670507e083c8b95ff
-----Decoded View---------------
Arg [0] : token_ (address): 0x46e98FFE40E408bA6412bEb670507e083C8B95ff
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000046e98ffe40e408ba6412beb670507e083c8b95ff
Deployed Bytecode Sourcemap
10449:3616:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12327:168;;;;;;;;;;;;;;;;-1:-1:-1;12327:168:0;;;;:::i;:::-;;13468:594;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13468:594:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13468:594:0;;-1:-1:-1;13468:594:0;-1:-1:-1;13468:594:0;:::i;10816:25::-;;;:::i;:::-;;;;;;;;;;;;;;;;11848:229;;;;;;;;;;;;;;;;-1:-1:-1;11848:229:0;;:::i;10874:26::-;;;:::i;:::-;;;;-1:-1:-1;;;;;10874:26:0;;;;;;;;;;;;;;12765:269;;;;;;;;;;;;;;;;-1:-1:-1;12765:269:0;-1:-1:-1;;;;;12765:269:0;;:::i;8599:96::-;;;:::i;10907:20::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;11026:39;;;;;;;;;;;;;;;;-1:-1:-1;11026:39:0;;:::i;8942:201::-;;;;;;;;;;;;;;;;-1:-1:-1;8942:201:0;-1:-1:-1;;;;;8942:201:0;;:::i;10848:19::-;;;:::i;12327:168::-;12380:31;12398:12;:10;:12::i;:::-;12380:17;:31::i;:::-;12422:8;:20;;;;;-1:-1:-1;;;12422:20:0;;-1:-1:-1;;;;12422:20:0;;;;;;;;;;12458:29;;;;;;;;;;;;;;;;12327:168;:::o;13468:594::-;13641:8;;-1:-1:-1;;;13641:8:0;;;;13640:9;13632:35;;;;;-1:-1:-1;;;13632:35:0;;;;;;;;;;;;-1:-1:-1;;;13632:35:0;;;;;;;;;;;;;;;13709:40;;;-1:-1:-1;;13709:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13699:51;;;;;;;;;13680:16;13772:17;;;:7;:17;;;;;;;;;13771:18;13763:53;;;;;-1:-1:-1;;;13763:53:0;;;;;;;;;;;;-1:-1:-1;;;13763:53:0;;;;;;;;;;;;;;;13835:40;13854:10;;13866:8;13835:11;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13835:18:0;;:40;;-1:-1:-1;;13835:18:0;:40;-1:-1:-1;13835:40:0:i;:::-;13827:66;;;;;-1:-1:-1;;;13827:66:0;;;;;;;;;;;;-1:-1:-1;;;13827:66:0;;;;;;;;;;;;;;;13906:17;;;;:7;:17;;;;;;;;:24;;-1:-1:-1;;13906:24:0;13926:4;13906:24;;;13950:5;;13970:11;;13943:56;;-1:-1:-1;;;13943:56:0;;-1:-1:-1;;;;;13970:11:0;;;13943:56;;;;;;;;;;;;;;;;;;;;;;13950:5;;;13943:26;;:56;;;;;13906:17;13943:56;;;;;;;;;13950:5;13943:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14017:37:0;;;;;;13943:56;14017:37;;;;;;;-1:-1:-1;;;;;14017:37:0;;;;;;;;;;;13468:594;;;;;;:::o;10816:25::-;;;;:::o;11848:229::-;11910:31;11928:12;:10;:12::i;11910:31::-;11960:8;;-1:-1:-1;;;11960:8:0;;;;11952:38;;;;;-1:-1:-1;;;11952:38:0;;;;;;;;;;;;-1:-1:-1;;;11952:38:0;;;;;;;;;;;;;;;12003:10;:24;;;12043:26;;12016:11;;12043:26;;;;;11848:229;:::o;10874:26::-;;;-1:-1:-1;;;;;10874:26:0;;:::o;12765:269::-;12842:17;12862:12;:10;:12::i;:::-;12842:32;;12885:28;12903:9;12885:17;:28::i;:::-;12926:11;:32;;-1:-1:-1;;;;;;12926:32:0;-1:-1:-1;;;;;12926:32:0;;;;;;;;;12974:52;;12926:32;;12974:52;;;;;-1:-1:-1;;12974:52:0;12765:269;;:::o;8599:96::-;8654:7;8681:6;-1:-1:-1;;;;;8681:6:0;8599:96;:::o;10907:20::-;;;-1:-1:-1;;;10907:20:0;;;;;:::o;11026:39::-;;;;;;;;;;;;;;;:::o;8942:201::-;9022:31;9040:12;:10;:12::i;9022:31::-;9064:6;:17;;-1:-1:-1;;;;;;9064:17:0;-1:-1:-1;;;;;9064:17:0;;;;;;;;;9097:38;;9064:17;;9118:6;;;9097:38;;9064:6;9097:38;8942:201;:::o;10848:19::-;;;-1:-1:-1;;;;;10848:19:0;;:::o;6241:106::-;6329:10;6241:106;:::o;9274:138::-;9365:4;-1:-1:-1;;;;;9365:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9365:12:0;-1:-1:-1;;;;;9354:23:0;;;;;;9346:58;;;;;-1:-1:-1;;;9346:58:0;;;;;;;;;;;;-1:-1:-1;;;9346:58:0;;;;;;;;;;;;;;;9274:138;:::o;654:796::-;745:4;785;745;802:525;826:5;:12;822:1;:16;802:525;;;860:20;883:5;889:1;883:8;;;;;;;;;;;;;;860:31;;928:12;912;:28;908:408;;1082:12;1096;1065:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1055:55;;;;;;1040:70;;908:408;;;1272:12;1286;1255:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1245:55;;;;;;1230:70;;908:408;-1:-1:-1;840:3:0;;802:525;;;-1:-1:-1;1422:20:0;;;;654:796;-1:-1:-1;;;654:796:0:o
Swarm Source
ipfs://7ef6c24ae9947e0bee0a808e941938541b7c0bdca71145d39e581f1b28476177
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.