Source Code
Latest 25 from a total of 38 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Tokens | 134686257 | 276 days ago | IN | 0 ETH | 0.00000170647 | ||||
| Set Tokens | 130975527 | 362 days ago | IN | 0 ETH | 0.000000087658 | ||||
| Set Tokens | 130485354 | 374 days ago | IN | 0 ETH | 0.000000959514 | ||||
| Set Tokens | 129842856 | 388 days ago | IN | 0 ETH | 0.000001033889 | ||||
| Set Tokens | 129842153 | 388 days ago | IN | 0 ETH | 0.000000596264 | ||||
| Set Tokens | 129842135 | 388 days ago | IN | 0 ETH | 0.000000633721 | ||||
| Set Tokens | 126425587 | 468 days ago | IN | 0 ETH | 0.00000036247 | ||||
| Set Tokens | 126244953 | 472 days ago | IN | 0 ETH | 0.000000370008 | ||||
| Set Tokens | 126244445 | 472 days ago | IN | 0 ETH | 0.000000093487 | ||||
| Set Tokens | 126244441 | 472 days ago | IN | 0 ETH | 0.000001566658 | ||||
| Set Tokens | 126052805 | 476 days ago | IN | 0 ETH | 0.000000254329 | ||||
| Set Tokens | 126048489 | 476 days ago | IN | 0 ETH | 0.000000199656 | ||||
| Set Tokens | 125863234 | 481 days ago | IN | 0 ETH | 0.000000220539 | ||||
| Set Tokens | 125863014 | 481 days ago | IN | 0 ETH | 0.000000448229 | ||||
| Set Tokens | 121502403 | 581 days ago | IN | 0 ETH | 0.000000206945 | ||||
| Set Tokens | 121250457 | 587 days ago | IN | 0 ETH | 0.000009123379 | ||||
| Set Tokens | 117928683 | 664 days ago | IN | 0 ETH | 0.000004643652 | ||||
| Set Tokens | 116771063 | 691 days ago | IN | 0 ETH | 0.000330700428 | ||||
| Set Tokens | 113296655 | 771 days ago | IN | 0 ETH | 0.0001260114 | ||||
| Transfer Ownersh... | 113218069 | 773 days ago | IN | 0 ETH | 0.000064319116 | ||||
| Set Tokens | 106133598 | 937 days ago | IN | 0 ETH | 0.000057125683 | ||||
| Set Tokens | 106133331 | 937 days ago | IN | 0 ETH | 0.000048842087 | ||||
| Set Tokens | 106129112 | 937 days ago | IN | 0 ETH | 0.000059910556 | ||||
| Set Tokens | 105360714 | 955 days ago | IN | 0 ETH | 0.000054580662 | ||||
| Set Tokens | 105360633 | 955 days ago | IN | 0 ETH | 0.000051474077 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 107504743 | 906 days ago | 0 ETH | ||||
| 107504743 | 906 days ago | 0 ETH | ||||
| 107504743 | 906 days ago | 0 ETH | ||||
| 107470428 | 906 days ago | 0 ETH | ||||
| 107470428 | 906 days ago | 0 ETH | ||||
| 107469432 | 906 days ago | 0 ETH | ||||
| 107469432 | 906 days ago | 0 ETH | ||||
| 107469432 | 906 days ago | 0 ETH | ||||
| 107469370 | 906 days ago | 0 ETH | ||||
| 107469370 | 906 days ago | 0 ETH | ||||
| 107449386 | 907 days ago | 0 ETH | ||||
| 107449386 | 907 days ago | 0 ETH | ||||
| 107449386 | 907 days ago | 0 ETH | ||||
| 107449247 | 907 days ago | 0 ETH | ||||
| 107449247 | 907 days ago | 0 ETH | ||||
| 107429377 | 907 days ago | 0 ETH | ||||
| 107429377 | 907 days ago | 0 ETH | ||||
| 107429377 | 907 days ago | 0 ETH | ||||
| 107390447 | 908 days ago | 0 ETH | ||||
| 107390447 | 908 days ago | 0 ETH | ||||
| 107312873 | 910 days ago | 0 ETH | ||||
| 107312873 | 910 days ago | 0 ETH | ||||
| 107308923 | 910 days ago | 0 ETH | ||||
| 107308923 | 910 days ago | 0 ETH | ||||
| 107297045 | 910 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WhitelistV2
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity 0.8.17;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/Math.sol";
import "./interfaces/IWhitelist.sol";
contract WhitelistV2 is IWhitelist, Ownable {
/// @dev fee denominator
uint256 public constant FEE_DENOMINATOR = 10000;
/// @dev array of token indices
mapping(address => uint256) private _tokenIds;
/// @dev tokens
IWhitelist.TokenStatus[] private _tokens;
/// @dev array of pool indices
mapping(address => uint256) private _poolIds;
/// @dev pools
IWhitelist.PoolStatus[] private _pools;
event TokenSet(address token, uint256 max, uint256 min, uint256 fee, IWhitelist.TokenState state);
event PoolSet(address pool, uint256 fee, IWhitelist.PoolState state);
function tokenMin(address token_) external view returns (uint256) {
return _getToken(token_).min;
}
function tokenMax(address token_) external view returns (uint256) {
return _getToken(token_).max;
}
function tokenMinMax(address token_) external view returns (uint256, uint256) {
IWhitelist.TokenStatus memory token = _getToken(token_);
return (token.min, token.max);
}
function bridgeFee(address token_) external view returns (uint256) {
return _getToken(token_).bridgeFee;
}
function tokenState(address token_) external view returns (uint8) {
return uint8(_getToken(token_).state);
}
function tokenStatus(address token_) external view returns (IWhitelist.TokenStatus memory) {
return _getToken(token_);
}
function aggregationFee(address pool_) external view returns (uint256) {
return _getPool(pool_).aggregationFee;
}
function poolState(address pool_) external view returns (uint8){
return uint8(_getPool(pool_).state);
}
function poolStatus(address pool_) external view returns (IWhitelist.PoolStatus memory) {
return _getPool(pool_);
}
function tokens(uint256 offset, uint256 count) external view returns (IWhitelist.TokenStatus[] memory) {
require(offset <= _tokens.length, "Whitelist: wrong offset");
count = Math.min(_tokens.length, count + offset);
IWhitelist.TokenStatus[] memory tokens_ = new IWhitelist.TokenStatus[](count - offset);
for (uint256 i = offset; i < count; ++i) {
tokens_[i] = _tokens[i];
}
return tokens_;
}
function pools(uint256 offset, uint256 count) external view returns (IWhitelist.PoolStatus[] memory) {
require(offset <= _pools.length, "Whitelist: wrong offset");
count = Math.min(_pools.length, count + offset);
IWhitelist.PoolStatus[] memory pools_ = new IWhitelist.PoolStatus[](count - offset);
for (uint256 i = offset; i < count; ++i) {
pools_[i] = _pools[i];
}
return pools_;
}
function setTokens(IWhitelist.TokenStatus[] memory tokens_) external onlyOwner {
uint256 count = tokens_.length;
for (uint256 i; i < count; ++i) {
IWhitelist.TokenStatus memory status = tokens_[i];
require(status.token != address(0), "Whitelist: zero address");
require(status.max >= status.min, "Whitelist: min max wrong");
require(status.bridgeFee <= FEE_DENOMINATOR, "Whitelist: fee > 100%");
uint256 id = _tokenIds[status.token];
if (id == 0) {
_tokens.push(status);
_tokenIds[status.token] = _tokens.length;
} else {
--id;
_tokens[id] = status;
}
emit TokenSet(status.token, status.max, status.min, status.bridgeFee, status.state);
}
}
function setPools(IWhitelist.PoolStatus[] memory pools_) external onlyOwner {
uint256 count = pools_.length;
for (uint256 i; i < count; ++i) {
IWhitelist.PoolStatus memory status = pools_[i];
require(status.pool != address(0), "Whitelist: zero address");
require(status.aggregationFee <= FEE_DENOMINATOR, "Whitelist: fee > 100%");
uint256 id = _poolIds[status.pool];
if (id == 0) {
_pools.push(status);
_poolIds[status.pool] = _pools.length;
} else {
--id;
_pools[id] = status;
}
emit PoolSet(status.pool, status.aggregationFee, status.state);
}
}
function _getToken(address token) private view returns (IWhitelist.TokenStatus memory) {
uint256 id = _tokenIds[token];
require(id != 0, "Whitelist: token not set");
--id;
return _tokens[id];
}
function _getPool(address pool) private view returns (IWhitelist.PoolStatus memory) {
uint256 id = _poolIds[pool];
require(id != 0, "Whitelist: pool not set");
--id;
return _pools[id];
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @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() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
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 {
_transferOwnership(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");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^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 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) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow.
return (a & b) + (a ^ b) / 2;
}
/**
* @dev Returns the ceiling of the division of two numbers.
*
* This differs from standard division with `/` in that it rounds up instead
* of rounding down.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b - 1) / b can overflow on addition, so we distribute.
return a == 0 ? 0 : (a - 1) / b + 1;
}
/**
* @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
* @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
* with further edits by Uniswap Labs also under MIT license.
*/
function mulDiv(
uint256 x,
uint256 y,
uint256 denominator
) internal pure returns (uint256 result) {
unchecked {
// 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
// use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
// variables such that product = prod1 * 2^256 + prod0.
uint256 prod0; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
assembly {
let mm := mulmod(x, y, not(0))
prod0 := mul(x, y)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division.
if (prod1 == 0) {
return prod0 / denominator;
}
// Make sure the result is less than 2^256. Also prevents denominator == 0.
require(denominator > prod1);
///////////////////////////////////////////////
// 512 by 256 division.
///////////////////////////////////////////////
// Make division exact by subtracting the remainder from [prod1 prod0].
uint256 remainder;
assembly {
// Compute remainder using mulmod.
remainder := mulmod(x, y, denominator)
// Subtract 256 bit number from 512 bit number.
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
// Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
// See https://cs.stackexchange.com/q/138556/92363.
// Does not overflow because the denominator cannot be zero at this stage in the function.
uint256 twos = denominator & (~denominator + 1);
assembly {
// Divide denominator by twos.
denominator := div(denominator, twos)
// Divide [prod1 prod0] by twos.
prod0 := div(prod0, twos)
// Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
twos := add(div(sub(0, twos), twos), 1)
}
// Shift in bits from prod1 into prod0.
prod0 |= prod1 * twos;
// Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
// that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
// four bits. That is, denominator * inv = 1 mod 2^4.
uint256 inverse = (3 * denominator) ^ 2;
// Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
// in modular arithmetic, doubling the correct bits in each step.
inverse *= 2 - denominator * inverse; // inverse mod 2^8
inverse *= 2 - denominator * inverse; // inverse mod 2^16
inverse *= 2 - denominator * inverse; // inverse mod 2^32
inverse *= 2 - denominator * inverse; // inverse mod 2^64
inverse *= 2 - denominator * inverse; // inverse mod 2^128
inverse *= 2 - denominator * inverse; // inverse mod 2^256
// Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
// This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
// less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
// is no longer required.
result = prod0 * inverse;
return result;
}
}
/**
* @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
*/
function mulDiv(
uint256 x,
uint256 y,
uint256 denominator,
Rounding rounding
) internal pure returns (uint256) {
uint256 result = mulDiv(x, y, denominator);
if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
result += 1;
}
return result;
}
/**
* @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
*
* Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
*/
function sqrt(uint256 a) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
// For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
//
// We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
// `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
//
// This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
// → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
// → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
//
// Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
uint256 result = 1 << (log2(a) >> 1);
// At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
// since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
// every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
// into the expected uint128 result.
unchecked {
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
return min(result, a / result);
}
}
/**
* @notice Calculates sqrt(a), following the selected rounding direction.
*/
function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = sqrt(a);
return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
}
}
/**
* @dev Return the log in base 2, rounded down, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 128;
}
if (value >> 64 > 0) {
value >>= 64;
result += 64;
}
if (value >> 32 > 0) {
value >>= 32;
result += 32;
}
if (value >> 16 > 0) {
value >>= 16;
result += 16;
}
if (value >> 8 > 0) {
value >>= 8;
result += 8;
}
if (value >> 4 > 0) {
value >>= 4;
result += 4;
}
if (value >> 2 > 0) {
value >>= 2;
result += 2;
}
if (value >> 1 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 2, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log2(value);
return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 10, rounded down, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >= 10**64) {
value /= 10**64;
result += 64;
}
if (value >= 10**32) {
value /= 10**32;
result += 32;
}
if (value >= 10**16) {
value /= 10**16;
result += 16;
}
if (value >= 10**8) {
value /= 10**8;
result += 8;
}
if (value >= 10**4) {
value /= 10**4;
result += 4;
}
if (value >= 10**2) {
value /= 10**2;
result += 2;
}
if (value >= 10**1) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 10, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log10(value);
return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 256, rounded down, of a positive value.
* Returns 0 if given 0.
*
* Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
*/
function log256(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 16;
}
if (value >> 64 > 0) {
value >>= 64;
result += 8;
}
if (value >> 32 > 0) {
value >>= 32;
result += 4;
}
if (value >> 16 > 0) {
value >>= 16;
result += 2;
}
if (value >> 8 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 10, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log256(value);
return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
}
}
}// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity 0.8.17;
interface IWhitelist {
enum TokenState { NotSet, InOut }
enum PoolState { NotSet, AddSwapRemove }
struct TokenStatus {
address token;
uint256 min;
uint256 max;
uint256 bridgeFee;
TokenState state;
}
struct PoolStatus {
address pool;
uint256 aggregationFee;
PoolState state;
}
function tokenMin(address token) external view returns (uint256);
function tokenMax(address token) external view returns (uint256);
function tokenMinMax(address token) external view returns (uint256, uint256);
function bridgeFee(address token) external view returns (uint256);
function tokenState(address token) external view returns (uint8);
function tokenStatus(address token) external view returns (TokenStatus memory);
function tokens(uint256 offset, uint256 count) external view returns (TokenStatus[] memory);
function aggregationFee(address pool) external view returns (uint256);
function poolState(address pool) external view returns (uint8);
function poolStatus(address pool) external view returns (PoolStatus memory);
function pools(uint256 offset, uint256 count) external view returns (PoolStatus[] memory);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"enum IWhitelist.PoolState","name":"state","type":"uint8"}],"name":"PoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"max","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"min","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"enum IWhitelist.TokenState","name":"state","type":"uint8"}],"name":"TokenSet","type":"event"},{"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool_","type":"address"}],"name":"aggregationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"bridgeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool_","type":"address"}],"name":"poolState","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool_","type":"address"}],"name":"poolStatus","outputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"aggregationFee","type":"uint256"},{"internalType":"enum IWhitelist.PoolState","name":"state","type":"uint8"}],"internalType":"struct IWhitelist.PoolStatus","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"pools","outputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"aggregationFee","type":"uint256"},{"internalType":"enum IWhitelist.PoolState","name":"state","type":"uint8"}],"internalType":"struct IWhitelist.PoolStatus[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"aggregationFee","type":"uint256"},{"internalType":"enum IWhitelist.PoolState","name":"state","type":"uint8"}],"internalType":"struct IWhitelist.PoolStatus[]","name":"pools_","type":"tuple[]"}],"name":"setPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"bridgeFee","type":"uint256"},{"internalType":"enum IWhitelist.TokenState","name":"state","type":"uint8"}],"internalType":"struct IWhitelist.TokenStatus[]","name":"tokens_","type":"tuple[]"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"tokenMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"tokenMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"tokenMinMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"tokenState","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"tokenStatus","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"bridgeFee","type":"uint256"},{"internalType":"enum IWhitelist.TokenState","name":"state","type":"uint8"}],"internalType":"struct IWhitelist.TokenStatus","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"tokens","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"bridgeFee","type":"uint256"},{"internalType":"enum IWhitelist.TokenState","name":"state","type":"uint8"}],"internalType":"struct IWhitelist.TokenStatus[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6116668061007e6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a257806399cd120f1161007157806399cd120f1461024c578063d73792a91461025f578063e8f11c4514610268578063f2fde38b14610290578063f59ae9ae146102a357600080fd5b8063715018a6146101e95780637450e2de146101f15780638b4864d6146102115780638da5cb5b1461023157600080fd5b80633c38ccbb116100de5780633c38ccbb1461017c5780633fc8e65e1461019c57806359b6f0dc146101b157806367742bd4146101d657600080fd5b806308fe73b4146101105780630acac94214610136578063171ed7e9146101565780633b8b70bb14610169575b600080fd5b61012361011e366004611144565b6102b6565b6040519081526020015b60405180910390f35b610149610144366004611144565b6102cb565b60405161012d91906111d7565b610123610164366004611144565b6102e2565b610123610177366004611144565b6102f7565b61018f61018a366004611144565b61030c565b60405161012d9190611215565b6101af6101aa3660046112e7565b610336565b005b6101c46101bf366004611144565b61060d565b60405160ff909116815260200161012d565b6101236101e4366004611144565b61062d565b6101af610638565b6102046101ff3660046113ba565b61064c565b60405161012d91906113dc565b61022461021f3660046113ba565b6107eb565b60405161012d919061142a565b6000546040516001600160a01b03909116815260200161012d565b6101c461025a366004611144565b610997565b61012361271081565b61027b610276366004611144565b6109b7565b6040805192835260208301919091520161012d565b6101af61029e366004611144565b6109db565b6101af6102b136600461146c565b610a54565b60006102c182610deb565b6060015192915050565b6102d36110e0565b6102dc82610deb565b92915050565b60006102ed82610deb565b6020015192915050565b600061030282610deb565b6040015192915050565b61032d60408051606081018252600080825260208201819052909182015290565b6102dc82610f1f565b61033e61101e565b805160005b8181101561060857600083828151811061035f5761035f611542565b602090810291909101015180519091506001600160a01b03166103c35760405162461bcd60e51b815260206004820152601760248201527657686974656c6973743a207a65726f206164647265737360481b60448201526064015b60405180910390fd5b612710816020015111156104115760405162461bcd60e51b815260206004820152601560248201527457686974656c6973743a20666565203e203130302560581b60448201526064016103ba565b80516001600160a01b031660009081526003602052604081205490819003610524576004805460018181018355600092909252835160039091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810180546001600160a01b039093166001600160a01b031990931692909217825560208501517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c82015560408501517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d9091018054869460ff199091169083818111156104fb576104fb61115f565b02179055505060045483516001600160a01b0316600090815260036020526040902055506105ae565b61052d8161156e565b9050816004828154811061054357610543611542565b600091825260209182902083516003929092020180546001600160a01b0319166001600160a01b039092169190911781559082015160018083019190915560408301516002830180549192909160ff19169083818111156105a6576105a661115f565b021790555050505b7f35cf0ed869165a43444185b5768c9d223379438ca00add4ec553b761d79671488260000151836020015184604001516040516105ed93929190611585565b60405180910390a1505080610601906115b3565b9050610343565b505050565b600061061882610deb565b6080015160018111156102dc576102dc61115f565b60006102ed82610f1f565b61064061101e565b61064a6000611078565b565b60045460609083111561069b5760405162461bcd60e51b815260206004820152601760248201527615da1a5d195b1a5cdd0e881ddc9bdb99c81bd9999cd95d604a1b60448201526064016103ba565b6004546106b1906106ac85856115cc565b6110c8565b915060006106bf84846115df565b67ffffffffffffffff8111156106d7576106d7611223565b60405190808252806020026020018201604052801561072957816020015b61071660408051606081018252600080825260208201819052909182015290565b8152602001906001900390816106f55790505b509050835b838110156107e3576004818154811061074957610749611542565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168352600180820154948401949094526002810154929390929184019160ff16908111156107a0576107a061115f565b60018111156107b1576107b161115f565b815250508282815181106107c7576107c7611542565b6020026020010181905250806107dc906115b3565b905061072e565b509392505050565b60025460609083111561083a5760405162461bcd60e51b815260206004820152601760248201527615da1a5d195b1a5cdd0e881ddc9bdb99c81bd9999cd95d604a1b60448201526064016103ba565b60025461084b906106ac85856115cc565b9150600061085984846115df565b67ffffffffffffffff81111561087157610871611223565b6040519080825280602002602001820160405280156108aa57816020015b6108976110e0565b81526020019060019003908161088f5790505b509050835b838110156107e357600281815481106108ca576108ca611542565b90600052602060002090600502016040518060a00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660018111156109545761095461115f565b60018111156109655761096561115f565b8152505082828151811061097b5761097b611542565b602002602001018190525080610990906115b3565b90506108af565b60006109a282610f1f565b6040015160018111156102dc576102dc61115f565b60008060006109c584610deb565b9050806020015181604001519250925050915091565b6109e361101e565b6001600160a01b038116610a485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ba565b610a5181611078565b50565b610a5c61101e565b805160005b81811015610608576000838281518110610a7d57610a7d611542565b602090810291909101015180519091506001600160a01b0316610adc5760405162461bcd60e51b815260206004820152601760248201527657686974656c6973743a207a65726f206164647265737360481b60448201526064016103ba565b806020015181604001511015610b345760405162461bcd60e51b815260206004820152601860248201527f57686974656c6973743a206d696e206d61782077726f6e67000000000000000060448201526064016103ba565b61271081606001511115610b825760405162461bcd60e51b815260206004820152601560248201527457686974656c6973743a20666565203e203130302560581b60448201526064016103ba565b80516001600160a01b031660009081526001602052604081205490819003610ce7576002805460018181018355600092909252835160059091027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace810180546001600160a01b039093166001600160a01b031990931692909217825560208501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf82015560408501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad082015560608501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad182015560808501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad29091018054869460ff19909116908381811115610cbe57610cbe61115f565b02179055505060025483516001600160a01b031660009081526001602052604090205550610d85565b610cf08161156e565b90508160028281548110610d0657610d06611542565b600091825260209182902083516005929092020180546001600160a01b0319166001600160a01b0390921691909117815590820151600180830191909155604083015160028301556060830151600383015560808301516004830180549192909160ff1916908381811115610d7d57610d7d61115f565b021790555050505b7f0d7b343ecd56f9990d6289234e875fec1546a589555b41e8c68d1b0bce612b6582600001518360400151846020015185606001518660800151604051610dd09594939291906115f2565b60405180910390a1505080610de4906115b3565b9050610a61565b610df36110e0565b6001600160a01b03821660009081526001602052604081205490819003610e5c5760405162461bcd60e51b815260206004820152601860248201527f57686974656c6973743a20746f6b656e206e6f7420736574000000000000000060448201526064016103ba565b610e658161156e565b905060028181548110610e7a57610e7a611542565b90600052602060002090600502016040518060a00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff166001811115610f0457610f0461115f565b6001811115610f1557610f1561115f565b9052509392505050565b610f4060408051606081018252600080825260208201819052909182015290565b6001600160a01b03821660009081526003602052604081205490819003610fa95760405162461bcd60e51b815260206004820152601760248201527f57686974656c6973743a20706f6f6c206e6f742073657400000000000000000060448201526064016103ba565b610fb28161156e565b905060048181548110610fc757610fc7611542565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168352600180820154948401949094526002810154929390929184019160ff1690811115610f0457610f0461115f565b6000546001600160a01b0316331461064a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ba565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183106110d757816110d9565b825b9392505050565b6040518060a0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600060018111156111235761112361115f565b905290565b80356001600160a01b038116811461113f57600080fd5b919050565b60006020828403121561115657600080fd5b6110d982611128565b634e487b7160e01b600052602160045260246000fd5b60028110610a5157634e487b7160e01b600052602160045260246000fd5b80516001600160a01b0316825260208082015190830152604080820151908301526060808201519083015260808101516111cc81611175565b806080840152505050565b60a081016102dc8284611193565b80516001600160a01b0316825260208082015190830152604081015161120a81611175565b806040840152505050565b606081016102dc82846111e5565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561125c5761125c611223565b60405290565b60405160a0810167ffffffffffffffff8111828210171561125c5761125c611223565b604051601f8201601f1916810167ffffffffffffffff811182821017156112ae576112ae611223565b604052919050565b600067ffffffffffffffff8211156112d0576112d0611223565b5060051b60200190565b60028110610a5157600080fd5b600060208083850312156112fa57600080fd5b823567ffffffffffffffff81111561131157600080fd5b8301601f8101851361132257600080fd5b8035611335611330826112b6565b611285565b8181526060918202830184019184820191908884111561135457600080fd5b938501935b838510156113ae5780858a0312156113715760008081fd5b611379611239565b61138286611128565b8152868601358782015260408087013561139b816112da565b9082015283529384019391850191611359565b50979650505050505050565b600080604083850312156113cd57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561141e5761140b8385516111e5565b92840192606092909201916001016113f8565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561141e57611459838551611193565b9284019260a09290920191600101611446565b6000602080838503121561147f57600080fd5b823567ffffffffffffffff81111561149657600080fd5b8301601f810185136114a757600080fd5b80356114b5611330826112b6565b81815260a091820283018401918482019190888411156114d457600080fd5b938501935b838510156113ae5780858a0312156114f15760008081fd5b6114f9611262565b61150286611128565b81528587013587820152604080870135908201526060808701359082015260808087013561152f816112da565b90820152835293840193918501916114d9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008161157d5761157d611558565b506000190190565b6001600160a01b038416815260208101839052606081016115a583611175565b826040830152949350505050565b6000600182016115c5576115c5611558565b5060010190565b808201808211156102dc576102dc611558565b818103818111156102dc576102dc611558565b6001600160a01b038616815260208101859052604081018490526060810183905260a0810161162083611175565b826080830152969550505050505056fea264697066735822122023f093f58cb267d7e8a60c3716b85fae8bb81639924e3a300d78a646c3a722ef64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a257806399cd120f1161007157806399cd120f1461024c578063d73792a91461025f578063e8f11c4514610268578063f2fde38b14610290578063f59ae9ae146102a357600080fd5b8063715018a6146101e95780637450e2de146101f15780638b4864d6146102115780638da5cb5b1461023157600080fd5b80633c38ccbb116100de5780633c38ccbb1461017c5780633fc8e65e1461019c57806359b6f0dc146101b157806367742bd4146101d657600080fd5b806308fe73b4146101105780630acac94214610136578063171ed7e9146101565780633b8b70bb14610169575b600080fd5b61012361011e366004611144565b6102b6565b6040519081526020015b60405180910390f35b610149610144366004611144565b6102cb565b60405161012d91906111d7565b610123610164366004611144565b6102e2565b610123610177366004611144565b6102f7565b61018f61018a366004611144565b61030c565b60405161012d9190611215565b6101af6101aa3660046112e7565b610336565b005b6101c46101bf366004611144565b61060d565b60405160ff909116815260200161012d565b6101236101e4366004611144565b61062d565b6101af610638565b6102046101ff3660046113ba565b61064c565b60405161012d91906113dc565b61022461021f3660046113ba565b6107eb565b60405161012d919061142a565b6000546040516001600160a01b03909116815260200161012d565b6101c461025a366004611144565b610997565b61012361271081565b61027b610276366004611144565b6109b7565b6040805192835260208301919091520161012d565b6101af61029e366004611144565b6109db565b6101af6102b136600461146c565b610a54565b60006102c182610deb565b6060015192915050565b6102d36110e0565b6102dc82610deb565b92915050565b60006102ed82610deb565b6020015192915050565b600061030282610deb565b6040015192915050565b61032d60408051606081018252600080825260208201819052909182015290565b6102dc82610f1f565b61033e61101e565b805160005b8181101561060857600083828151811061035f5761035f611542565b602090810291909101015180519091506001600160a01b03166103c35760405162461bcd60e51b815260206004820152601760248201527657686974656c6973743a207a65726f206164647265737360481b60448201526064015b60405180910390fd5b612710816020015111156104115760405162461bcd60e51b815260206004820152601560248201527457686974656c6973743a20666565203e203130302560581b60448201526064016103ba565b80516001600160a01b031660009081526003602052604081205490819003610524576004805460018181018355600092909252835160039091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810180546001600160a01b039093166001600160a01b031990931692909217825560208501517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c82015560408501517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d9091018054869460ff199091169083818111156104fb576104fb61115f565b02179055505060045483516001600160a01b0316600090815260036020526040902055506105ae565b61052d8161156e565b9050816004828154811061054357610543611542565b600091825260209182902083516003929092020180546001600160a01b0319166001600160a01b039092169190911781559082015160018083019190915560408301516002830180549192909160ff19169083818111156105a6576105a661115f565b021790555050505b7f35cf0ed869165a43444185b5768c9d223379438ca00add4ec553b761d79671488260000151836020015184604001516040516105ed93929190611585565b60405180910390a1505080610601906115b3565b9050610343565b505050565b600061061882610deb565b6080015160018111156102dc576102dc61115f565b60006102ed82610f1f565b61064061101e565b61064a6000611078565b565b60045460609083111561069b5760405162461bcd60e51b815260206004820152601760248201527615da1a5d195b1a5cdd0e881ddc9bdb99c81bd9999cd95d604a1b60448201526064016103ba565b6004546106b1906106ac85856115cc565b6110c8565b915060006106bf84846115df565b67ffffffffffffffff8111156106d7576106d7611223565b60405190808252806020026020018201604052801561072957816020015b61071660408051606081018252600080825260208201819052909182015290565b8152602001906001900390816106f55790505b509050835b838110156107e3576004818154811061074957610749611542565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168352600180820154948401949094526002810154929390929184019160ff16908111156107a0576107a061115f565b60018111156107b1576107b161115f565b815250508282815181106107c7576107c7611542565b6020026020010181905250806107dc906115b3565b905061072e565b509392505050565b60025460609083111561083a5760405162461bcd60e51b815260206004820152601760248201527615da1a5d195b1a5cdd0e881ddc9bdb99c81bd9999cd95d604a1b60448201526064016103ba565b60025461084b906106ac85856115cc565b9150600061085984846115df565b67ffffffffffffffff81111561087157610871611223565b6040519080825280602002602001820160405280156108aa57816020015b6108976110e0565b81526020019060019003908161088f5790505b509050835b838110156107e357600281815481106108ca576108ca611542565b90600052602060002090600502016040518060a00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660018111156109545761095461115f565b60018111156109655761096561115f565b8152505082828151811061097b5761097b611542565b602002602001018190525080610990906115b3565b90506108af565b60006109a282610f1f565b6040015160018111156102dc576102dc61115f565b60008060006109c584610deb565b9050806020015181604001519250925050915091565b6109e361101e565b6001600160a01b038116610a485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ba565b610a5181611078565b50565b610a5c61101e565b805160005b81811015610608576000838281518110610a7d57610a7d611542565b602090810291909101015180519091506001600160a01b0316610adc5760405162461bcd60e51b815260206004820152601760248201527657686974656c6973743a207a65726f206164647265737360481b60448201526064016103ba565b806020015181604001511015610b345760405162461bcd60e51b815260206004820152601860248201527f57686974656c6973743a206d696e206d61782077726f6e67000000000000000060448201526064016103ba565b61271081606001511115610b825760405162461bcd60e51b815260206004820152601560248201527457686974656c6973743a20666565203e203130302560581b60448201526064016103ba565b80516001600160a01b031660009081526001602052604081205490819003610ce7576002805460018181018355600092909252835160059091027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace810180546001600160a01b039093166001600160a01b031990931692909217825560208501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf82015560408501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad082015560608501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad182015560808501517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad29091018054869460ff19909116908381811115610cbe57610cbe61115f565b02179055505060025483516001600160a01b031660009081526001602052604090205550610d85565b610cf08161156e565b90508160028281548110610d0657610d06611542565b600091825260209182902083516005929092020180546001600160a01b0319166001600160a01b0390921691909117815590820151600180830191909155604083015160028301556060830151600383015560808301516004830180549192909160ff1916908381811115610d7d57610d7d61115f565b021790555050505b7f0d7b343ecd56f9990d6289234e875fec1546a589555b41e8c68d1b0bce612b6582600001518360400151846020015185606001518660800151604051610dd09594939291906115f2565b60405180910390a1505080610de4906115b3565b9050610a61565b610df36110e0565b6001600160a01b03821660009081526001602052604081205490819003610e5c5760405162461bcd60e51b815260206004820152601860248201527f57686974656c6973743a20746f6b656e206e6f7420736574000000000000000060448201526064016103ba565b610e658161156e565b905060028181548110610e7a57610e7a611542565b90600052602060002090600502016040518060a00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff166001811115610f0457610f0461115f565b6001811115610f1557610f1561115f565b9052509392505050565b610f4060408051606081018252600080825260208201819052909182015290565b6001600160a01b03821660009081526003602052604081205490819003610fa95760405162461bcd60e51b815260206004820152601760248201527f57686974656c6973743a20706f6f6c206e6f742073657400000000000000000060448201526064016103ba565b610fb28161156e565b905060048181548110610fc757610fc7611542565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168352600180820154948401949094526002810154929390929184019160ff1690811115610f0457610f0461115f565b6000546001600160a01b0316331461064a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ba565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183106110d757816110d9565b825b9392505050565b6040518060a0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600060018111156111235761112361115f565b905290565b80356001600160a01b038116811461113f57600080fd5b919050565b60006020828403121561115657600080fd5b6110d982611128565b634e487b7160e01b600052602160045260246000fd5b60028110610a5157634e487b7160e01b600052602160045260246000fd5b80516001600160a01b0316825260208082015190830152604080820151908301526060808201519083015260808101516111cc81611175565b806080840152505050565b60a081016102dc8284611193565b80516001600160a01b0316825260208082015190830152604081015161120a81611175565b806040840152505050565b606081016102dc82846111e5565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561125c5761125c611223565b60405290565b60405160a0810167ffffffffffffffff8111828210171561125c5761125c611223565b604051601f8201601f1916810167ffffffffffffffff811182821017156112ae576112ae611223565b604052919050565b600067ffffffffffffffff8211156112d0576112d0611223565b5060051b60200190565b60028110610a5157600080fd5b600060208083850312156112fa57600080fd5b823567ffffffffffffffff81111561131157600080fd5b8301601f8101851361132257600080fd5b8035611335611330826112b6565b611285565b8181526060918202830184019184820191908884111561135457600080fd5b938501935b838510156113ae5780858a0312156113715760008081fd5b611379611239565b61138286611128565b8152868601358782015260408087013561139b816112da565b9082015283529384019391850191611359565b50979650505050505050565b600080604083850312156113cd57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b8181101561141e5761140b8385516111e5565b92840192606092909201916001016113f8565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561141e57611459838551611193565b9284019260a09290920191600101611446565b6000602080838503121561147f57600080fd5b823567ffffffffffffffff81111561149657600080fd5b8301601f810185136114a757600080fd5b80356114b5611330826112b6565b81815260a091820283018401918482019190888411156114d457600080fd5b938501935b838510156113ae5780858a0312156114f15760008081fd5b6114f9611262565b61150286611128565b81528587013587820152604080870135908201526060808701359082015260808087013561152f816112da565b90820152835293840193918501916114d9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008161157d5761157d611558565b506000190190565b6001600160a01b038416815260208101839052606081016115a583611175565b826040830152949350505050565b6000600182016115c5576115c5611558565b5060010190565b808201808211156102dc576102dc611558565b818103818111156102dc576102dc611558565b6001600160a01b038616815260208101859052604081018490526060810183905260a0810161162083611175565b826080830152969550505050505056fea264697066735822122023f093f58cb267d7e8a60c3716b85fae8bb81639924e3a300d78a646c3a722ef64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.