More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,197 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Weeks | 20376832 | 3 days ago | IN | 0 ETH | 0.01102906 | ||||
Claim Weeks | 20361434 | 5 days ago | IN | 0 ETH | 0.00693141 | ||||
Claim Weeks | 20152372 | 34 days ago | IN | 0 ETH | 0.00065315 | ||||
Claim Weeks | 20143453 | 35 days ago | IN | 0 ETH | 0.0023962 | ||||
Claim Weeks | 20035956 | 50 days ago | IN | 0 ETH | 0.00182374 | ||||
Claim Weeks | 19946333 | 63 days ago | IN | 0 ETH | 0.0034925 | ||||
Claim Weeks | 19907965 | 68 days ago | IN | 0 ETH | 0.0025089 | ||||
Claim Weeks | 19872901 | 73 days ago | IN | 0 ETH | 0.00349838 | ||||
Claim Weeks | 19859396 | 75 days ago | IN | 0 ETH | 0.0039607 | ||||
Claim Weeks | 19815654 | 81 days ago | IN | 0 ETH | 0.00469623 | ||||
Claim Weeks | 19798022 | 84 days ago | IN | 0 ETH | 0.00042798 | ||||
Claim Weeks | 19798015 | 84 days ago | IN | 0 ETH | 0.00149739 | ||||
Claim Weeks | 19792434 | 84 days ago | IN | 0 ETH | 0.00358633 | ||||
Claim Weeks | 19775341 | 87 days ago | IN | 0 ETH | 0.00777884 | ||||
Claim Weeks | 19774804 | 87 days ago | IN | 0 ETH | 0.00665038 | ||||
Claim Weeks | 19713138 | 95 days ago | IN | 0 ETH | 0.00659702 | ||||
Claim Weeks | 19706924 | 96 days ago | IN | 0 ETH | 0.00542147 | ||||
Claim Weeks | 19699778 | 97 days ago | IN | 0 ETH | 0.00121747 | ||||
Claim Weeks | 19698516 | 97 days ago | IN | 0 ETH | 0.00538517 | ||||
Claim Weeks | 19697501 | 98 days ago | IN | 0 ETH | 0.00309035 | ||||
Claim Weeks | 19692846 | 98 days ago | IN | 0 ETH | 0.00668122 | ||||
Claim Weeks | 19664248 | 102 days ago | IN | 0 ETH | 0.00756062 | ||||
Claim Weeks | 19657794 | 103 days ago | IN | 0 ETH | 0.00324766 | ||||
Claim Weeks | 19609012 | 110 days ago | IN | 0 ETH | 0.00793363 | ||||
Claim Weeks | 19608812 | 110 days ago | IN | 0 ETH | 0.00811056 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MerkleDrop
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-21 */ // Original code courtesy of mStable: https://github.com/mstable/merkle-drop // Extended by dHEDGE DAO - https://www.dhedge.org // File: @openzeppelin/contracts/cryptography/MerkleProof.sol pragma solidity ^0.5.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/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.5.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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view 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/ownership/Ownable.sol pragma solidity ^0.5.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. * * 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(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/MerkleDrop.sol pragma solidity 0.5.16; pragma experimental ABIEncoderV2; contract MerkleDrop is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; event Claimed(address claimant, uint256 week, uint256 balance); event TrancheAdded(uint256 tranche, bytes32 merkleRoot, uint256 totalAmount); event TrancheExpired(uint256 tranche); IERC20 public token; mapping(uint256 => bytes32) public merkleRoots; mapping(uint256 => mapping(address => bool)) public claimed; uint256 public tranches; constructor( IERC20 _token ) public { token = _token; } /*************************************** ADMIN ****************************************/ function seedNewAllocations(bytes32 _merkleRoot, uint256 _totalAllocation) public onlyOwner returns (uint256 trancheId) { token.safeTransferFrom(msg.sender, address(this), _totalAllocation); trancheId = tranches; merkleRoots[trancheId] = _merkleRoot; tranches = tranches.add(1); emit TrancheAdded(trancheId, _merkleRoot, _totalAllocation); } function expireTranche(uint256 _trancheId) public onlyOwner { merkleRoots[_trancheId] = bytes32(0); emit TrancheExpired(_trancheId); } function adminWithdraw(uint256 _amount) public onlyOwner { token.safeTransfer(msg.sender, _amount); } /*************************************** CLAIMING ****************************************/ function claimWeek( address _liquidityProvider, uint256 _tranche, uint256 _balance, bytes32[] memory _merkleProof ) public { _claimWeek(_liquidityProvider, _tranche, _balance, _merkleProof); _disburse(_liquidityProvider, _balance); } function claimWeeks( address _liquidityProvider, uint256[] memory _tranches, uint256[] memory _balances, bytes32[][] memory _merkleProofs ) public { uint256 len = _tranches.length; require(len == _balances.length && len == _merkleProofs.length, "Mismatching inputs"); uint256 totalBalance = 0; for(uint256 i = 0; i < len; i++) { _claimWeek(_liquidityProvider, _tranches[i], _balances[i], _merkleProofs[i]); totalBalance = totalBalance.add(_balances[i]); } _disburse(_liquidityProvider, totalBalance); } function verifyClaim( address _liquidityProvider, uint256 _tranche, uint256 _balance, bytes32[] memory _merkleProof ) public view returns (bool valid) { return _verifyClaim(_liquidityProvider, _tranche, _balance, _merkleProof); } /*************************************** CLAIMING - INTERNAL ****************************************/ function _claimWeek( address _liquidityProvider, uint256 _tranche, uint256 _balance, bytes32[] memory _merkleProof ) private { require(_tranche < tranches, "Week cannot be in the future"); require(!claimed[_tranche][_liquidityProvider], "LP has already claimed"); require(_verifyClaim(_liquidityProvider, _tranche, _balance, _merkleProof), "Incorrect merkle proof"); claimed[_tranche][_liquidityProvider] = true; emit Claimed(_liquidityProvider, _tranche, _balance); } function _verifyClaim( address _liquidityProvider, uint256 _tranche, uint256 _balance, bytes32[] memory _merkleProof ) private view returns (bool valid) { bytes32 leaf = keccak256(abi.encodePacked(_liquidityProvider, _balance)); return MerkleProof.verify(_merkleProof, merkleRoots[_tranche], leaf); } function _disburse(address _liquidityProvider, uint256 _balance) private { if (_balance > 0) { token.safeTransfer(_liquidityProvider, _balance); } else { revert("No balance would be transferred - not going to waste your gas"); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"claimant","type":"address"},{"indexed":false,"internalType":"uint256","name":"week","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balance","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":"uint256","name":"tranche","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"TrancheAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tranche","type":"uint256"}],"name":"TrancheExpired","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"adminWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint256","name":"_tranche","type":"uint256"},{"internalType":"uint256","name":"_balance","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"claimWeek","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint256[]","name":"_tranches","type":"uint256[]"},{"internalType":"uint256[]","name":"_balances","type":"uint256[]"},{"internalType":"bytes32[][]","name":"_merkleProofs","type":"bytes32[][]"}],"name":"claimWeeks","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_trancheId","type":"uint256"}],"name":"expireTranche","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"merkleRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"_totalAllocation","type":"uint256"}],"name":"seedNewAllocations","outputs":[{"internalType":"uint256","name":"trancheId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tranches","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_liquidityProvider","type":"address"},{"internalType":"uint256","name":"_tranche","type":"uint256"},{"internalType":"uint256","name":"_balance","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"verifyClaim","outputs":[{"internalType":"bool","name":"valid","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620014ed380380620014ed8339810160408190526200003491620000d0565b6000620000496001600160e01b03620000b916565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b039290921691909117905562000139565b3390565b8051620000ca816200011f565b92915050565b600060208284031215620000e357600080fd5b6000620000f18484620000bd565b949350505050565b6000620000ca8262000113565b6000620000ca82620000f9565b6001600160a01b031690565b6200012a8162000106565b81146200013657600080fd5b50565b6113a480620001496000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638f32d59b1161008c578063eb0d07f511610066578063eb0d07f5146101be578063ebf04917146101d1578063f2fde38b146101d9578063fc0c546a146101ec576100ea565b80638f32d59b14610190578063ba59371414610198578063d5efd20a146101ab576100ea565b8063715018a6116100c8578063715018a61461014d57806371c5ecb1146101555780637c5b4a37146101685780638da5cb5b1461017b576100ea565b8063120aa877146100ef57806358b4e4b41461011857806365ef53b11461012d575b600080fd5b6101026100fd366004610d8a565b610201565b60405161010f9190611191565b60405180910390f35b61012b610126366004610ca7565b610221565b005b61014061013b366004610d32565b61023d565b60405161010f919061119f565b61012b6102f8565b610140610163366004610d6c565b610366565b61012b610176366004610d6c565b610378565b6101836103bc565b60405161010f9190611125565b6101026103cb565b61012b6101a6366004610bfe565b6103ef565b61012b6101b9366004610d6c565b6104b1565b6101026101cc366004610ca7565b610521565b61014061053a565b61012b6101e7366004610be0565b610540565b6101f461056d565b60405161010f91906111ad565b600360209081526000928352604080842090915290825290205460ff1681565b61022d8484848461057c565b6102378483610677565b50505050565b60006102476103cb565b61026c5760405162461bcd60e51b81526004016102639061120b565b60405180910390fd5b60015461028a906001600160a01b031633308563ffffffff6106bb16565b5060048054600081815260026020526040902084905590546102b390600163ffffffff61071616565b6004556040517f5c8770684b8f82e9ade880fb05ccfb53c969170cd40e9746a3703f241c9023ec906102ea9083908690869061126b565b60405180910390a192915050565b6103006103cb565b61031c5760405162461bcd60e51b81526004016102639061120b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60026020526000908152604090205481565b6103806103cb565b61039c5760405162461bcd60e51b81526004016102639061120b565b6001546103b9906001600160a01b0316338363ffffffff61074416565b50565b6000546001600160a01b031690565b600080546001600160a01b03166103e061076b565b6001600160a01b031614905090565b82518251811480156104015750815181145b61041d5760405162461bcd60e51b81526004016102639061123b565b6000805b8281101561049e5761046e8787838151811061043957fe5b602002602001015187848151811061044d57fe5b602002602001015187858151811061046157fe5b602002602001015161057c565b61049485828151811061047d57fe5b60200260200101518361071690919063ffffffff16565b9150600101610421565b506104a98682610677565b505050505050565b6104b96103cb565b6104d55760405162461bcd60e51b81526004016102639061120b565b60008181526002602052604080822091909155517fcc071cbd9ae50a4c78d1153b76bd2d46ba8d4c7662842718ec3de1d67a144daf9061051690839061119f565b60405180910390a150565b600061052f8585858561076f565b90505b949350505050565b60045481565b6105486103cb565b6105645760405162461bcd60e51b81526004016102639061120b565b6103b9816107c5565b6001546001600160a01b031681565b600454831061059d5760405162461bcd60e51b8152600401610263906111bb565b60008381526003602090815260408083206001600160a01b038816845290915290205460ff16156105e05760405162461bcd60e51b81526004016102639061122b565b6105ec8484848461076f565b6106085760405162461bcd60e51b8152600401610263906111db565b60008381526003602090815260408083206001600160a01b038816845290915290819020805460ff19166001179055517f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a9061066990869086908690611176565b60405180910390a150505050565b801561069f5760015461069a906001600160a01b0316838363ffffffff61074416565b6106b7565b60405162461bcd60e51b81526004016102639061121b565b5050565b6040516102379085906323b872dd60e01b906106df90879087908790602401611133565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610846565b60008282018381101561073b5760405162461bcd60e51b8152600401610263906111eb565b90505b92915050565b60405161076690849063a9059cbb60e01b906106df908690869060240161115b565b505050565b3390565b60008085846040516020016107859291906110d7565b6040516020818303038152906040528051906020012090506107bb8360026000888152602001908152602001600020548361092b565b9695505050505050565b6001600160a01b0381166107eb5760405162461bcd60e51b8152600401610263906111cb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610858826001600160a01b03166109ca565b6108745760405162461bcd60e51b81526004016102639061125b565b60006060836001600160a01b0316836040516108909190611119565b6000604051808303816000865af19150503d80600081146108cd576040519150601f19603f3d011682016040523d82523d6000602084013e6108d2565b606091505b5091509150816108f45760405162461bcd60e51b8152600401610263906111fb565b805115610237578080602001905161090f9190810190610d14565b6102375760405162461bcd60e51b81526004016102639061124b565b600081815b85518110156109bd57600086828151811061094757fe5b6020026020010151905080831161098857828160405160200161096b9291906110fd565b6040516020818303038152906040528051906020012092506109b4565b808360405160200161099b9291906110fd565b6040516020818303038152906040528051906020012092505b50600101610930565b50831490505b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610532575050151592915050565b803561073e8161133b565b600082601f830112610a1f57600080fd5b8135610a32610a2d826112a0565b611279565b81815260209384019390925082018360005b83811015610a705781358601610a5a8882610a7a565b8452506020928301929190910190600101610a44565b5050505092915050565b600082601f830112610a8b57600080fd5b8135610a99610a2d826112a0565b91508181835260208401935060208101905083856020840282011115610abe57600080fd5b60005b83811015610a705781610ad48882610bd5565b8452506020928301929190910190600101610ac1565b600082601f830112610afb57600080fd5b8135610b09610a2d826112a0565b91508181835260208401935060208101905083856020840282011115610b2e57600080fd5b60005b83811015610a705781610b448882610bd5565b8452506020928301929190910190600101610b31565b600082601f830112610b6b57600080fd5b8135610b79610a2d826112a0565b91508181835260208401935060208101905083856020840282011115610b9e57600080fd5b60005b83811015610a705781610bb48882610bd5565b8452506020928301929190910190600101610ba1565b805161073e8161134f565b803561073e81611358565b600060208284031215610bf257600080fd5b60006105328484610a03565b60008060008060808587031215610c1457600080fd5b6000610c208787610a03565b945050602085013567ffffffffffffffff811115610c3d57600080fd5b610c4987828801610b5a565b935050604085013567ffffffffffffffff811115610c6657600080fd5b610c7287828801610b5a565b925050606085013567ffffffffffffffff811115610c8f57600080fd5b610c9b87828801610a0e565b91505092959194509250565b60008060008060808587031215610cbd57600080fd5b6000610cc98787610a03565b9450506020610cda87828801610bd5565b9350506040610ceb87828801610bd5565b925050606085013567ffffffffffffffff811115610d0857600080fd5b610c9b87828801610aea565b600060208284031215610d2657600080fd5b60006105328484610bca565b60008060408385031215610d4557600080fd5b6000610d518585610bd5565b9250506020610d6285828601610bd5565b9150509250929050565b600060208284031215610d7e57600080fd5b60006105328484610bd5565b60008060408385031215610d9d57600080fd5b6000610da98585610bd5565b9250506020610d6285828601610a03565b610dc3816112d3565b82525050565b610dc3610dd5826112d3565b611329565b610dc3816112de565b610dc3816112e3565b610dc3610df8826112e3565b6112e3565b6000610e08826112c1565b610e1281856112c5565b9350610e228185602086016112fd565b9290920192915050565b610dc3816112f2565b6000610e42601c836112ca565b7f5765656b2063616e6e6f7420626520696e207468652066757475726500000000815260200192915050565b6000610e7b6026836112ca565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610ec36016836112ca565b7524b731b7b93932b1ba1036b2b935b63290383937b7b360511b815260200192915050565b6000610ef5601b836112ca565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000610f2e6020836112ca565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000610f676020836112ca565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000610fa0603d836112ca565b7f4e6f2062616c616e636520776f756c64206265207472616e736665727265642081527f2d206e6f7420676f696e6720746f20776173746520796f757220676173000000602082015260400192915050565b6000610fff6016836112ca565b751314081a185cc8185b1c9958591e4818db185a5b595960521b815260200192915050565b60006110316012836112ca565b714d69736d61746368696e6720696e7075747360701b815260200192915050565b600061105f602a836112ca565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006110ab601f836112ca565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b60006110e38285610dc9565b6014820191506110f38284610dec565b5060200192915050565b60006111098285610dec565b6020820191506110f38284610dec565b60006109c38284610dfd565b6020810161073e8284610dba565b606081016111418286610dba565b61114e6020830185610dba565b6105326040830184610de3565b604081016111698285610dba565b6109c36020830184610de3565b606081016111848286610dba565b61114e6020830185610de3565b6020810161073e8284610dda565b6020810161073e8284610de3565b6020810161073e8284610e2c565b6020808252810161073e81610e35565b6020808252810161073e81610e6e565b6020808252810161073e81610eb6565b6020808252810161073e81610ee8565b6020808252810161073e81610f21565b6020808252810161073e81610f5a565b6020808252810161073e81610f93565b6020808252810161073e81610ff2565b6020808252810161073e81611024565b6020808252810161073e81611052565b6020808252810161073e8161109e565b606081016111848286610de3565b60405181810167ffffffffffffffff8111828210171561129857600080fd5b604052919050565b600067ffffffffffffffff8211156112b757600080fd5b5060209081020190565b5190565b919050565b90815260200190565b600061073e826112e6565b151590565b90565b6001600160a01b031690565b600061073e826112d3565b60005b83811015611318578181015183820152602001611300565b838111156102375750506000910152565b600061073e82600061073e8260601b90565b611344816112d3565b81146103b957600080fd5b611344816112de565b611344816112e356fea365627a7a72315820a7f4ab3f88bf9a0beb338480c16cba6793a22fe65a80ed08cc31d4fadb0a11496c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000ca1207647ff814039530d7d35df0e1dd2e91fa84
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638f32d59b1161008c578063eb0d07f511610066578063eb0d07f5146101be578063ebf04917146101d1578063f2fde38b146101d9578063fc0c546a146101ec576100ea565b80638f32d59b14610190578063ba59371414610198578063d5efd20a146101ab576100ea565b8063715018a6116100c8578063715018a61461014d57806371c5ecb1146101555780637c5b4a37146101685780638da5cb5b1461017b576100ea565b8063120aa877146100ef57806358b4e4b41461011857806365ef53b11461012d575b600080fd5b6101026100fd366004610d8a565b610201565b60405161010f9190611191565b60405180910390f35b61012b610126366004610ca7565b610221565b005b61014061013b366004610d32565b61023d565b60405161010f919061119f565b61012b6102f8565b610140610163366004610d6c565b610366565b61012b610176366004610d6c565b610378565b6101836103bc565b60405161010f9190611125565b6101026103cb565b61012b6101a6366004610bfe565b6103ef565b61012b6101b9366004610d6c565b6104b1565b6101026101cc366004610ca7565b610521565b61014061053a565b61012b6101e7366004610be0565b610540565b6101f461056d565b60405161010f91906111ad565b600360209081526000928352604080842090915290825290205460ff1681565b61022d8484848461057c565b6102378483610677565b50505050565b60006102476103cb565b61026c5760405162461bcd60e51b81526004016102639061120b565b60405180910390fd5b60015461028a906001600160a01b031633308563ffffffff6106bb16565b5060048054600081815260026020526040902084905590546102b390600163ffffffff61071616565b6004556040517f5c8770684b8f82e9ade880fb05ccfb53c969170cd40e9746a3703f241c9023ec906102ea9083908690869061126b565b60405180910390a192915050565b6103006103cb565b61031c5760405162461bcd60e51b81526004016102639061120b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60026020526000908152604090205481565b6103806103cb565b61039c5760405162461bcd60e51b81526004016102639061120b565b6001546103b9906001600160a01b0316338363ffffffff61074416565b50565b6000546001600160a01b031690565b600080546001600160a01b03166103e061076b565b6001600160a01b031614905090565b82518251811480156104015750815181145b61041d5760405162461bcd60e51b81526004016102639061123b565b6000805b8281101561049e5761046e8787838151811061043957fe5b602002602001015187848151811061044d57fe5b602002602001015187858151811061046157fe5b602002602001015161057c565b61049485828151811061047d57fe5b60200260200101518361071690919063ffffffff16565b9150600101610421565b506104a98682610677565b505050505050565b6104b96103cb565b6104d55760405162461bcd60e51b81526004016102639061120b565b60008181526002602052604080822091909155517fcc071cbd9ae50a4c78d1153b76bd2d46ba8d4c7662842718ec3de1d67a144daf9061051690839061119f565b60405180910390a150565b600061052f8585858561076f565b90505b949350505050565b60045481565b6105486103cb565b6105645760405162461bcd60e51b81526004016102639061120b565b6103b9816107c5565b6001546001600160a01b031681565b600454831061059d5760405162461bcd60e51b8152600401610263906111bb565b60008381526003602090815260408083206001600160a01b038816845290915290205460ff16156105e05760405162461bcd60e51b81526004016102639061122b565b6105ec8484848461076f565b6106085760405162461bcd60e51b8152600401610263906111db565b60008381526003602090815260408083206001600160a01b038816845290915290819020805460ff19166001179055517f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a9061066990869086908690611176565b60405180910390a150505050565b801561069f5760015461069a906001600160a01b0316838363ffffffff61074416565b6106b7565b60405162461bcd60e51b81526004016102639061121b565b5050565b6040516102379085906323b872dd60e01b906106df90879087908790602401611133565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610846565b60008282018381101561073b5760405162461bcd60e51b8152600401610263906111eb565b90505b92915050565b60405161076690849063a9059cbb60e01b906106df908690869060240161115b565b505050565b3390565b60008085846040516020016107859291906110d7565b6040516020818303038152906040528051906020012090506107bb8360026000888152602001908152602001600020548361092b565b9695505050505050565b6001600160a01b0381166107eb5760405162461bcd60e51b8152600401610263906111cb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610858826001600160a01b03166109ca565b6108745760405162461bcd60e51b81526004016102639061125b565b60006060836001600160a01b0316836040516108909190611119565b6000604051808303816000865af19150503d80600081146108cd576040519150601f19603f3d011682016040523d82523d6000602084013e6108d2565b606091505b5091509150816108f45760405162461bcd60e51b8152600401610263906111fb565b805115610237578080602001905161090f9190810190610d14565b6102375760405162461bcd60e51b81526004016102639061124b565b600081815b85518110156109bd57600086828151811061094757fe5b6020026020010151905080831161098857828160405160200161096b9291906110fd565b6040516020818303038152906040528051906020012092506109b4565b808360405160200161099b9291906110fd565b6040516020818303038152906040528051906020012092505b50600101610930565b50831490505b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610532575050151592915050565b803561073e8161133b565b600082601f830112610a1f57600080fd5b8135610a32610a2d826112a0565b611279565b81815260209384019390925082018360005b83811015610a705781358601610a5a8882610a7a565b8452506020928301929190910190600101610a44565b5050505092915050565b600082601f830112610a8b57600080fd5b8135610a99610a2d826112a0565b91508181835260208401935060208101905083856020840282011115610abe57600080fd5b60005b83811015610a705781610ad48882610bd5565b8452506020928301929190910190600101610ac1565b600082601f830112610afb57600080fd5b8135610b09610a2d826112a0565b91508181835260208401935060208101905083856020840282011115610b2e57600080fd5b60005b83811015610a705781610b448882610bd5565b8452506020928301929190910190600101610b31565b600082601f830112610b6b57600080fd5b8135610b79610a2d826112a0565b91508181835260208401935060208101905083856020840282011115610b9e57600080fd5b60005b83811015610a705781610bb48882610bd5565b8452506020928301929190910190600101610ba1565b805161073e8161134f565b803561073e81611358565b600060208284031215610bf257600080fd5b60006105328484610a03565b60008060008060808587031215610c1457600080fd5b6000610c208787610a03565b945050602085013567ffffffffffffffff811115610c3d57600080fd5b610c4987828801610b5a565b935050604085013567ffffffffffffffff811115610c6657600080fd5b610c7287828801610b5a565b925050606085013567ffffffffffffffff811115610c8f57600080fd5b610c9b87828801610a0e565b91505092959194509250565b60008060008060808587031215610cbd57600080fd5b6000610cc98787610a03565b9450506020610cda87828801610bd5565b9350506040610ceb87828801610bd5565b925050606085013567ffffffffffffffff811115610d0857600080fd5b610c9b87828801610aea565b600060208284031215610d2657600080fd5b60006105328484610bca565b60008060408385031215610d4557600080fd5b6000610d518585610bd5565b9250506020610d6285828601610bd5565b9150509250929050565b600060208284031215610d7e57600080fd5b60006105328484610bd5565b60008060408385031215610d9d57600080fd5b6000610da98585610bd5565b9250506020610d6285828601610a03565b610dc3816112d3565b82525050565b610dc3610dd5826112d3565b611329565b610dc3816112de565b610dc3816112e3565b610dc3610df8826112e3565b6112e3565b6000610e08826112c1565b610e1281856112c5565b9350610e228185602086016112fd565b9290920192915050565b610dc3816112f2565b6000610e42601c836112ca565b7f5765656b2063616e6e6f7420626520696e207468652066757475726500000000815260200192915050565b6000610e7b6026836112ca565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000610ec36016836112ca565b7524b731b7b93932b1ba1036b2b935b63290383937b7b360511b815260200192915050565b6000610ef5601b836112ca565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000610f2e6020836112ca565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000610f676020836112ca565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000610fa0603d836112ca565b7f4e6f2062616c616e636520776f756c64206265207472616e736665727265642081527f2d206e6f7420676f696e6720746f20776173746520796f757220676173000000602082015260400192915050565b6000610fff6016836112ca565b751314081a185cc8185b1c9958591e4818db185a5b595960521b815260200192915050565b60006110316012836112ca565b714d69736d61746368696e6720696e7075747360701b815260200192915050565b600061105f602a836112ca565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b60006110ab601f836112ca565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b60006110e38285610dc9565b6014820191506110f38284610dec565b5060200192915050565b60006111098285610dec565b6020820191506110f38284610dec565b60006109c38284610dfd565b6020810161073e8284610dba565b606081016111418286610dba565b61114e6020830185610dba565b6105326040830184610de3565b604081016111698285610dba565b6109c36020830184610de3565b606081016111848286610dba565b61114e6020830185610de3565b6020810161073e8284610dda565b6020810161073e8284610de3565b6020810161073e8284610e2c565b6020808252810161073e81610e35565b6020808252810161073e81610e6e565b6020808252810161073e81610eb6565b6020808252810161073e81610ee8565b6020808252810161073e81610f21565b6020808252810161073e81610f5a565b6020808252810161073e81610f93565b6020808252810161073e81610ff2565b6020808252810161073e81611024565b6020808252810161073e81611052565b6020808252810161073e8161109e565b606081016111848286610de3565b60405181810167ffffffffffffffff8111828210171561129857600080fd5b604052919050565b600067ffffffffffffffff8211156112b757600080fd5b5060209081020190565b5190565b919050565b90815260200190565b600061073e826112e6565b151590565b90565b6001600160a01b031690565b600061073e826112d3565b60005b83811015611318578181015183820152602001611300565b838111156102375750506000910152565b600061073e82600061073e8260601b90565b611344816112d3565b81146103b957600080fd5b611344816112de565b611344816112e356fea365627a7a72315820a7f4ab3f88bf9a0beb338480c16cba6793a22fe65a80ed08cc31d4fadb0a11496c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ca1207647ff814039530d7d35df0e1dd2e91fa84
-----Decoded View---------------
Arg [0] : _token (address): 0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca1207647ff814039530d7d35df0e1dd2e91fa84
Deployed Bytecode Sourcemap
20578:4325:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20578:4325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20965:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;22184:311;;;;;;;;;:::i;:::-;;21290:425;;;;;;;;;:::i;:::-;;;;;;;;19723:140;;;:::i;20912:46::-;;;;;;;;;:::i;21913:138::-;;;;;;;;;:::i;18912:79::-;;;:::i;:::-;;;;;;;;19278:94;;;:::i;22505:644::-;;;;;;;;;:::i;21723:182::-;;;;;;;;;:::i;23159:316::-;;;;;;;;;:::i;21031:23::-;;;:::i;20018:109::-;;;;;;;;;:::i;20884:19::-;;;:::i;:::-;;;;;;;;20965:59;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22184:311::-;22373:64;22384:18;22404:8;22414;22424:12;22373:10;:64::i;:::-;22448:39;22458:18;22478:8;22448:9;:39::i;:::-;22184:311;;;;:::o;21290:425::-;21414:17;19124:9;:7;:9::i;:::-;19116:54;;;;-1:-1:-1;;;19116:54:0;;;;;;;;;;;;;;;;;21449:5;;:67;;-1:-1:-1;;;;;21449:5:0;21472:10;21492:4;21499:16;21449:67;:22;:67;:::i;:::-;-1:-1:-1;21541:8:0;;;21560:22;;;;:11;:22;;;;;:36;;;21620:8;;:15;;21633:1;21620:15;:12;:15;:::i;:::-;21609:8;:26;21653:54;;;;;;21666:9;;21677:11;;21690:16;;21653:54;;;;;;;;;;21290:425;;;;:::o;19723:140::-;19124:9;:7;:9::i;:::-;19116:54;;;;-1:-1:-1;;;19116:54:0;;;;;;;;;19822:1;19806:6;;19785:40;;-1:-1:-1;;;;;19806:6:0;;;;19785:40;;19822:1;;19785:40;19853:1;19836:19;;-1:-1:-1;;;;;;19836:19:0;;;19723:140::o;20912:46::-;;;;;;;;;;;;;:::o;21913:138::-;19124:9;:7;:9::i;:::-;19116:54;;;;-1:-1:-1;;;19116:54:0;;;;;;;;;22004:5;;:39;;-1:-1:-1;;;;;22004:5:0;22023:10;22035:7;22004:39;:18;:39;:::i;:::-;21913:138;:::o;18912:79::-;18950:7;18977:6;-1:-1:-1;;;;;18977:6:0;18912:79;:::o;19278:94::-;19318:4;19358:6;;-1:-1:-1;;;;;19358:6:0;19342:12;:10;:12::i;:::-;-1:-1:-1;;;;;19342:22:0;;19335:29;;19278:94;:::o;22505:644::-;22732:16;;22774;;22767:23;;:54;;;;;22801:13;:20;22794:3;:27;22767:54;22759:85;;;;-1:-1:-1;;;22759:85:0;;;;;;;;;22857:20;;22892:196;22915:3;22911:1;:7;22892:196;;;22940:76;22951:18;22971:9;22981:1;22971:12;;;;;;;;;;;;;;22985:9;22995:1;22985:12;;;;;;;;;;;;;;22999:13;23013:1;22999:16;;;;;;;;;;;;;;22940:10;:76::i;:::-;23046:30;23063:9;23073:1;23063:12;;;;;;;;;;;;;;23046;:16;;:30;;;;:::i;:::-;23031:45;-1:-1:-1;22920:3:0;;22892:196;;;;23098:43;23108:18;23128:12;23098:9;:43::i;:::-;22505:644;;;;;;:::o;21723:182::-;19124:9;:7;:9::i;:::-;19116:54;;;;-1:-1:-1;;;19116:54:0;;;;;;;;;21851:1;21817:23;;;:11;:23;;;;;;:36;;;;21871:26;;;;;21829:10;;21871:26;;;;;;;;;;21723:182;:::o;23159:316::-;23366:10;23401:66;23414:18;23434:8;23444;23454:12;23401;:66::i;:::-;23394:73;;23159:316;;;;;;;:::o;21031:23::-;;;;:::o;20018:109::-;19124:9;:7;:9::i;:::-;19116:54;;;;-1:-1:-1;;;19116:54:0;;;;;;;;;20091:28;20110:8;20091:18;:28::i;20884:19::-;;;-1:-1:-1;;;;;20884:19:0;;:::o;23617:579::-;23827:8;;23816;:19;23808:60;;;;-1:-1:-1;;;23808:60:0;;;;;;;;;23890:17;;;;:7;:17;;;;;;;;-1:-1:-1;;;;;23890:37:0;;;;;;;;;;;;23889:38;23881:73;;;;-1:-1:-1;;;23881:73:0;;;;;;;;;23973:66;23986:18;24006:8;24016;24026:12;23973;:66::i;:::-;23965:101;;;;-1:-1:-1;;;23965:101:0;;;;;;;;;24079:17;;;;:7;:17;;;;;;;;-1:-1:-1;;;;;24079:37:0;;;;;;;;;;;:44;;-1:-1:-1;;24079:44:0;24119:4;24079:44;;;24141:47;;;;;24097:18;;24087:8;;24179;;24141:47;;;;;;;;;;23617:579;;;;:::o;24612:288::-;24700:12;;24696:197;;24729:5;;:48;;-1:-1:-1;;;;;24729:5:0;24748:18;24768:8;24729:48;:18;:48;:::i;:::-;24696:197;;;24810:71;;-1:-1:-1;;;24810:71:0;;;;;;;;24696:197;24612:288;;:::o;13784:204::-;13911:68;;13885:95;;13904:5;;-1:-1:-1;;;13934:27:0;13911:68;;13963:4;;13969:2;;13973:5;;13911:68;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;13911:68:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;13911:68:0;;;179:29:-1;;;;160:49;;;13885:18:0;:95::i;5269:181::-;5327:7;5359:5;;;5383:6;;;;5375:46;;;;-1:-1:-1;;;5375:46:0;;;;;;;;;5441:1;-1:-1:-1;5269:181:0;;;;;:::o;13600:176::-;13709:58;;13683:85;;13702:5;;-1:-1:-1;;;13732:23:0;13709:58;;13757:2;;13761:5;;13709:58;;;;13683:85;13600:176;;;:::o;17618:98::-;17698:10;17618:98;:::o;24206:396::-;24415:10;24443:12;24485:18;24505:8;24468:46;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;24468:46:0;;;24458:57;;;;;;24443:72;;24533:61;24552:12;24566:11;:21;24578:8;24566:21;;;;;;;;;;;;24589:4;24533:18;:61::i;:::-;24526:68;24206:396;-1:-1:-1;;;;;;24206:396:0:o;20233:229::-;-1:-1:-1;;;;;20307:22:0;;20299:73;;;;-1:-1:-1;;;20299:73:0;;;;;;;;;20409:6;;;20388:38;;-1:-1:-1;;;;;20388:38:0;;;;20409:6;;;20388:38;;;20437:6;:17;;-1:-1:-1;;;;;;20437:17:0;-1:-1:-1;;;;;20437:17:0;;;;;;;;;;20233:229::o;15639:1114::-;16243:27;16251:5;-1:-1:-1;;;;;16243:25:0;;:27::i;:::-;16235:71;;;;-1:-1:-1;;;16235:71:0;;;;;;;;;16380:12;16394:23;16429:5;-1:-1:-1;;;;;16421:19:0;16441:4;16421:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16379:67:0;;;;16465:7;16457:52;;;;-1:-1:-1;;;16457:52:0;;;;;;;;;16526:17;;:21;16522:224;;16668:10;16657:30;;;;;;;;;;;;;;16649:85;;;;-1:-1:-1;;;16649:85:0;;;;;;;;673:796;764:4;804;764;821:525;845:5;:12;841:1;:16;821:525;;;879:20;902:5;908:1;902:8;;;;;;;;;;;;;;879:31;;947:12;931;:28;927:408;;1101:12;1115;1084:44;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1084:44:0;;;1074:55;;;;;;1059:70;;927:408;;;1291:12;1305;1274:44;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1274:44:0;;;1264:55;;;;;;1249:70;;927:408;-1:-1:-1;859:3:0;;821:525;;;-1:-1:-1;1441:20:0;;;-1:-1:-1;673:796:0;;;;;;:::o;10629:619::-;10689:4;11157:20;;11000:66;11197:23;;;;;;:42;;-1:-1:-1;;11224:15:0;;;11189:51;-1:-1:-1;;10629:619:0:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;162:741;;300:3;293:4;285:6;281:17;277:27;267:2;;318:1;315;308:12;267:2;355:6;342:20;377:101;392:85;470:6;392:85;;;377:101;;;506:21;;;550:4;538:17;;;;368:110;;-1:-1;563:14;;538:17;658:1;643:254;668:6;665:1;662:13;643:254;;;751:3;738:17;730:6;726:30;775:58;829:3;817:10;775:58;;;763:71;;-1:-1;857:4;848:14;;;;876;;;;;690:1;683:9;643:254;;;647:14;260:643;;;;;;;;929:699;;1042:3;1035:4;1027:6;1023:17;1019:27;1009:2;;1060:1;1057;1050:12;1009:2;1097:6;1084:20;1119:76;1134:60;1187:6;1134:60;;1119:76;1110:85;;1212:5;1237:6;1230:5;1223:21;1267:4;1259:6;1255:17;1245:27;;1289:4;1284:3;1280:14;1273:21;;1342:6;1389:3;1381:4;1373:6;1369:17;1364:3;1360:27;1357:36;1354:2;;;1406:1;1403;1396:12;1354:2;1431:1;1416:206;1441:6;1438:1;1435:13;1416:206;;;1499:3;1521:37;1554:3;1542:10;1521:37;;;1509:50;;-1:-1;1582:4;1573:14;;;;1601;;;;;1463:1;1456:9;1416:206;;1654:707;;1771:3;1764:4;1756:6;1752:17;1748:27;1738:2;;1789:1;1786;1779:12;1738:2;1826:6;1813:20;1848:80;1863:64;1920:6;1863:64;;1848:80;1839:89;;1945:5;1970:6;1963:5;1956:21;2000:4;1992:6;1988:17;1978:27;;2022:4;2017:3;2013:14;2006:21;;2075:6;2122:3;2114:4;2106:6;2102:17;2097:3;2093:27;2090:36;2087:2;;;2139:1;2136;2129:12;2087:2;2164:1;2149:206;2174:6;2171:1;2168:13;2149:206;;;2232:3;2254:37;2287:3;2275:10;2254:37;;;2242:50;;-1:-1;2315:4;2306:14;;;;2334;;;;;2196:1;2189:9;2149:206;;2387:707;;2504:3;2497:4;2489:6;2485:17;2481:27;2471:2;;2522:1;2519;2512:12;2471:2;2559:6;2546:20;2581:80;2596:64;2653:6;2596:64;;2581:80;2572:89;;2678:5;2703:6;2696:5;2689:21;2733:4;2725:6;2721:17;2711:27;;2755:4;2750:3;2746:14;2739:21;;2808:6;2855:3;2847:4;2839:6;2835:17;2830:3;2826:27;2823:36;2820:2;;;2872:1;2869;2862:12;2820:2;2897:1;2882:206;2907:6;2904:1;2901:13;2882:206;;;2965:3;2987:37;3020:3;3008:10;2987:37;;;2975:50;;-1:-1;3048:4;3039:14;;;;3067;;;;;2929:1;2922:9;2882:206;;3102:128;3177:13;;3195:30;3177:13;3195:30;;3237:130;3304:20;;3329:33;3304:20;3329:33;;3511:241;;3615:2;3603:9;3594:7;3590:23;3586:32;3583:2;;;3631:1;3628;3621:12;3583:2;3666:1;3683:53;3728:7;3708:9;3683:53;;3759:1067;;;;;4010:3;3998:9;3989:7;3985:23;3981:33;3978:2;;;4027:1;4024;4017:12;3978:2;4062:1;4079:53;4124:7;4104:9;4079:53;;;4069:63;;4041:97;4197:2;4186:9;4182:18;4169:32;4221:18;4213:6;4210:30;4207:2;;;4253:1;4250;4243:12;4207:2;4273:78;4343:7;4334:6;4323:9;4319:22;4273:78;;;4263:88;;4148:209;4416:2;4405:9;4401:18;4388:32;4440:18;4432:6;4429:30;4426:2;;;4472:1;4469;4462:12;4426:2;4492:78;4562:7;4553:6;4542:9;4538:22;4492:78;;;4482:88;;4367:209;4635:2;4624:9;4620:18;4607:32;4659:18;4651:6;4648:30;4645:2;;;4691:1;4688;4681:12;4645:2;4711:99;4802:7;4793:6;4782:9;4778:22;4711:99;;;4701:109;;4586:230;3972:854;;;;;;;;4833:753;;;;;5013:3;5001:9;4992:7;4988:23;4984:33;4981:2;;;5030:1;5027;5020:12;4981:2;5065:1;5082:53;5127:7;5107:9;5082:53;;;5072:63;;5044:97;5172:2;5190:53;5235:7;5226:6;5215:9;5211:22;5190:53;;;5180:63;;5151:98;5280:2;5298:53;5343:7;5334:6;5323:9;5319:22;5298:53;;;5288:63;;5259:98;5416:2;5405:9;5401:18;5388:32;5440:18;5432:6;5429:30;5426:2;;;5472:1;5469;5462:12;5426:2;5492:78;5562:7;5553:6;5542:9;5538:22;5492:78;;5593:257;;5705:2;5693:9;5684:7;5680:23;5676:32;5673:2;;;5721:1;5718;5711:12;5673:2;5756:1;5773:61;5826:7;5806:9;5773:61;;5857:366;;;5978:2;5966:9;5957:7;5953:23;5949:32;5946:2;;;5994:1;5991;5984:12;5946:2;6029:1;6046:53;6091:7;6071:9;6046:53;;;6036:63;;6008:97;6136:2;6154:53;6199:7;6190:6;6179:9;6175:22;6154:53;;;6144:63;;6115:98;5940:283;;;;;;6230:241;;6334:2;6322:9;6313:7;6309:23;6305:32;6302:2;;;6350:1;6347;6340:12;6302:2;6385:1;6402:53;6447:7;6427:9;6402:53;;6478:366;;;6599:2;6587:9;6578:7;6574:23;6570:32;6567:2;;;6615:1;6612;6605:12;6567:2;6650:1;6667:53;6712:7;6692:9;6667:53;;;6657:63;;6629:97;6757:2;6775:53;6820:7;6811:6;6800:9;6796:22;6775:53;;6851:113;6934:24;6952:5;6934:24;;;6929:3;6922:37;6916:48;;;6971:152;7072:45;7092:24;7110:5;7092:24;;;7072:45;;7130:104;7207:21;7222:5;7207:21;;7241:113;7324:24;7342:5;7324:24;;7361:152;7462:45;7482:24;7500:5;7482:24;;;7462:45;;7520:356;;7648:38;7680:5;7648:38;;;7698:88;7779:6;7774:3;7698:88;;;7691:95;;7791:52;7836:6;7831:3;7824:4;7817:5;7813:16;7791:52;;;7855:16;;;;;7628:248;-1:-1;;7628:248;7883:154;7980:51;8025:5;7980:51;;8045:328;;8205:67;8269:2;8264:3;8205:67;;;8305:30;8285:51;;8364:2;8355:12;;8191:182;-1:-1;;8191:182;8382:375;;8542:67;8606:2;8601:3;8542:67;;;8642:34;8622:55;;-1:-1;;;8706:2;8697:12;;8690:30;8748:2;8739:12;;8528:229;-1:-1;;8528:229;8766:322;;8926:67;8990:2;8985:3;8926:67;;;-1:-1;;;9006:45;;9079:2;9070:12;;8912:176;-1:-1;;8912:176;9097:327;;9257:67;9321:2;9316:3;9257:67;;;9357:29;9337:50;;9415:2;9406:12;;9243:181;-1:-1;;9243:181;9433:332;;9593:67;9657:2;9652:3;9593:67;;;9693:34;9673:55;;9756:2;9747:12;;9579:186;-1:-1;;9579:186;9774:332;;9934:67;9998:2;9993:3;9934:67;;;10034:34;10014:55;;10097:2;10088:12;;9920:186;-1:-1;;9920:186;10115:398;;10275:67;10339:2;10334:3;10275:67;;;10375:34;10355:55;;10444:31;10439:2;10430:12;;10423:53;10504:2;10495:12;;10261:252;-1:-1;;10261:252;10522:322;;10682:67;10746:2;10741:3;10682:67;;;-1:-1;;;10762:45;;10835:2;10826:12;;10668:176;-1:-1;;10668:176;10853:318;;11013:67;11077:2;11072:3;11013:67;;;-1:-1;;;11093:41;;11162:2;11153:12;;10999:172;-1:-1;;10999:172;11180:379;;11340:67;11404:2;11399:3;11340:67;;;11440:34;11420:55;;-1:-1;;;11504:2;11495:12;;11488:34;11550:2;11541:12;;11326:233;-1:-1;;11326:233;11568:331;;11728:67;11792:2;11787:3;11728:67;;;11828:33;11808:54;;11890:2;11881:12;;11714:185;-1:-1;;11714:185;12186:383;;12333:75;12404:3;12395:6;12333:75;;;12430:2;12425:3;12421:12;12414:19;;12444:75;12515:3;12506:6;12444:75;;;-1:-1;12541:2;12532:12;;12321:248;-1:-1;;12321:248;12576:383;;12723:75;12794:3;12785:6;12723:75;;;12820:2;12815:3;12811:12;12804:19;;12834:75;12905:3;12896:6;12834:75;;12966:262;;13110:93;13199:3;13190:6;13110:93;;13235:213;13353:2;13338:18;;13367:71;13342:9;13411:6;13367:71;;13455:435;13629:2;13614:18;;13643:71;13618:9;13687:6;13643:71;;;13725:72;13793:2;13782:9;13778:18;13769:6;13725:72;;;13808;13876:2;13865:9;13861:18;13852:6;13808:72;;13897:324;14043:2;14028:18;;14057:71;14032:9;14101:6;14057:71;;;14139:72;14207:2;14196:9;14192:18;14183:6;14139:72;;14228:435;14402:2;14387:18;;14416:71;14391:9;14460:6;14416:71;;;14498:72;14566:2;14555:9;14551:18;14542:6;14498:72;;14670:201;14782:2;14767:18;;14796:65;14771:9;14834:6;14796:65;;14878:213;14996:2;14981:18;;15010:71;14985:9;15054:6;15010:71;;15098:241;15230:2;15215:18;;15244:85;15219:9;15302:6;15244:85;;15346:407;15537:2;15551:47;;;15522:18;;15612:131;15522:18;15612:131;;15760:407;15951:2;15965:47;;;15936:18;;16026:131;15936:18;16026:131;;16174:407;16365:2;16379:47;;;16350:18;;16440:131;16350:18;16440:131;;16588:407;16779:2;16793:47;;;16764:18;;16854:131;16764:18;16854:131;;17002:407;17193:2;17207:47;;;17178:18;;17268:131;17178:18;17268:131;;17416:407;17607:2;17621:47;;;17592:18;;17682:131;17592:18;17682:131;;17830:407;18021:2;18035:47;;;18006:18;;18096:131;18006:18;18096:131;;18244:407;18435:2;18449:47;;;18420:18;;18510:131;18420:18;18510:131;;18658:407;18849:2;18863:47;;;18834:18;;18924:131;18834:18;18924:131;;19072:407;19263:2;19277:47;;;19248:18;;19338:131;19248:18;19338:131;;19486:407;19677:2;19691:47;;;19662:18;;19752:131;19662:18;19752:131;;20120:435;20294:2;20279:18;;20308:71;20283:9;20352:6;20308:71;;20562:256;20624:2;20618:9;20650:17;;;20725:18;20710:34;;20746:22;;;20707:62;20704:2;;;20782:1;20779;20772:12;20704:2;20798;20791:22;20602:216;;-1:-1;20602:216;20825:325;;21005:18;20997:6;20994:30;20991:2;;;21037:1;21034;21027:12;20991:2;-1:-1;21072:4;21060:17;;;21125:15;;20928:222;22086:121;22173:12;;22144:63;22215:144;22350:3;22328:31;-1:-1;22328:31;22368:163;22471:19;;;22520:4;22511:14;;22464:67;22539:91;;22601:24;22619:5;22601:24;;22637:85;22703:13;22696:21;;22679:43;22729:72;22791:5;22774:27;22808:121;-1:-1;;;;;22870:54;;22853:76;23015:149;;23108:51;23153:5;23108:51;;23301:268;23366:1;23373:101;23387:6;23384:1;23381:13;23373:101;;;23454:11;;;23448:18;23435:11;;;23428:39;23409:2;23402:10;23373:101;;;23489:6;23486:1;23483:13;23480:2;;;-1:-1;;23554:1;23536:16;;23529:27;23350:219;23577:95;;23641:26;23661:5;23760:89;23824:20;23838:5;24011:2;24007:14;;23979:52;24039:117;24108:24;24126:5;24108:24;;;24101:5;24098:35;24088:2;;24147:1;24144;24137:12;24163:111;24229:21;24244:5;24229:21;;24281:117;24350:24;24368:5;24350:24;
Swarm Source
bzzr://a7f4ab3f88bf9a0beb338480c16cba6793a22fe65a80ed08cc31d4fadb0a1149
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.121528 | 1,369,885.6847 | $166,479.47 |
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.