Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 184 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 14454607 | 882 days ago | IN | 0 ETH | 0.0007874 | ||||
Withdraw | 13356550 | 1053 days ago | IN | 0 ETH | 0.00890899 | ||||
Register | 13190084 | 1079 days ago | IN | 0 ETH | 0.0103139 | ||||
Register | 13183803 | 1080 days ago | IN | 0 ETH | 0.00883548 | ||||
Register | 13182597 | 1080 days ago | IN | 0 ETH | 0.00729667 | ||||
Add Referral | 13163634 | 1083 days ago | IN | 0 ETH | 0.01187813 | ||||
Add Referral | 13157835 | 1084 days ago | IN | 0 ETH | 0.01383607 | ||||
Add Referral | 13151605 | 1085 days ago | IN | 0 ETH | 0.01772809 | ||||
Add Referral | 13150449 | 1085 days ago | IN | 0 ETH | 0.01736035 | ||||
Add Referral | 13144451 | 1086 days ago | IN | 0 ETH | 0.0108339 | ||||
Add Referral | 13105853 | 1092 days ago | IN | 0 ETH | 0.01036492 | ||||
Add Referral | 13092956 | 1094 days ago | IN | 0 ETH | 0.01240083 | ||||
Register | 13034131 | 1103 days ago | IN | 0 ETH | 0.0078804 | ||||
Register | 13029032 | 1104 days ago | IN | 0 ETH | 0.00286597 | ||||
Register | 13023124 | 1105 days ago | IN | 0 ETH | 0.00311324 | ||||
Withdraw | 12995041 | 1109 days ago | IN | 0 ETH | 0.00240306 | ||||
Register | 12962589 | 1114 days ago | IN | 0 ETH | 0.00457314 | ||||
Register | 12875338 | 1128 days ago | IN | 0 ETH | 0.00194481 | ||||
Register | 12862322 | 1130 days ago | IN | 0 ETH | 0.00251682 | ||||
Add Referral | 12831218 | 1135 days ago | IN | 0 ETH | 0.00412323 | ||||
Withdraw | 12791988 | 1141 days ago | IN | 0 ETH | 0.00111858 | ||||
Add Master | 12790844 | 1141 days ago | IN | 0 ETH | 0.00206144 | ||||
Register | 12785175 | 1142 days ago | IN | 0 ETH | 0.00446163 | ||||
Add Referral | 12784859 | 1142 days ago | IN | 0 ETH | 0.00300852 | ||||
Register | 12759366 | 1146 days ago | IN | 0 ETH | 0.00024055 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BBSReferral
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-05 */ pragma solidity >=0.6.0 <0.8.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; } } pragma solidity >=0.6.0 <0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is 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 virtual 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; } } pragma solidity >=0.6.0 <0.8.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); } pragma solidity >=0.6.0 <0.8.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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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; } } pragma solidity >=0.6.2 <0.8.0; /** * @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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @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]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity >=0.6.0 <0.8.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 IERC20;` 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)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "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: contracts\BBSReferral.sol pragma solidity 0.6.12; ///////////////////////////////////////////////////////////////////////////////////// // // Referral // ///////////////////////////////////////////////////////////////////////////////////// contract BBSReferral is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public token; uint256 public fee; struct User { address parent; address[] children; uint256 grade; } mapping(address => User) public users; event AddReferral(address indexed user, address _addr); event Register(address indexed user, address _addr); constructor(IERC20 _token, uint256 _fee) public { token = _token; fee = _fee; } function getParent(address _addr) public view returns (address) { return users[_addr].parent; } function getChildren(address _addr) public view returns (address[] memory) { return users[_addr].children; } function getGrade(address _addr) public view returns (uint256) { return users[_addr].grade; } function setFee(IERC20 _token, uint256 _amount) public onlyOwner { token = _token; fee = _amount; } function withdraw(uint256 _amount) public onlyOwner { require( token.balanceOf(address(this)) >= _amount, "withdraw: not good" ); token.safeTransfer(address(msg.sender), _amount); } // 마스터 등록 (온리 오너계정) function addMaster(address _addr) public onlyOwner { // _addr 이 등록 되어있으면 에러 require(users[_addr].grade < 1, "addMaster: used address"); User storage user = users[_addr]; user.grade = 1; users[_addr] = user; } // 레퍼럴 계정 // 상위는 마스터, 토큰으로 구매 (fee) // _addr : master address function addReferral(address _addr) public { // _addr 이 master 계정이 아니면 에러 require(users[_addr].grade == 1, "addReferral: not address"); //내 address가 등록 되어있으면 에러 require(users[msg.sender].grade < 1, "addReferral: used address"); //레퍼럴 유저 등록 User storage user = users[msg.sender]; user.grade = 2; user.parent = _addr; users[msg.sender] = user; //마스터 children 추가 User storage master = users[_addr]; master.children.push(msg.sender); token.safeTransferFrom(address(msg.sender), address(this), fee); emit AddReferral(msg.sender, _addr); } //레퍼럴 등록 // _addr = referral function register(address _addr) public { // msg.sender 와 _addr 이 같으면 에러 require(msg.sender != _addr, "register: error address"); //내 address가 등록 되어있으면 에러 require(users[msg.sender].grade < 1, "register: used address"); // _addr이 referral이 아니면 에러 require(users[_addr].grade == 2, "register: not referral address"); // 상위레퍼럴에 children 추가 User storage parent = users[_addr]; parent.children.push(msg.sender); // msg.sender로 구조체 생성 User storage user = users[msg.sender]; user.parent = _addr; user.grade = 3; emit Register(msg.sender, _addr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"AddReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"Register","type":"event"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"addMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"addReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getChildren","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getGrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getParent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setFee","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"address","name":"parent","type":"address"},{"internalType":"uint256","name":"grade","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051611f8a380380611f8a8339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050600061005e61014b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002819055505050610153565b600033905090565b611e28806101626000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a87430ba1161008c578063e55156b511610066578063e55156b5146103d5578063e8aca46a14610423578063f2fde38b14610467578063fc0c546a146104ab576100ea565b8063a87430ba146102d4578063a940592314610349578063ddca3f43146103b7576100ea565b80634420e486116100c85780634420e486146101b95780636999fa45146101fd578063715018a6146102965780638da5cb5b146102a0576100ea565b80631097d54a146100ef5780632e1a7d4d14610133578063313739a314610161575b600080fd5b6101316004803603602081101561010557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104df565b005b61015f6004803603602081101561014957600080fd5b8101908080359060200190929190505050610762565b005b6101a36004803603602081101561017757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061099a565b6040518082815260200191505060405180910390f35b6101fb600480360360208110156101cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e6565b005b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d99565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610282578082015181840152602081019050610267565b505050509050019250505060405180910390f35b61029e610e69565b005b6102a8610fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610316600480360360208110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61038b6004803603602081101561035f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611043565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103bf6110af565b6040518082815260200191505060405180910390f35b610421600480360360408110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110b5565b005b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111b0565b005b6104a96004803603602081101561047d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115dd565b005b6104b36117cf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e76117f5565b73ffffffffffffffffffffffffffffffffffffffff16610505610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410610646576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6164644d61737465723a2075736564206164647265737300000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506001816002018190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820181600101908054610750929190611cef565b50600282015481600201559050505050565b61076a6117f5565b73ffffffffffffffffffffffffffffffffffffffff16610788610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561089b57600080fd5b505afa1580156108af573d6000803e3d6000fd5b505050506040513d60208110156108c557600080fd5b8101908080519060200190929190505050101561094a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b6109973382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117fd9092919063ffffffff16565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610a88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f72656769737465723a206572726f72206164647265737300000000000000000081525060200191505060405180910390fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410610b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72656769737465723a207573656420616464726573730000000000000000000081525060200191505060405180910390fd5b6002600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414610bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f72656769737465723a206e6f7420726566657272616c2061646472657373000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600381600201819055503373ffffffffffffffffffffffffffffffffffffffff167f98ada70a1cb506dc4591465e1ee9be3fd7a2b6c73ecf3b949009718c9a35151984604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020018280548015610e5d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610e13575b50505050509050919050565b610e716117f5565b73ffffffffffffffffffffffffffffffffffffffff16610e8f610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60036020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905082565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60025481565b6110bd6117f5565b73ffffffffffffffffffffffffffffffffffffffff166110db610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002819055505050565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414611268576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f616464526566657272616c3a206e6f742061646472657373000000000000000081525060200191505060405180910390fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410611320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f616464526566657272616c3a207573656420616464726573730000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060028160020181905550818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182018160010190805461146d929190611cef565b50600282015481600201559050506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115743330600254600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189f909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe142a67188a22cb04d19f61b102e9d073ca082bf3528116e837d8c0fe13791a784604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b6115e56117f5565b73ffffffffffffffffffffffffffffffffffffffff16611603610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611d7d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b61189a8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611960565b505050565b61195a846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611960565b50505050565b60606119c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a4f9092919063ffffffff16565b9050600081511115611a4a578080602001905160208110156119e357600080fd5b8101908080519060200190929190505050611a49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611dc9602a913960400191505060405180910390fd5b5b505050565b6060611a5e8484600085611a67565b90509392505050565b606082471015611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611da36026913960400191505060405180910390fd5b611acb85611c10565b611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611b8d5780518252602082019150602081019050602083039250611b6a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611bef576040519150601f19603f3d011682016040523d82523d6000602084013e611bf4565b606091505b5091509150611c04828286611c23565b92505050949350505050565b600080823b905060008111915050919050565b60608315611c3357829050611ce8565b600083511115611c465782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cad578082015181840152602081019050611c92565b50505050905090810190601f168015611cda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b828054828255906000526020600020908101928215611d305760005260206000209182015b82811115611d2f578254825591600101919060010190611d14565b5b509050611d3d9190611d41565b5090565b5b80821115611d7857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611d42565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220631fc5348f15775836bc555573712595c02175251d182a0d44bd75d7b18cb66864736f6c634300060c0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000001dcd6500
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063a87430ba1161008c578063e55156b511610066578063e55156b5146103d5578063e8aca46a14610423578063f2fde38b14610467578063fc0c546a146104ab576100ea565b8063a87430ba146102d4578063a940592314610349578063ddca3f43146103b7576100ea565b80634420e486116100c85780634420e486146101b95780636999fa45146101fd578063715018a6146102965780638da5cb5b146102a0576100ea565b80631097d54a146100ef5780632e1a7d4d14610133578063313739a314610161575b600080fd5b6101316004803603602081101561010557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104df565b005b61015f6004803603602081101561014957600080fd5b8101908080359060200190929190505050610762565b005b6101a36004803603602081101561017757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061099a565b6040518082815260200191505060405180910390f35b6101fb600480360360208110156101cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e6565b005b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d99565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610282578082015181840152602081019050610267565b505050509050019250505060405180910390f35b61029e610e69565b005b6102a8610fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610316600480360360208110156102ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61038b6004803603602081101561035f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611043565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103bf6110af565b6040518082815260200191505060405180910390f35b610421600480360360408110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110b5565b005b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111b0565b005b6104a96004803603602081101561047d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115dd565b005b6104b36117cf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e76117f5565b73ffffffffffffffffffffffffffffffffffffffff16610505610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410610646576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6164644d61737465723a2075736564206164647265737300000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506001816002018190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820181600101908054610750929190611cef565b50600282015481600201559050505050565b61076a6117f5565b73ffffffffffffffffffffffffffffffffffffffff16610788610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610811576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561089b57600080fd5b505afa1580156108af573d6000803e3d6000fd5b505050506040513d60208110156108c557600080fd5b8101908080519060200190929190505050101561094a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b6109973382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117fd9092919063ffffffff16565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610a88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f72656769737465723a206572726f72206164647265737300000000000000000081525060200191505060405180910390fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410610b40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f72656769737465723a207573656420616464726573730000000000000000000081525060200191505060405180910390fd5b6002600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414610bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f72656769737465723a206e6f7420726566657272616c2061646472657373000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600381600201819055503373ffffffffffffffffffffffffffffffffffffffff167f98ada70a1cb506dc4591465e1ee9be3fd7a2b6c73ecf3b949009718c9a35151984604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805480602002602001604051908101604052809291908181526020018280548015610e5d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610e13575b50505050509050919050565b610e716117f5565b73ffffffffffffffffffffffffffffffffffffffff16610e8f610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614610f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60036020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905082565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60025481565b6110bd6117f5565b73ffffffffffffffffffffffffffffffffffffffff166110db610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002819055505050565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414611268576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f616464526566657272616c3a206e6f742061646472657373000000000000000081525060200191505060405180910390fd5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015410611320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f616464526566657272616c3a207573656420616464726573730000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060028160020181905550818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182018160010190805461146d929190611cef565b50600282015481600201559050506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600101339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115743330600254600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189f909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe142a67188a22cb04d19f61b102e9d073ca082bf3528116e837d8c0fe13791a784604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2505050565b6115e56117f5565b73ffffffffffffffffffffffffffffffffffffffff16611603610fd6565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611d7d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b61189a8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611960565b505050565b61195a846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611960565b50505050565b60606119c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a4f9092919063ffffffff16565b9050600081511115611a4a578080602001905160208110156119e357600080fd5b8101908080519060200190929190505050611a49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611dc9602a913960400191505060405180910390fd5b5b505050565b6060611a5e8484600085611a67565b90509392505050565b606082471015611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611da36026913960400191505060405180910390fd5b611acb85611c10565b611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310611b8d5780518252602082019150602081019050602083039250611b6a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611bef576040519150601f19603f3d011682016040523d82523d6000602084013e611bf4565b606091505b5091509150611c04828286611c23565b92505050949350505050565b600080823b905060008111915050919050565b60608315611c3357829050611ce8565b600083511115611c465782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cad578082015181840152602081019050611c92565b50505050905090810190601f168015611cda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b828054828255906000526020600020908101928215611d305760005260206000209182015b82811115611d2f578254825591600101919060010190611d14565b5b509050611d3d9190611d41565b5090565b5b80821115611d7857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611d42565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220631fc5348f15775836bc555573712595c02175251d182a0d44bd75d7b18cb66864736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000001dcd6500
-----Decoded View---------------
Arg [0] : _token (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : _fee (uint256): 500000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 000000000000000000000000000000000000000000000000000000001dcd6500
Deployed Bytecode Sourcemap
25264:3280:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26595:278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26301:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26056:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27785:756;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25926:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2635:148;;;:::i;:::-;;1984:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25532:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;25809:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25399:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26171:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26992:736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2938:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25371:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26595:278;2215:12;:10;:12::i;:::-;2204:23;;:7;:5;:7::i;:::-;:23;;;2196:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26738:1:::1;26717:5;:12;26723:5;26717:12;;;;;;;;;;;;;;;:18;;;:22;26709:58;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26778:17;26798:5;:12;26804:5;26798:12;;;;;;;;;;;;;;;26778:32;;26834:1;26821:4;:10;;:14;;;;26861:4;26846:5;:12;26852:5;26846:12;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2275:1;26595:278:::0;:::o;26301:239::-;2215:12;:10;:12::i;:::-;2204:23;;:7;:5;:7::i;:::-;:23;;;2196:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26420:7:::1;26386:5;;;;;;;;;;;:15;;;26410:4;26386:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:41;;26364:109;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26484:48;26511:10;26524:7;26484:5;;;;;;;;;;;:18;;;;:48;;;;;:::i;:::-;26301:239:::0;:::o;26056:107::-;26110:7;26137:5;:12;26143:5;26137:12;;;;;;;;;;;;;;;:18;;;26130:25;;26056:107;;;:::o;27785:756::-;27912:5;27898:19;;:10;:19;;;;27890:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28048:1;28022:5;:17;28028:10;28022:17;;;;;;;;;;;;;;;:23;;;:27;28014:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28169:1;28147:5;:12;28153:5;28147:12;;;;;;;;;;;;;;;:18;;;:23;28139:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28265:19;28287:5;:12;28293:5;28287:12;;;;;;;;;;;;;;;28265:34;;28310:6;:15;;28331:10;28310:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28398:17;28418:5;:17;28424:10;28418:17;;;;;;;;;;;;;;;28398:37;;28460:5;28446:4;:11;;;:19;;;;;;;;;;;;;;;;;;28489:1;28476:4;:10;;:14;;;;28515:10;28506:27;;;28527:5;28506:27;;;;;;;;;;;;;;;;;;;;27785:756;;;:::o;25926:122::-;25983:16;26019:5;:12;26025:5;26019:12;;;;;;;;;;;;;;;:21;;26012:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25926:122;;;:::o;2635:148::-;2215:12;:10;:12::i;:::-;2204:23;;:7;:5;:7::i;:::-;:23;;;2196:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2742:1:::1;2705:40;;2726:6;::::0;::::1;;;;;;;;2705:40;;;;;;;;;;;;2773:1;2756:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2635:148::o:0;1984:87::-;2030:7;2057:6;;;;;;;;;;;2050:13;;1984:87;:::o;25532:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25809:109::-;25864:7;25891:5;:12;25897:5;25891:12;;;;;;;;;;;;;;;:19;;;;;;;;;;;;25884:26;;25809:109;;;:::o;25399:18::-;;;;:::o;26171:122::-;2215:12;:10;:12::i;:::-;2204:23;;:7;:5;:7::i;:::-;:23;;;2196:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26255:6:::1;26247:5;;:14;;;;;;;;;;;;;;;;;;26278:7;26272:3;:13;;;;26171:122:::0;;:::o;26992:736::-;27132:1;27110:5;:12;27116:5;27110:12;;;;;;;;;;;;;;;:18;;;:23;27102:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27265:1;27239:5;:17;27245:10;27239:17;;;;;;;;;;;;;;;:23;;;:27;27231:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27344:17;27364:5;:17;27370:10;27364:17;;;;;;;;;;;;;;;27344:37;;27405:1;27392:4;:10;;:14;;;;27431:5;27417:4;:11;;;:19;;;;;;;;;;;;;;;;;;27467:4;27447:5;:17;27453:10;27447:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27521:19;27543:5;:12;27549:5;27543:12;;;;;;;;;;;;;;;27521:34;;27566:6;:15;;27587:10;27566:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27611:63;27642:10;27663:4;27670:3;;27611:5;;;;;;;;;;;:22;;;;:63;;;;;;:::i;:::-;27702:10;27690:30;;;27714:5;27690:30;;;;;;;;;;;;;;;;;;;;26992:736;;;:::o;2938:244::-;2215:12;:10;:12::i;:::-;2204:23;;:7;:5;:7::i;:::-;:23;;;2196:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:1:::1;3027:22;;:8;:22;;;;3019:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3137:8;3108:38;;3129:6;::::0;::::1;;;;;;;;3108:38;;;;;;;;;;;;3166:8;3157:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2938:244:::0;:::o;25371:19::-;;;;;;;;;;;;;:::o;578:106::-;631:15;666:10;659:17;;578:106;:::o;21924:177::-;22007:86;22027:5;22057:23;;;22082:2;22086:5;22034:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22007:19;:86::i;:::-;21924:177;;;:::o;22109:205::-;22210:96;22230:5;22260:27;;;22289:4;22295:2;22299:5;22237:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22210:19;:96::i;:::-;22109:205;;;;:::o;24229:761::-;24653:23;24679:69;24707:4;24679:69;;;;;;;;;;;;;;;;;24687:5;24679:27;;;;:69;;;;;:::i;:::-;24653:95;;24783:1;24763:10;:17;:21;24759:224;;;24905:10;24894:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24886:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24759:224;24229:761;;;:::o;16981:195::-;17084:12;17116:52;17138:6;17146:4;17152:1;17155:12;17116:21;:52::i;:::-;17109:59;;16981:195;;;;;:::o;18033:530::-;18160:12;18218:5;18193:21;:30;;18185:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18285:18;18296:6;18285:10;:18::i;:::-;18277:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18411:12;18425:23;18452:6;:11;;18472:5;18480:4;18452:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18410:75;;;;18503:52;18521:7;18530:10;18542:12;18503:17;:52::i;:::-;18496:59;;;;18033:530;;;;;;:::o;14063:422::-;14123:4;14331:12;14442:7;14430:20;14422:28;;14476:1;14469:4;:8;14462:15;;;14063:422;;;:::o;20573:742::-;20688:12;20717:7;20713:595;;;20748:10;20741:17;;;;20713:595;20882:1;20862:10;:17;:21;20858:439;;;21125:10;21119:17;21186:15;21173:10;21169:2;21165:19;21158:44;21073:148;21268:12;21261:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20573:742;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://631fc5348f15775836bc555573712595c02175251d182a0d44bd75d7b18cb668
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.