More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,153 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Unpause | 20055339 | 25 days ago | IN | 0 ETH | 0.00045867 | ||||
Set Merkle Root | 20055338 | 25 days ago | IN | 0 ETH | 0.00058165 | ||||
Pause | 20055337 | 25 days ago | IN | 0 ETH | 0.00046458 | ||||
Unpause | 19833564 | 56 days ago | IN | 0 ETH | 0.00037777 | ||||
Set Merkle Root | 19833563 | 56 days ago | IN | 0 ETH | 0.00046426 | ||||
Pause | 19833562 | 56 days ago | IN | 0 ETH | 0.00039512 | ||||
Claim | 19678695 | 78 days ago | IN | 0 ETH | 0.00087304 | ||||
Unpause | 19619153 | 86 days ago | IN | 0 ETH | 0.00196882 | ||||
Set Merkle Root | 19619152 | 86 days ago | IN | 0 ETH | 0.00247759 | ||||
Pause | 19619151 | 86 days ago | IN | 0 ETH | 0.00197299 | ||||
Claim | 19599253 | 89 days ago | IN | 0 ETH | 0.00091199 | ||||
Unpause | 19398616 | 117 days ago | IN | 0 ETH | 0.00370951 | ||||
Set Merkle Root | 19398614 | 117 days ago | IN | 0 ETH | 0.00418259 | ||||
Pause | 19398613 | 117 days ago | IN | 0 ETH | 0.00332876 | ||||
Claim | 19231000 | 141 days ago | IN | 0 ETH | 0.00150214 | ||||
Unpause | 19191712 | 146 days ago | IN | 0 ETH | 0.00409693 | ||||
Set Merkle Root | 19191711 | 146 days ago | IN | 0 ETH | 0.00484987 | ||||
Pause | 19191710 | 146 days ago | IN | 0 ETH | 0.00392477 | ||||
Claim | 19100702 | 159 days ago | IN | 0 ETH | 0.00083565 | ||||
Claim | 19078431 | 162 days ago | IN | 0 ETH | 0.00121622 | ||||
Claim | 18999088 | 173 days ago | IN | 0 ETH | 0.00131882 | ||||
Claim | 18981341 | 176 days ago | IN | 0 ETH | 0.00247819 | ||||
Unpause | 18970472 | 177 days ago | IN | 0 ETH | 0.00125658 | ||||
Set Merkle Root | 18970471 | 177 days ago | IN | 0 ETH | 0.00160359 | ||||
Pause | 18970470 | 177 days ago | IN | 0 ETH | 0.00128669 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MerkleDistributor
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-08 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); } // File: @openzeppelin/contracts/cryptography/MerkleProof.sol pragma solidity ^0.6.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: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.6.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. */ 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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/utils/Pausable.sol pragma solidity ^0.6.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: contracts/MerkleDistributor.sol // SPDX-License-Identifier: UNLICENSED pragma solidity >=0.6.11; contract MerkleDistributor is Ownable, Pausable { address public token; bytes32 public merkleRoot; uint256 public nonce; // This is a packed array of booleans. mapping(uint256 => mapping(uint256 => uint256)) private claimedBitMap; // constructor(address token_, bytes32 merkleRoot_) public { // token = token_; // merkleRoot = merkleRoot_; // nonce ++; // } function setToken(address token_) external onlyOwner { token = token_; } function setMerkleRoot (bytes32 merkleRoot_) external onlyOwner { merkleRoot = merkleRoot_; nonce ++; } function setNonce(uint256 nonce_) external onlyOwner { nonce = nonce_; } function pause() external onlyOwner{ _pause(); } function unpause()external onlyOwner { _unpause(); } function isClaimed(uint256 index) public view returns (bool) { uint256 claimedWordIndex = index / 256; uint256 claimedBitIndex = index % 256; uint256 claimedWord = claimedBitMap[nonce][claimedWordIndex]; uint256 mask = (1 << claimedBitIndex); return claimedWord & mask == mask; } function _setClaimed(uint256 index) private { uint256 claimedWordIndex = index / 256; uint256 claimedBitIndex = index % 256; claimedBitMap[nonce][claimedWordIndex] = claimedBitMap[nonce][claimedWordIndex] | (1 << claimedBitIndex); } function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external whenNotPaused { require(!isClaimed(index), 'MerkleDistributor: Drop already claimed.'); // Verify the merkle proof. bytes32 node = keccak256(abi.encodePacked(index, account, amount)); require(MerkleProof.verify(merkleProof, merkleRoot, node), 'MerkleDistributor: Invalid proof.'); // Mark it claimed and send the token. _setClaimed(index); require(IERC20(token).transfer(account, amount), 'MerkleDistributor: Transfer failed.'); emit Claimed(index, account, amount); } event Claimed(uint256 index, address account, uint256 amount); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","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":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce_","type":"uint256"}],"name":"setNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","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":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600061001b610077565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916905561007b565b3390565b610c178061008a6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638456cb591161008c578063affed0e011610066578063affed0e01461024f578063f2fde38b14610257578063f360c1831461027d578063fc0c546a1461029a576100ea565b80638456cb59146102065780638da5cb5b1461020e5780639e34070f14610232576100ea565b80633f4ba83a116100c85780633f4ba83a146101bd5780635c975abb146101c5578063715018a6146101e15780637cb64759146101e9576100ea565b8063144fa6d7146100ef5780632e7ba6ef146101175780632eb4a7ab146101a3575b600080fd5b6101156004803603602081101561010557600080fd5b50356001600160a01b03166102a2565b005b6101156004803603608081101561012d57600080fd5b8135916001600160a01b03602082013516916040820135919081019060808101606082013564010000000081111561016457600080fd5b82018360208201111561017657600080fd5b8035906020019184602083028401116401000000008311171561019857600080fd5b50909250905061031c565b6101ab61058c565b60408051918252519081900360200190f35b610115610592565b6101cd6105f4565b604080519115158252519081900360200190f35b610115610604565b610115600480360360208110156101ff57600080fd5b50356106a6565b61011561070c565b61021661076c565b604080516001600160a01b039092168252519081900360200190f35b6101cd6004803603602081101561024857600080fd5b503561077b565b6101ab6107ae565b6101156004803603602081101561026d57600080fd5b50356001600160a01b03166107b4565b6101156004803603602081101561029357600080fd5b50356108ac565b610216610909565b6102aa610918565b6000546001600160a01b039081169116146102fa576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a01b900460ff161561036e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6103778561077b565b156103b35760405162461bcd60e51b8152600401808060200182810382526028815260200180610b566028913960400191505060405180910390fd5b600085858560405160200180848152602001836001600160a01b031660601b8152601401828152602001935050505060405160208183030381529060405280519060200120905061043b83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600254915084905061091c565b6104765760405162461bcd60e51b8152600401808060200182810382526021815260200180610b7e6021913960400191505060405180910390fd5b61047f866109c5565b6001546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018890529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b505161053c5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b9f6023913960400191505060405180910390fd5b604080518781526001600160a01b038716602082015280820186905290517f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269181900360600190a1505050505050565b60025481565b61059a610918565b6000546001600160a01b039081169116146105ea576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b6105f26109f9565b565b600054600160a01b900460ff1690565b61060c610918565b6000546001600160a01b0390811691161461065c576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6106ae610918565b6000546001600160a01b039081169116146106fe576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600255600380546001019055565b610714610918565b6000546001600160a01b03908116911614610764576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b6105f2610aa1565b6000546001600160a01b031690565b600354600090815260046020908152604080832061010085048452909152902054600160ff9092169190911b9081161490565b60035481565b6107bc610918565b6000546001600160a01b0390811691161461080c576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b6001600160a01b0381166108515760405162461bcd60e51b8152600401808060200182810382526026815260200180610b306026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6108b4610918565b6000546001600160a01b03908116911614610904576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600355565b6001546001600160a01b031681565b3390565b600081815b85518110156109ba57600086828151811061093857fe5b6020026020010151905080831161097f57828160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506109b1565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610921565b509092149392505050565b60035460009081526004602090815260408083206101008504845290915290208054600160ff9093169290921b9091179055565b600054600160a01b900460ff16610a4e576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610a84610918565b604080516001600160a01b039092168252519081900360200190a1565b600054600160a01b900460ff1615610af3576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a8461091856fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d65726b6c654469737472696275746f723a2044726f7020616c726561647920636c61696d65642e4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f662e4d65726b6c654469737472696275746f723a205472616e73666572206661696c65642e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122063b331cbf1ab0af9dea80ce2d7ae6b30ddc7cda6505496e07ff3eb49666dbd7564736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638456cb591161008c578063affed0e011610066578063affed0e01461024f578063f2fde38b14610257578063f360c1831461027d578063fc0c546a1461029a576100ea565b80638456cb59146102065780638da5cb5b1461020e5780639e34070f14610232576100ea565b80633f4ba83a116100c85780633f4ba83a146101bd5780635c975abb146101c5578063715018a6146101e15780637cb64759146101e9576100ea565b8063144fa6d7146100ef5780632e7ba6ef146101175780632eb4a7ab146101a3575b600080fd5b6101156004803603602081101561010557600080fd5b50356001600160a01b03166102a2565b005b6101156004803603608081101561012d57600080fd5b8135916001600160a01b03602082013516916040820135919081019060808101606082013564010000000081111561016457600080fd5b82018360208201111561017657600080fd5b8035906020019184602083028401116401000000008311171561019857600080fd5b50909250905061031c565b6101ab61058c565b60408051918252519081900360200190f35b610115610592565b6101cd6105f4565b604080519115158252519081900360200190f35b610115610604565b610115600480360360208110156101ff57600080fd5b50356106a6565b61011561070c565b61021661076c565b604080516001600160a01b039092168252519081900360200190f35b6101cd6004803603602081101561024857600080fd5b503561077b565b6101ab6107ae565b6101156004803603602081101561026d57600080fd5b50356001600160a01b03166107b4565b6101156004803603602081101561029357600080fd5b50356108ac565b610216610909565b6102aa610918565b6000546001600160a01b039081169116146102fa576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a01b900460ff161561036e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6103778561077b565b156103b35760405162461bcd60e51b8152600401808060200182810382526028815260200180610b566028913960400191505060405180910390fd5b600085858560405160200180848152602001836001600160a01b031660601b8152601401828152602001935050505060405160208183030381529060405280519060200120905061043b83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600254915084905061091c565b6104765760405162461bcd60e51b8152600401808060200182810382526021815260200180610b7e6021913960400191505060405180910390fd5b61047f866109c5565b6001546040805163a9059cbb60e01b81526001600160a01b038881166004830152602482018890529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b505161053c5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b9f6023913960400191505060405180910390fd5b604080518781526001600160a01b038716602082015280820186905290517f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0269181900360600190a1505050505050565b60025481565b61059a610918565b6000546001600160a01b039081169116146105ea576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b6105f26109f9565b565b600054600160a01b900460ff1690565b61060c610918565b6000546001600160a01b0390811691161461065c576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6106ae610918565b6000546001600160a01b039081169116146106fe576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600255600380546001019055565b610714610918565b6000546001600160a01b03908116911614610764576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b6105f2610aa1565b6000546001600160a01b031690565b600354600090815260046020908152604080832061010085048452909152902054600160ff9092169190911b9081161490565b60035481565b6107bc610918565b6000546001600160a01b0390811691161461080c576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b6001600160a01b0381166108515760405162461bcd60e51b8152600401808060200182810382526026815260200180610b306026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6108b4610918565b6000546001600160a01b03908116911614610904576040805162461bcd60e51b81526020600482018190526024820152600080516020610bc2833981519152604482015290519081900360640190fd5b600355565b6001546001600160a01b031681565b3390565b600081815b85518110156109ba57600086828151811061093857fe5b6020026020010151905080831161097f57828160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506109b1565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b50600101610921565b509092149392505050565b60035460009081526004602090815260408083206101008504845290915290208054600160ff9093169290921b9091179055565b600054600160a01b900460ff16610a4e576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610a84610918565b604080516001600160a01b039092168252519081900360200190a1565b600054600160a01b900460ff1615610af3576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a8461091856fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d65726b6c654469737472696275746f723a2044726f7020616c726561647920636c61696d65642e4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f662e4d65726b6c654469737472696275746f723a205472616e73666572206661696c65642e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122063b331cbf1ab0af9dea80ce2d7ae6b30ddc7cda6505496e07ff3eb49666dbd7564736f6c634300060c0033
Deployed Bytecode Sourcemap
9796:2235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10227:86;;;;;;;;;;;;;;;;-1:-1:-1;10227:86:0;-1:-1:-1;;;;;10227:86:0;;:::i;:::-;;11302:655;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11302:655:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11302:655:0;;-1:-1:-1;11302:655:0;-1:-1:-1;11302:655:0;:::i;9879:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;10619:66;;;:::i;8495:78::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;6869:148;;;:::i;10321:126::-;;;;;;;;;;;;;;;;-1:-1:-1;10321:126:0;;:::i;10549:62::-;;;:::i;6227:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6227:79:0;;;;;;;;;;;;;;10693:329;;;;;;;;;;;;;;;;-1:-1:-1;10693:329:0;;:::i;9912:20::-;;;:::i;7172:244::-;;;;;;;;;;;;;;;;-1:-1:-1;7172:244:0;-1:-1:-1;;;;;7172:244:0;;:::i;10455:86::-;;;;;;;;;;;;;;;;-1:-1:-1;10455:86:0;;:::i;9851:21::-;;;:::i;10227:86::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;10291:5:::1;:14:::0;;-1:-1:-1;;;;;;10291:14:0::1;-1:-1:-1::0;;;;;10291:14:0;;;::::1;::::0;;;::::1;::::0;;10227:86::o;11302:655::-;8813:7;;-1:-1:-1;;;8813:7:0;;;;8812:8;8804:37;;;;;-1:-1:-1;;;8804:37:0;;;;;;;;;;;;-1:-1:-1;;;8804:37:0;;;;;;;;;;;;;;;11440:16:::1;11450:5;11440:9;:16::i;:::-;11439:17;11431:70;;;;-1:-1:-1::0;;;11431:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11551:12;11593:5;11600:7;11609:6;11576:40;;;;;;;;;;;-1:-1:-1::0;;;;;11576:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11566:51;;;;;;11551:66;;11636:49;11655:11;;11636:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;11668:10:0::1;::::0;;-1:-1:-1;11680:4:0;;-1:-1:-1;11636:18:0::1;:49::i;:::-;11628:95;;;;-1:-1:-1::0;;;11628:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11784:18;11796:5;11784:11;:18::i;:::-;11828:5;::::0;11821:39:::1;::::0;;-1:-1:-1;;;11821:39:0;;-1:-1:-1;;;;;11821:39:0;;::::1;;::::0;::::1;::::0;;;;;;;;;11828:5;;;::::1;::::0;11821:22:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;11828:5:::1;::::0;11821:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11821:39:0;11813:87:::1;;;;-1:-1:-1::0;;;11813:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11918:31;::::0;;;;;-1:-1:-1;;;;;11918:31:0;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;;;;;::::1;8852:1;11302:655:::0;;;;;:::o;9879:26::-;;;;:::o;10619:66::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;10667:10:::1;:8;:10::i;:::-;10619:66::o:0;8495:78::-;8534:4;8558:7;-1:-1:-1;;;8558:7:0;;;;;8495:78::o;6869:148::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;6976:1:::1;6960:6:::0;;6939:40:::1;::::0;-1:-1:-1;;;;;6960:6:0;;::::1;::::0;6939:40:::1;::::0;6976:1;;6939:40:::1;7007:1;6990:19:::0;;-1:-1:-1;;;;;;6990:19:0::1;::::0;;6869:148::o;10321:126::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;10396:10:::1;:24:::0;10431:5:::1;:8:::0;;::::1;;::::0;;10321:126::o;10549:62::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;10595:8:::1;:6;:8::i;6227:79::-:0;6265:7;6292:6;-1:-1:-1;;;;;6292:6:0;6227:79;:::o;10693:329::-;10898:5;;10748:4;10884:20;;;:13;:20;;;;;;;;10800:3;10792:11;;10884:38;;;;;;;;10949:1;10840:11;;;;10949:20;;;;10988:18;;;:26;;10693:329::o;9912:20::-;;;;:::o;7172:244::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7261:22:0;::::1;7253:73;;;;-1:-1:-1::0;;;7253:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7363:6;::::0;;7342:38:::1;::::0;-1:-1:-1;;;;;7342:38:0;;::::1;::::0;7363:6;::::1;::::0;7342:38:::1;::::0;::::1;7391:6;:17:::0;;-1:-1:-1;;;;;;7391:17:0::1;-1:-1:-1::0;;;;;7391:17:0;;;::::1;::::0;;;::::1;::::0;;7172:244::o;10455:86::-;6449:12;:10;:12::i;:::-;6439:6;;-1:-1:-1;;;;;6439:6:0;;;:22;;;6431:67;;;;;-1:-1:-1;;;6431:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6431:67:0;;;;;;;;;;;;;;;10519:5:::1;:14:::0;10455:86::o;9851:21::-;;;-1:-1:-1;;;;;9851:21:0;;:::o;4777:106::-;4865:10;4777:106;:::o;3348:796::-;3439:4;3479;3439;3496:525;3520:5;:12;3516:1;:16;3496:525;;;3554:20;3577:5;3583:1;3577:8;;;;;;;;;;;;;;3554:31;;3622:12;3606;:28;3602:408;;3776:12;3790;3759:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3749:55;;;;;;3734:70;;3602:408;;;3966:12;3980;3949:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3939:55;;;;;;3924:70;;3602:408;-1:-1:-1;3534:3:0;;3496:525;;;-1:-1:-1;4116:20:0;;;;3348:796;-1:-1:-1;;;3348:796:0:o;11030:264::-;11237:5;;11085:24;11223:20;;;:13;:20;;;;;;;;11120:3;11112:11;;11223:38;;;;;;;;;11265:1;11160:11;;;;11265:20;;;;11223:63;;;11182:104;;11030:264::o;9544:120::-;9089:7;;-1:-1:-1;;;9089:7:0;;;;9081:40;;;;;-1:-1:-1;;;9081:40:0;;;;;;;;;;;;-1:-1:-1;;;9081:40:0;;;;;;;;;;;;;;;9613:5:::1;9603:15:::0;;-1:-1:-1;;;;9603:15:0::1;::::0;;9634:22:::1;9643:12;:10;:12::i;:::-;9634:22;::::0;;-1:-1:-1;;;;;9634:22:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;9544:120::o:0;9285:118::-;8813:7;;-1:-1:-1;;;8813:7:0;;;;8812:8;8804:37;;;;;-1:-1:-1;;;8804:37:0;;;;;;;;;;;;-1:-1:-1;;;8804:37:0;;;;;;;;;;;;;;;9345:7:::1;:14:::0;;-1:-1:-1;;;;9345:14:0::1;-1:-1:-1::0;;;9345:14:0::1;::::0;;9375:20:::1;9382:12;:10;:12::i
Swarm Source
ipfs://63b331cbf1ab0af9dea80ce2d7ae6b30ddc7cda6505496e07ff3eb49666dbd75
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.004175 | 1,372.5579 | $5.73 |
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.