Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 158 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap | 13394097 | 1203 days ago | IN | 0 ETH | 0.00606003 | ||||
Swap | 13394084 | 1203 days ago | IN | 0 ETH | 0.00738974 | ||||
Swap | 13394078 | 1203 days ago | IN | 0 ETH | 0.00713226 | ||||
Swap | 13353400 | 1210 days ago | IN | 0 ETH | 0.00315548 | ||||
Swap | 13353370 | 1210 days ago | IN | 0 ETH | 0.0072405 | ||||
Swap | 13349392 | 1210 days ago | IN | 0 ETH | 0.00572652 | ||||
Swap | 13349353 | 1210 days ago | IN | 0 ETH | 0.0046348 | ||||
Withdraw Usdc | 13347977 | 1211 days ago | IN | 0 ETH | 0.00672548 | ||||
Swap | 13277567 | 1222 days ago | IN | 0 ETH | 0.00385129 | ||||
Swap | 13273328 | 1222 days ago | IN | 0 ETH | 0.0055656 | ||||
Swap | 13273261 | 1222 days ago | IN | 0 ETH | 0.00230665 | ||||
Swap | 13229787 | 1229 days ago | IN | 0 ETH | 0.00533063 | ||||
Swap | 13224164 | 1230 days ago | IN | 0 ETH | 0.00610678 | ||||
Swap | 13220323 | 1230 days ago | IN | 0 ETH | 0.00159841 | ||||
Swap | 13219853 | 1230 days ago | IN | 0 ETH | 0.00598875 | ||||
Swap | 13219124 | 1231 days ago | IN | 0 ETH | 0.00455346 | ||||
Swap | 13218765 | 1231 days ago | IN | 0 ETH | 0.00164396 | ||||
Swap | 13216293 | 1231 days ago | IN | 0 ETH | 0.005488 | ||||
Swap | 13216017 | 1231 days ago | IN | 0 ETH | 0.00146916 | ||||
Swap | 13215998 | 1231 days ago | IN | 0 ETH | 0.00137468 | ||||
Swap | 13215985 | 1231 days ago | IN | 0 ETH | 0.00152087 | ||||
Swap | 13215971 | 1231 days ago | IN | 0 ETH | 0.00142923 | ||||
Swap | 13215958 | 1231 days ago | IN | 0 ETH | 0.00167108 | ||||
Swap | 13211885 | 1232 days ago | IN | 0 ETH | 0.00523986 | ||||
Swap | 13211277 | 1232 days ago | IN | 0 ETH | 0.00434838 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
12590070 | 1328 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Swap
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-07 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @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 in 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); 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); } } } } /** * @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; } } /** * @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"); } } } /** * @dev Interface of the ERC20 with Burning method */ interface IERC20Burnable is IERC20 { function burn(uint256 amount) external; } /* * @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; } } /** * @dev Contract where tokens are blocked forever */ contract BurnValley { event TokensDestroyed(address burner, uint256 amount); /** * @dev Method for burning any token from contract balance. * All tokens which will be sent here should be locked forever or burned * For better transparency everybody can call this method and burn tokens * Emits a {TokensDestroyed} event. */ function burnAllTokens(address _token) external { IERC20Burnable token = IERC20Burnable(_token); uint256 balance = token.balanceOf(address(this)); token.burn(balance); emit TokensDestroyed(msg.sender, balance); } } /** * @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; } } /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } /** * @dev EVOT tokens swap contract */ contract Swap is Ownable, Pausable { using SafeMath for uint256; using SafeERC20 for IERC20; address public immutable burnValley; uint256 public constant MIN_EVOT = 40 * 10**18; IERC20 public constant EVOT = IERC20(0x5dE805154A24Cb824Ea70F9025527f35FaCD73a1); IERC20 public constant USDC = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); mapping(address => uint256) public usdcPerUser; event UsersRemoved(address[] users); event UsersWhitelisted(address[] users, uint256[] amounts); event TokensSwapped(address indexed user, uint256 evotAmount, uint256 usdcAmount); // ------------------------ // CONSTRUCTOR // ------------------------ constructor() public { // Deploy burn valley contract for locking tokens burnValley = address(new BurnValley()); } // ------------------------ // USER METHODS // ------------------------ function swap(uint256 evotAmount) external whenNotPaused { require(evotAmount >= MIN_EVOT, "swap: Less EVOT then required!"); address user = _msgSender(); require(usdcPerUser[user] > 0, "swap: User not allowed to swap!"); // Transfer user tokens to burn valley contract EVOT.safeTransferFrom(user, burnValley, evotAmount); // Save amount which user will receive uint256 usdcAmount = usdcPerUser[user]; usdcPerUser[user] = 0; USDC.safeTransfer(user, usdcAmount); // Transfer new tokens to sender emit TokensSwapped(user, evotAmount, usdcAmount); } // ------------------------ // OWNER METHODS // ------------------------ function whitelistUsers(address[] calldata users, uint256[] calldata amounts) external onlyOwner { uint256 usersCount = users.length; require(usersCount == amounts.length, "whitelistUsers: Arrays are not equal!"); require(usersCount > 0, "whitelistUsers: Empty arrays!"); for (uint256 i = 0; i < usersCount; i++) { address user = users[i]; uint256 amount = amounts[i]; // Update contract storage with provided values usdcPerUser[user] = amount; } emit UsersWhitelisted(users, amounts); } function removeUsers(address[] calldata users) external onlyOwner { uint256 usersCount = users.length; require(usersCount > 0, "removeUsers: Empty array!"); for (uint256 i = 0; i < usersCount; i++) { address user = users[i]; usdcPerUser[user] = 0; } emit UsersRemoved(users); } function pause() external onlyOwner whenNotPaused { _pause(); } function unpause() external onlyOwner whenPaused { _unpause(); } function withdrawUsdc(address receiver) external onlyOwner { USDC.safeTransfer(receiver, USDC.balanceOf(address(this))); } function withdrawUsdc(address receiver, uint256 amount) external onlyOwner { USDC.safeTransfer(receiver, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"evotAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usdcAmount","type":"uint256"}],"name":"TokensSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"users","type":"address[]"}],"name":"UsersRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"users","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"UsersWhitelisted","type":"event"},{"inputs":[],"name":"EVOT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_EVOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnValley","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"}],"name":"removeUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"evotAmount","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usdcPerUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"whitelistUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"withdrawUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50600061001b6100b0565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916905560405161007e906100b4565b604051809103906000f08015801561009a573d6000803e3d6000fd5b5060601b6001600160601b0319166080526100c1565b3390565b6101c9806113d783390190565b60805160601c6112f46100e360003980610b485280610d8b52506112f46000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063f2fde38b11610066578063f2fde38b14610310578063f7199f8814610336578063f7329f6a14610350578063f817f37f1461035857610100565b80638da5cb5b146102b757806394b918de146102bf578063a0ac1b76146102dc578063e58a5e90146102e457610100565b80635cdc48f9116100d35780635cdc48f91461025d578063715018a6146102835780638456cb591461028b57806389a302711461029357610100565b80631973ea06146101055780632be4a903146101c95780633f4ba83a146102395780635c975abb14610241575b600080fd5b6101c76004803603604081101561011b57600080fd5b81019060208101813564010000000081111561013657600080fd5b82018360208201111561014857600080fd5b8035906020019184602083028401116401000000008311171561016a57600080fd5b91939092909160208101903564010000000081111561018857600080fd5b82018360208201111561019a57600080fd5b803590602001918460208302840111640100000000831117156101bc57600080fd5b50909250905061037e565b005b6101c7600480360360208110156101df57600080fd5b8101906020810181356401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b50909250905061056e565b6101c76106ca565b610249610781565b604080519115158252519081900360200190f35b6101c76004803603602081101561027357600080fd5b50356001600160a01b0316610791565b6101c761088b565b6101c761092d565b61029b6109df565b604080516001600160a01b039092168252519081900360200190f35b61029b6109f7565b6101c7600480360360208110156102d557600080fd5b5035610a06565b61029b610bf1565b6101c7600480360360408110156102fa57600080fd5b506001600160a01b038135169060200135610c09565b6101c76004803603602081101561032657600080fd5b50356001600160a01b0316610c84565b61033e610d7c565b60408051918252519081900360200190f35b61029b610d89565b61033e6004803603602081101561036e57600080fd5b50356001600160a01b0316610dad565b610386610dbf565b6000546001600160a01b039081169116146103d6576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b828181146104155760405162461bcd60e51b81526004018080602001828103825260258152602001806112506025913960400191505060405180910390fd5b6000811161046a576040805162461bcd60e51b815260206004820152601d60248201527f77686974656c69737455736572733a20456d7074792061727261797321000000604482015290519081900360640190fd5b60005b818110156104d357600086868381811061048357fe5b905060200201356001600160a01b0316905060008585848181106104a357fe5b6001600160a01b03909416600090815260016020818152604090922091909502929092013590915550500161046d565b507f99b1e14eddbdf470bc1e19e39d2b4be1b03605fe26a84b80998f98877a42efb7858585856040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b610576610dbf565b6000546001600160a01b039081169116146105c6576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b8080610619576040805162461bcd60e51b815260206004820152601960248201527f72656d6f766555736572733a20456d7074792061727261792100000000000000604482015290519081900360640190fd5b60005b8181101561066157600084848381811061063257fe5b602090810292909201356001600160a01b0316600090815260019283905260408120555091909101905061061c565b507f6b7929e53ee87cbc8c2763b9321832a5ca33687910bfd3833deea38586bc9911838360405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a1505050565b6106d2610dbf565b6000546001600160a01b03908116911614610722576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16610777576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b61077f610dc3565b565b600054600160a01b900460ff1690565b610799610dbf565b6000546001600160a01b039081169116146107e9576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905161088891839173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48916370a08231916024808301926020929190829003018186803b15801561084057600080fd5b505afa158015610854573d6000803e3d6000fd5b505050506040513d602081101561086a57600080fd5b505173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489190610e6b565b50565b610893610dbf565b6000546001600160a01b039081169116146108e3576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610935610dbf565b6000546001600160a01b03908116911614610985576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156109d7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61077f610ec2565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b6000546001600160a01b031690565b600054600160a01b900460ff1615610a58576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b68022b1c8c1227a00000811015610ab6576040805162461bcd60e51b815260206004820152601e60248201527f737761703a204c6573732045564f54207468656e207265717569726564210000604482015290519081900360640190fd5b6000610ac0610dbf565b6001600160a01b038116600090815260016020526040902054909150610b2d576040805162461bcd60e51b815260206004820152601f60248201527f737761703a2055736572206e6f7420616c6c6f77656420746f20737761702100604482015290519081900360640190fd5b610b6d735de805154a24cb824ea70f9025527f35facd73a1827f000000000000000000000000000000000000000000000000000000000000000085610f50565b6001600160a01b03811660009081526001602052604081208054919055610ba973a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488383610e6b565b604080518481526020810183905281516001600160a01b038516927f18704ae982dcd24a1beeeed3ecf045ab0520d7b7519b97adf3e4f40bf7efe339928290030190a2505050565b735de805154a24cb824ea70f9025527f35facd73a181565b610c11610dbf565b6000546001600160a01b03908116911614610c61576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b610c8073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488383610e6b565b5050565b610c8c610dbf565b6000546001600160a01b03908116911614610cdc576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b6001600160a01b038116610d215760405162461bcd60e51b815260040180806020018281038252602681526020018061122a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b68022b1c8c1227a0000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020526000908152604090205481565b3390565b600054600160a01b900460ff16610e18576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e4e610dbf565b604080516001600160a01b039092168252519081900360200190a1565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ebd908490610fb0565b505050565b600054600160a01b900460ff1615610f14576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e4e610dbf565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610faa908590610fb0565b50505050565b6060611005826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110619092919063ffffffff16565b805190915015610ebd5780806020019051602081101561102457600080fd5b5051610ebd5760405162461bcd60e51b815260040180806020018281038252602a815260200180611295602a913960400191505060405180910390fd5b60606110708484600085611078565b949350505050565b606061108385611223565b6110d4576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106111135780518252601f1990920191602091820191016110f4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611175576040519150601f19603f3d011682016040523d82523d6000602084013e61117a565b606091505b5091509150811561118e5791506110709050565b80511561119e5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111e85781810151838201526020016111d0565b50505050905090810190601f1680156112155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737377686974656c69737455736572733a2041727261797320617265206e6f7420657175616c214f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220257eaacb39c210d7570e702943046c9464a4def9301421f7992ef97d35673c9964736f6c634300060c0033608060405234801561001057600080fd5b506101a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063a679156814610030575b600080fd5b6100566004803603602081101561004657600080fd5b50356001600160a01b0316610058565b005b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156100a357600080fd5b505afa1580156100b7573d6000803e3d6000fd5b505050506040513d60208110156100cd57600080fd5b505160408051630852cd8d60e31b81526004810183905290519192506001600160a01b038416916342966c689160248082019260009290919082900301818387803b15801561011b57600080fd5b505af115801561012f573d6000803e3d6000fd5b5050604080513381526020810185905281517f74dc1e04f755e8fcd116c4d9dc82fec6c4d5b233519a8df56983ed635dbc37a69450908190039091019150a150505056fea26469706673582212203e231c03333398618404ce140e0b742a741efef59a682be7c2891dedb8f0660164736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063f2fde38b11610066578063f2fde38b14610310578063f7199f8814610336578063f7329f6a14610350578063f817f37f1461035857610100565b80638da5cb5b146102b757806394b918de146102bf578063a0ac1b76146102dc578063e58a5e90146102e457610100565b80635cdc48f9116100d35780635cdc48f91461025d578063715018a6146102835780638456cb591461028b57806389a302711461029357610100565b80631973ea06146101055780632be4a903146101c95780633f4ba83a146102395780635c975abb14610241575b600080fd5b6101c76004803603604081101561011b57600080fd5b81019060208101813564010000000081111561013657600080fd5b82018360208201111561014857600080fd5b8035906020019184602083028401116401000000008311171561016a57600080fd5b91939092909160208101903564010000000081111561018857600080fd5b82018360208201111561019a57600080fd5b803590602001918460208302840111640100000000831117156101bc57600080fd5b50909250905061037e565b005b6101c7600480360360208110156101df57600080fd5b8101906020810181356401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b50909250905061056e565b6101c76106ca565b610249610781565b604080519115158252519081900360200190f35b6101c76004803603602081101561027357600080fd5b50356001600160a01b0316610791565b6101c761088b565b6101c761092d565b61029b6109df565b604080516001600160a01b039092168252519081900360200190f35b61029b6109f7565b6101c7600480360360208110156102d557600080fd5b5035610a06565b61029b610bf1565b6101c7600480360360408110156102fa57600080fd5b506001600160a01b038135169060200135610c09565b6101c76004803603602081101561032657600080fd5b50356001600160a01b0316610c84565b61033e610d7c565b60408051918252519081900360200190f35b61029b610d89565b61033e6004803603602081101561036e57600080fd5b50356001600160a01b0316610dad565b610386610dbf565b6000546001600160a01b039081169116146103d6576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b828181146104155760405162461bcd60e51b81526004018080602001828103825260258152602001806112506025913960400191505060405180910390fd5b6000811161046a576040805162461bcd60e51b815260206004820152601d60248201527f77686974656c69737455736572733a20456d7074792061727261797321000000604482015290519081900360640190fd5b60005b818110156104d357600086868381811061048357fe5b905060200201356001600160a01b0316905060008585848181106104a357fe5b6001600160a01b03909416600090815260016020818152604090922091909502929092013590915550500161046d565b507f99b1e14eddbdf470bc1e19e39d2b4be1b03605fe26a84b80998f98877a42efb7858585856040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b610576610dbf565b6000546001600160a01b039081169116146105c6576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b8080610619576040805162461bcd60e51b815260206004820152601960248201527f72656d6f766555736572733a20456d7074792061727261792100000000000000604482015290519081900360640190fd5b60005b8181101561066157600084848381811061063257fe5b602090810292909201356001600160a01b0316600090815260019283905260408120555091909101905061061c565b507f6b7929e53ee87cbc8c2763b9321832a5ca33687910bfd3833deea38586bc9911838360405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a1505050565b6106d2610dbf565b6000546001600160a01b03908116911614610722576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16610777576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b61077f610dc3565b565b600054600160a01b900460ff1690565b610799610dbf565b6000546001600160a01b039081169116146107e9576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905161088891839173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48916370a08231916024808301926020929190829003018186803b15801561084057600080fd5b505afa158015610854573d6000803e3d6000fd5b505050506040513d602081101561086a57600080fd5b505173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489190610e6b565b50565b610893610dbf565b6000546001600160a01b039081169116146108e3576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610935610dbf565b6000546001600160a01b03908116911614610985576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156109d7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61077f610ec2565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b6000546001600160a01b031690565b600054600160a01b900460ff1615610a58576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b68022b1c8c1227a00000811015610ab6576040805162461bcd60e51b815260206004820152601e60248201527f737761703a204c6573732045564f54207468656e207265717569726564210000604482015290519081900360640190fd5b6000610ac0610dbf565b6001600160a01b038116600090815260016020526040902054909150610b2d576040805162461bcd60e51b815260206004820152601f60248201527f737761703a2055736572206e6f7420616c6c6f77656420746f20737761702100604482015290519081900360640190fd5b610b6d735de805154a24cb824ea70f9025527f35facd73a1827f0000000000000000000000007653607d4025a0a6091a5aa4591f3ecdb533be2485610f50565b6001600160a01b03811660009081526001602052604081208054919055610ba973a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488383610e6b565b604080518481526020810183905281516001600160a01b038516927f18704ae982dcd24a1beeeed3ecf045ab0520d7b7519b97adf3e4f40bf7efe339928290030190a2505050565b735de805154a24cb824ea70f9025527f35facd73a181565b610c11610dbf565b6000546001600160a01b03908116911614610c61576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b610c8073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488383610e6b565b5050565b610c8c610dbf565b6000546001600160a01b03908116911614610cdc576040805162461bcd60e51b81526020600482018190526024820152600080516020611275833981519152604482015290519081900360640190fd5b6001600160a01b038116610d215760405162461bcd60e51b815260040180806020018281038252602681526020018061122a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b68022b1c8c1227a0000081565b7f0000000000000000000000007653607d4025a0a6091a5aa4591f3ecdb533be2481565b60016020526000908152604090205481565b3390565b600054600160a01b900460ff16610e18576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e4e610dbf565b604080516001600160a01b039092168252519081900360200190a1565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ebd908490610fb0565b505050565b600054600160a01b900460ff1615610f14576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e4e610dbf565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610faa908590610fb0565b50505050565b6060611005826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110619092919063ffffffff16565b805190915015610ebd5780806020019051602081101561102457600080fd5b5051610ebd5760405162461bcd60e51b815260040180806020018281038252602a815260200180611295602a913960400191505060405180910390fd5b60606110708484600085611078565b949350505050565b606061108385611223565b6110d4576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106111135780518252601f1990920191602091820191016110f4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611175576040519150601f19603f3d011682016040523d82523d6000602084013e61117a565b606091505b5091509150811561118e5791506110709050565b80511561119e5780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111e85781810151838201526020016111d0565b50505050905090810190601f1680156112155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737377686974656c69737455736572733a2041727261797320617265206e6f7420657175616c214f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220257eaacb39c210d7570e702943046c9464a4def9301421f7992ef97d35673c9964736f6c634300060c0033
Deployed Bytecode Sourcemap
20963:2928:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22585:554;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22585:554:0;;-1:-1:-1;22585:554:0;-1:-1:-1;22585:554:0;:::i;:::-;;23145:323;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23145:323:0;;-1:-1:-1;23145:323:0;-1:-1:-1;23145:323:0;:::i;23551:72::-;;;:::i;19828:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;23629:130;;;;;;;;;;;;;;;;-1:-1:-1;23629:130:0;-1:-1:-1;;;;;23629:130:0;;:::i;18353:138::-;;;:::i;23474:71::-;;;:::i;21245:80::-;;;:::i;:::-;;;;-1:-1:-1;;;;;21245:80:0;;;;;;;;;;;;;;17743:73;;;:::i;21883:609::-;;;;;;;;;;;;;;;;-1:-1:-1;21883:609:0;;:::i;21160:80::-;;;:::i;23765:123::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23765:123:0;;;;;;;;:::i;18639:230::-;;;;;;;;;;;;;;;;-1:-1:-1;18639:230:0;-1:-1:-1;;;;;18639:230:0;;:::i;21107:46::-;;;:::i;:::-;;;;;;;;;;;;;;;;21067:35;;;:::i;21332:46::-;;;;;;;;;;;;;;;;-1:-1:-1;21332:46:0;-1:-1:-1;;;;;21332:46:0;;:::i;22585:554::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;22710:5;22737:28;;::::1;22729:78;;;;-1:-1:-1::0;;;22729:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22835:1;22822:10;:14;22814:56;;;::::0;;-1:-1:-1;;;22814:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22884:9;22879:209;22903:10;22899:1;:14;22879:209;;;22929:12;22944:5;;22950:1;22944:8;;;;;;;;;;;;;-1:-1:-1::0;;;;;22944:8:0::1;22929:23;;22961:14;22978:7;;22986:1;22978:10;;;;;;;-1:-1:-1::0;;;;;23054:17:0;;::::1;;::::0;;;:11:::1;22978:10;23054:17:::0;;;;;;;22978:10;;;::::1;::::0;;;::::1;;23054:26:::0;;;-1:-1:-1;;22915:3:0::1;22879:209;;;;23101:32;23118:5;;23125:7;;23101:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;23101:32:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;23101:32:0;;;::::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;23101:32:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;23101:32:0;;-1:-1:-1;;;;;;;23101:32:0::1;18005:1;22585:554:::0;;;;:::o;23145:323::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;23239:5;23266:14;23258:52:::1;;;::::0;;-1:-1:-1;;;23258:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23324:9;23319:111;23343:10;23339:1;:14;23319:111;;;23369:12;23384:5;;23390:1;23384:8;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;23384:8:0::1;23421:1;23401:17:::0;;;:11:::1;:17:::0;;;;;;;:21;-1:-1:-1;23355:3:0;;;::::1;::::0;-1:-1:-1;23319:111:0::1;;;;23443:19;23456:5;;23443:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;23443:19:0::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;23443:19:0;;-1:-1:-1;;;;23443:19:0::1;18005:1;23145:323:::0;;:::o;23551:72::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;20382:7:::1;::::0;-1:-1:-1;;;20382:7:0;::::1;;;20374:40;;;::::0;;-1:-1:-1;;;20374:40:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20374:40:0;;;;;;;;;;;;;::::1;;23607:10:::2;:8;:10::i;:::-;23551:72::o:0;19828:::-;19867:4;19887:7;-1:-1:-1;;;19887:7:0;;;;;19828:72::o;23629:130::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;23723:29:::1;::::0;;-1:-1:-1;;;23723:29:0;;23746:4:::1;23723:29;::::0;::::1;::::0;;;23695:58:::1;::::0;23713:8;;21282:42:::1;::::0;23723:14:::1;::::0;:29;;;;;::::1;::::0;;;;;;;;21282:42;23723:29;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23723:29:0;21282:42:::1;::::0;23695:58;:17:::1;:58::i;:::-;23629:130:::0;:::o;18353:138::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;18456:1:::1;18440:6:::0;;18419:40:::1;::::0;-1:-1:-1;;;;;18440:6:0;;::::1;::::0;18419:40:::1;::::0;18456:1;;18419:40:::1;18483:1;18466:19:::0;;-1:-1:-1;;;;;;18466:19:0::1;::::0;;18353:138::o;23474:71::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;20126:7:::1;::::0;-1:-1:-1;;;20126:7:0;::::1;;;20125:8;20117:37;;;::::0;;-1:-1:-1;;;20117:37:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20117:37:0;;;;;;;;;;;;;::::1;;23531:8:::2;:6;:8::i;21245:80::-:0;21282:42;21245:80;:::o;17743:73::-;17781:7;17804:6;-1:-1:-1;;;;;17804:6:0;17743:73;:::o;21883:609::-;20126:7;;-1:-1:-1;;;20126:7:0;;;;20125:8;20117:37;;;;;-1:-1:-1;;;20117:37:0;;;;;;;;;;;;-1:-1:-1;;;20117:37:0;;;;;;;;;;;;;;;21142:11:::1;21953:10;:22;;21945:65;;;::::0;;-1:-1:-1;;;21945:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22019:12;22034;:10;:12::i;:::-;-1:-1:-1::0;;;;;22061:17:0;::::1;22081:1;22061:17:::0;;;:11:::1;:17;::::0;;;;;22019:27;;-1:-1:-1;22053:65:0::1;;;::::0;;-1:-1:-1;;;22053:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22180:51;21197:42;22202:4:::0;22208:10:::1;22220::::0;22180:21:::1;:51::i;:::-;-1:-1:-1::0;;;;;22305:17:0;::::1;22284:18;22305:17:::0;;;:11:::1;:17;::::0;;;;;;22329:21;;;22359:35:::1;21282:42;22317:4:::0;22305:17;22359::::1;:35::i;:::-;22444:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;22444:43:0;::::1;::::0;::::1;::::0;;;;;;::::1;20161:1;;21883:609:::0;:::o;21160:80::-;21197:42;21160:80;:::o;23765:123::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;23847:35:::1;21282:42;23865:8:::0;23875:6;23847:17:::1;:35::i;:::-;23765:123:::0;;:::o;18639:230::-;17949:12;:10;:12::i;:::-;17939:6;;-1:-1:-1;;;;;17939:6:0;;;:22;;;17931:67;;;;;-1:-1:-1;;;17931:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17931:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18724:22:0;::::1;18716:73;;;;-1:-1:-1::0;;;18716:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18822:6;::::0;;18801:38:::1;::::0;-1:-1:-1;;;;;18801:38:0;;::::1;::::0;18822:6;::::1;::::0;18801:38:::1;::::0;::::1;18846:6;:17:::0;;-1:-1:-1;;;;;;18846:17:0::1;-1:-1:-1::0;;;;;18846:17:0;;;::::1;::::0;;;::::1;::::0;;18639:230::o;21107:46::-;21142:11;21107:46;:::o;21067:35::-;;;:::o;21332:46::-;;;;;;;;;;;;;:::o;15763:100::-;15847:10;15763:100;:::o;20801:110::-;20382:7;;-1:-1:-1;;;20382:7:0;;;;20374:40;;;;;-1:-1:-1;;;20374:40:0;;;;;;;;;;;;-1:-1:-1;;;20374:40:0;;;;;;;;;;;;;;;20866:5:::1;20856:15:::0;;-1:-1:-1;;;;20856:15:0::1;::::0;;20883:22:::1;20892:12;:10;:12::i;:::-;20883:22;::::0;;-1:-1:-1;;;;;20883:22:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;20801:110::o:0;12130:171::-;12236:58;;;-1:-1:-1;;;;;12236:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12236:58:0;-1:-1:-1;;;12236:58:0;;;12209:86;;12229:5;;12209:19;:86::i;:::-;12130:171;;;:::o;20562:108::-;20126:7;;-1:-1:-1;;;20126:7:0;;;;20125:8;20117:37;;;;;-1:-1:-1;;;20117:37:0;;;;;;;;;;;;-1:-1:-1;;;20117:37:0;;;;;;;;;;;;;;;20618:7:::1;:14:::0;;-1:-1:-1;;;;20618:14:0::1;-1:-1:-1::0;;;20618:14:0::1;::::0;;20644:20:::1;20651:12;:10;:12::i;12307:199::-:0;12431:68;;;-1:-1:-1;;;;;12431:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12431:68:0;-1:-1:-1;;;12431:68:0;;;12404:96;;12424:5;;12404:19;:96::i;:::-;12307:199;;;;:::o;14344:723::-;14752:23;14778:69;14806:4;14778:69;;;;;;;;;;;;;;;;;14786:5;-1:-1:-1;;;;;14778:27:0;;;:69;;;;;:::i;:::-;14858:17;;14752:95;;-1:-1:-1;14858:21:0;14854:208;;14988:10;14977:30;;;;;;;;;;;;;;;-1:-1:-1;14977:30:0;14969:85;;;;-1:-1:-1;;;14969:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4283:190;4386:12;4414:53;4437:6;4445:4;4451:1;4454:12;4414:22;:53::i;:::-;4407:60;4283:190;-1:-1:-1;;;;4283:190:0:o;5613:881::-;5743:12;5772:18;5783:6;5772:10;:18::i;:::-;5764:60;;;;;-1:-1:-1;;;5764:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5890:12;5904:23;5931:6;-1:-1:-1;;;;;5931:11:0;5951:8;5962:4;5931:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5931:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5889:78;;;;5978:7;5974:515;;;6003:10;-1:-1:-1;5996:17:0;;-1:-1:-1;5996:17:0;5974:515;6101:17;;:21;6097:385;;6340:10;6334:17;6395:15;6382:10;6378:2;6374:19;6367:44;6294:130;6459:12;6452:20;;-1:-1:-1;;;6452:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:392;1809:20;1844:8;;;1466:392::o
Swarm Source
ipfs://3e231c03333398618404ce140e0b742a741efef59a682be7c2891dedb8f06601
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.