Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,702 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 20311434 | 5 days ago | IN | 0 ETH | 0.00033948 | ||||
Claim | 20308635 | 5 days ago | IN | 0 ETH | 0.00025063 | ||||
Claim | 20249262 | 14 days ago | IN | 0 ETH | 0.00022424 | ||||
Claim | 20242398 | 15 days ago | IN | 0 ETH | 0.00034985 | ||||
Claim | 20226049 | 17 days ago | IN | 0 ETH | 0.00285453 | ||||
Claim | 20222585 | 17 days ago | IN | 0 ETH | 0.00033387 | ||||
Claim | 20189616 | 22 days ago | IN | 0 ETH | 0.00074058 | ||||
Claim | 20188082 | 22 days ago | IN | 0 ETH | 0.00018909 | ||||
Claim | 20187411 | 22 days ago | IN | 0 ETH | 0.00036778 | ||||
Claim | 20183174 | 23 days ago | IN | 0 ETH | 0.00050148 | ||||
Claim | 20130890 | 30 days ago | IN | 0 ETH | 0.00045167 | ||||
Claim | 20125960 | 31 days ago | IN | 0 ETH | 0.00056136 | ||||
Set Merkle Root | 20072033 | 38 days ago | IN | 0 ETH | 0.0002706 | ||||
Claim | 20068144 | 39 days ago | IN | 0 ETH | 0.00057724 | ||||
Set Merkle Root | 20064869 | 39 days ago | IN | 0 ETH | 0.00033073 | ||||
Set Merkle Root | 20057713 | 40 days ago | IN | 0 ETH | 0.0001804 | ||||
Set Merkle Root | 20050558 | 41 days ago | IN | 0 ETH | 0.0001804 | ||||
Set Merkle Root | 20043392 | 42 days ago | IN | 0 ETH | 0.00030067 | ||||
Set Merkle Root | 20036228 | 43 days ago | IN | 0 ETH | 0.00033073 | ||||
Set Merkle Root | 20029072 | 44 days ago | IN | 0 ETH | 0.0006314 | ||||
Set Merkle Root | 20021905 | 45 days ago | IN | 0 ETH | 0.00021046 | ||||
Set Merkle Root | 20014737 | 46 days ago | IN | 0 ETH | 0.00021046 | ||||
Set Merkle Root | 20007578 | 47 days ago | IN | 0 ETH | 0.0001804 | ||||
Set Merkle Root | 20000421 | 48 days ago | IN | 0 ETH | 0.0001804 | ||||
Set Merkle Root | 19993252 | 49 days ago | IN | 0 ETH | 0.00021046 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CryptoComDefiSwapReward
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-11 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT 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/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/math/SafeMath.sol pragma solidity ^0.6.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. */ 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. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { 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. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // 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: contracts/CryptoComDefiSwapReward.sol pragma solidity ^0.6.12; contract CryptoComDefiSwapReward is Ownable { using SafeMath for uint256; struct RewardInfo { uint256 claimedReward; uint256 lastClaimTimestamp; } IERC20 public immutable token; bytes32 public merkleRoot; mapping (address => RewardInfo) public rewardInfo; event UpdatedMerkleRoot(bytes32 newMerkleRoot); event Claim(address indexed user, uint256 amount); constructor( IERC20 _tokenAddress ) public { token = _tokenAddress; } function claim( address _address, uint256 _totalReward, bytes32[] calldata _merkleProof ) external { RewardInfo storage reward = rewardInfo[_address]; // Verify the merkle proof. bytes32 node = keccak256(abi.encodePacked(_address, _totalReward)); require(MerkleProof.verify(_merkleProof, merkleRoot, node), "CryptoComDefiSwapReward: Invalid proof!"); uint256 pendingReward = _totalReward.sub(reward.claimedReward); require(pendingReward > 0, "CryptoComDefiSwapReward: No reward at this moment!"); reward.claimedReward = _totalReward; reward.lastClaimTimestamp = block.timestamp; require(token.transfer(_address, pendingReward), "CryptoComDefiSwapReward: Transfer failed. Please try later!"); emit Claim(_address, pendingReward); } function setMerkleRoot( bytes32 _merkleRoot ) external onlyOwner { merkleRoot = _merkleRoot; emit UpdatedMerkleRoot(_merkleRoot); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","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":"bytes32","name":"newMerkleRoot","type":"bytes32"}],"name":"UpdatedMerkleRoot","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_totalReward","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardInfo","outputs":[{"internalType":"uint256","name":"claimedReward","type":"uint256"},{"internalType":"uint256","name":"lastClaimTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610c17380380610c178339818101604052602081101561003357600080fd5b5051600061003f61009e565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b0319166080526100a2565b3390565b60805160601c610b536100c4600039806103ec528061089a5250610b536000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610160578063cbecf6b514610191578063f2fde38b146101dd578063fc0c546a1461021057610088565b80632eb4a7ab1461008d5780633d13f874146100a7578063715018a61461013b5780637cb6475914610143575b600080fd5b610095610218565b60408051918252519081900360200190f35b610139600480360360608110156100bd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184602083028401116401000000008311171561012e57600080fd5b50909250905061021e565b005b61013961050d565b6101396004803603602081101561015957600080fd5b503561060d565b6101686106d9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101c4600480360360208110156101a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106f5565b6040805192835260208301919091528051918290030190f35b610139600480360360208110156101f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070e565b610168610898565b60015481565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040918290208251606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168184015260348082018890528451808303909101815260548201808652815191850191909120938602808301607490810190965286825292946102d493919288928892839201908490808284376000920191909152505060015491508490506108bc565b610329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610a646027913960400191505060405180910390fd5b8154600090610339908790610965565b905060008111610394576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180610ab16032913960400191505060405180910390fd5b858355426001840155604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820184905291517f00000000000000000000000000000000000000000000000000000000000000009092169163a9059cbb916044808201926020929091908290030181600087803b15801561043757600080fd5b505af115801561044b573d6000803e3d6000fd5b505050506040513d602081101561046157600080fd5b50516104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610ae3603b913960400191505060405180910390fd5b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8916917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a250505050505050565b6105156109ae565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461059e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106156109ae565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461069e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60018190556040805182815290517f2af8a87a83f9436bb12defd5973458fc85fa67f80325ae369c49cb71acab247f9181900360200190a150565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6002602052600090815260409020805460019091015482565b6107166109ae565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461079f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661080b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610a8b6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081815b855181101561095a5760008682815181106108d857fe5b6020026020010151905080831161091f5782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610951565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b506001016108c1565b509092149392505050565b60006109a783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109b2565b9392505050565b3390565b60008184841115610a5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a20578181015183820152602001610a08565b50505050905090810190601f168015610a4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe43727970746f436f6d44656669537761705265776172643a20496e76616c69642070726f6f66214f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343727970746f436f6d44656669537761705265776172643a204e6f207265776172642061742074686973206d6f6d656e742143727970746f436f6d44656669537761705265776172643a205472616e73666572206661696c65642e20506c6561736520747279206c6174657221a2646970667358221220df86a28e83930e9b609073cb559538e4b60d49d4d72f36cb7e355cb534876b3464736f6c634300060c0033000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610160578063cbecf6b514610191578063f2fde38b146101dd578063fc0c546a1461021057610088565b80632eb4a7ab1461008d5780633d13f874146100a7578063715018a61461013b5780637cb6475914610143575b600080fd5b610095610218565b60408051918252519081900360200190f35b610139600480360360608110156100bd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184602083028401116401000000008311171561012e57600080fd5b50909250905061021e565b005b61013961050d565b6101396004803603602081101561015957600080fd5b503561060d565b6101686106d9565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101c4600480360360208110156101a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106f5565b6040805192835260208301919091528051918290030190f35b610139600480360360208110156101f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661070e565b610168610898565b60015481565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040918290208251606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168184015260348082018890528451808303909101815260548201808652815191850191909120938602808301607490810190965286825292946102d493919288928892839201908490808284376000920191909152505060015491508490506108bc565b610329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610a646027913960400191505060405180910390fd5b8154600090610339908790610965565b905060008111610394576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180610ab16032913960400191505060405180910390fd5b858355426001840155604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820184905291517f000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b9092169163a9059cbb916044808201926020929091908290030181600087803b15801561043757600080fd5b505af115801561044b573d6000803e3d6000fd5b505050506040513d602081101561046157600080fd5b50516104b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610ae3603b913960400191505060405180910390fd5b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8916917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a250505050505050565b6105156109ae565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461059e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106156109ae565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461069e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60018190556040805182815290517f2af8a87a83f9436bb12defd5973458fc85fa67f80325ae369c49cb71acab247f9181900360200190a150565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6002602052600090815260409020805460019091015482565b6107166109ae565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461079f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661080b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610a8b6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b81565b600081815b855181101561095a5760008682815181106108d857fe5b6020026020010151905080831161091f5782816040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250610951565b808360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092505b506001016108c1565b509092149392505050565b60006109a783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109b2565b9392505050565b3390565b60008184841115610a5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a20578181015183820152602001610a08565b50505050905090810190601f168015610a4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe43727970746f436f6d44656669537761705265776172643a20496e76616c69642070726f6f66214f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343727970746f436f6d44656669537761705265776172643a204e6f207265776172642061742074686973206d6f6d656e742143727970746f436f6d44656669537761705265776172643a205472616e73666572206661696c65642e20506c6561736520747279206c6174657221a2646970667358221220df86a28e83930e9b609073cb559538e4b60d49d4d72f36cb7e355cb534876b3464736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b
-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0xA0b73E1Ff0B80914AB6fe0444E65848C4C34450b
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b73e1ff0b80914ab6fe0444e65848c4c34450b
Deployed Bytecode Sourcemap
12907:1573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13132:25;;;:::i;:::-;;;;;;;;;;;;;;;;13438:863;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13438:863:0;;-1:-1:-1;13438:863:0;-1:-1:-1;13438:863:0;:::i;:::-;;5542:148;;;:::i;14309:168::-;;;;;;;;;;;;;;;;-1:-1:-1;14309:168:0;;:::i;4900:79::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13164:49;;;;;;;;;;;;;;;;-1:-1:-1;13164:49:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5845:244;;;;;;;;;;;;;;;;-1:-1:-1;5845:244:0;;;;:::i;13096:29::-;;;:::i;13132:25::-;;;;:::o;13438:863::-;13608:20;;;13580:25;13608:20;;;:10;:20;;;;;;;;;13703:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13693:51;;;;;;;;;13763:50;;;;;;;;;;;;;;;;13608:20;;13763:50;;13703:40;;13782:12;;13763:50;;;;;;13782:12;;13763:50;13782:12;13763:50;;;;;;;;;-1:-1:-1;;13796:10:0;;;-1:-1:-1;13808:4:0;;-1:-1:-1;13763:18:0;:50::i;:::-;13755:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13911:20;;13870:21;;13894:38;;:12;;:16;:38::i;:::-;13870:62;;13967:1;13951:13;:17;13943:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14036:35;;;14110:15;14082:25;;;:43;14144:39;;;;;;:14;:39;;;;;;;;;;;;;;;:5;:14;;;;;;:39;;;;;;;;;;;;;;;-1:-1:-1;14144:14:0;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14144:39:0;14136:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14263:30;;;;;;;;;;;;;;;;;;;;;;13438:863;;;;;;;:::o;5542:148::-;5122:12;:10;:12::i;:::-;5112:6;;:22;:6;;;:22;;;5104:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:1:::1;5633:6:::0;;5612:40:::1;::::0;::::1;5633:6:::0;;::::1;::::0;5612:40:::1;::::0;5649:1;;5612:40:::1;5680:1;5663:19:::0;;;::::1;::::0;;5542:148::o;14309:168::-;5122:12;:10;:12::i;:::-;5112:6;;:22;:6;;;:22;;;5104:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14399:10:::1;:24:::0;;;14439:30:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;14309:168:::0;:::o;4900:79::-;4938:7;4965:6;;;4900:79;:::o;13164:49::-;;;;;;;;;;;;;;;;;;;:::o;5845:244::-;5122:12;:10;:12::i;:::-;5112:6;;:22;:6;;;:22;;;5104:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5934:22:::1;::::0;::::1;5926:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6036:6;::::0;;6015:38:::1;::::0;::::1;::::0;;::::1;::::0;6036:6;::::1;::::0;6015:38:::1;::::0;::::1;6064:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;5845:244::o;13096:29::-;;;:::o;12018:796::-;12109:4;12149;12109;12166:525;12190:5;:12;12186:1;:16;12166:525;;;12224:20;12247:5;12253:1;12247:8;;;;;;;;;;;;;;12224:31;;12292:12;12276;:28;12272:408;;12446:12;12460;12429:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12419:55;;;;;;12404:70;;12272:408;;;12636:12;12650;12619:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12609:55;;;;;;12594:70;;12272:408;-1:-1:-1;12204:3:0;;12166:525;;;-1:-1:-1;12786:20:0;;;;12018:796;-1:-1:-1;;;12018:796:0:o;7481:136::-;7539:7;7566:43;7570:1;7573;7566:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7559:50;7481:136;-1:-1:-1;;;7481:136:0:o;3456:106::-;3544:10;3456:106;:::o;7920:192::-;8006:7;8042:12;8034:6;;;;8026:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8078:5:0;;;7920:192::o
Swarm Source
ipfs://df86a28e83930e9b609073cb559538e4b60d49d4d72f36cb7e355cb534876b34
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.