Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 23 from a total of 23 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Pool Profile | 24303953 | 37 days ago | IN | 0 ETH | 0.000006 | ||||
| Set Pool Profile | 24303935 | 37 days ago | IN | 0 ETH | 0.00000455 | ||||
| Set Pool Profile | 24303905 | 37 days ago | IN | 0 ETH | 0.00000455 | ||||
| Set Pool Profile | 24303892 | 37 days ago | IN | 0 ETH | 0.00000374 | ||||
| Set Pool Profile | 24303886 | 37 days ago | IN | 0 ETH | 0.00000473 | ||||
| Set Pool Profile | 24303882 | 37 days ago | IN | 0 ETH | 0.00000479 | ||||
| Set Pool Profile | 24303875 | 37 days ago | IN | 0 ETH | 0.00000439 | ||||
| Set Pool Profile | 24303848 | 37 days ago | IN | 0 ETH | 0.00000432 | ||||
| Set Pool Profile | 24303839 | 37 days ago | IN | 0 ETH | 0.00000158 | ||||
| Set Pool Profile | 24303833 | 37 days ago | IN | 0 ETH | 0.00000424 | ||||
| Set Pool Profile | 24303829 | 37 days ago | IN | 0 ETH | 0.00000268 | ||||
| Set Pool Profile | 24303822 | 37 days ago | IN | 0 ETH | 0.00000337 | ||||
| Set Pool Profile | 24303794 | 37 days ago | IN | 0 ETH | 0.00000273 | ||||
| Set Pool Profile | 24303735 | 37 days ago | IN | 0 ETH | 0.00000283 | ||||
| Set Pool Profile | 24303093 | 38 days ago | IN | 0 ETH | 0.00000324 | ||||
| Set Pool Profile | 24303023 | 38 days ago | IN | 0 ETH | 0.00000358 | ||||
| Set Pool Profile | 24303011 | 38 days ago | IN | 0 ETH | 0.00000383 | ||||
| Set Pool Profile | 24303006 | 38 days ago | IN | 0 ETH | 0.00000341 | ||||
| Set Pool Profile | 24302994 | 38 days ago | IN | 0 ETH | 0.00000295 | ||||
| Set Pool Profile | 24302989 | 38 days ago | IN | 0 ETH | 0.0000028 | ||||
| Set Pool Profile | 24302921 | 38 days ago | IN | 0 ETH | 0.00000291 | ||||
| Set Pool Profile | 24302916 | 38 days ago | IN | 0 ETH | 0.00000261 | ||||
| Set Pool Profile | 24302890 | 38 days ago | IN | 0 ETH | 0.00000249 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CurvePoolRegistry
Compiler Version
v0.8.33+commit.64118f21
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.33;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
/**
*⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*⠀⠀⠀⠀⠈⢻⣿⠛⠻⢷⣄⠀⠀ ⣴⡟⠛⠛⣷⠀ ⠘⣿⡿⠛⠛⢿⡇⠀⠀⠀⠀
*⠀⠀⠀⠀⠀⢸⣿⠀⠀ ⠈⣿⡄⠀⠿⣧⣄⡀ ⠉⠀⠀ ⣿⣧⣀⣀⡀⠀⠀⠀⠀⠀
*⠀⠀⠀⠀⠀⢸⣿⠀⠀ ⢀⣿⠃ ⣀ ⠈⠉⠻⣷⡄⠀ ⣿⡟⠉⠉⠁⠀⠀⠀⠀⠀
*⠀⠀⠀⠀⢠⣼⣿⣤⣴⠿⠋⠀ ⠀⢿⣦⣤⣴⡿⠁ ⢠⣿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*
* - Defining Successful Future -
*
* @title CurvePoolRegistry
* @author Andrei Averin — CTO dsf.finance
* @notice Centralized, owner-controlled registry for whitelisting safe and verified Curve pools.
* @dev
* - Intended to be consumed by aggregator modules (e.g., CurveDexModule).
* - Stores:
* (1) Per-(tokenA, tokenB) allowlist of pools (strict routing allowlist).
* (2) Minimal per-pool call profile for `exchange(...)` (non-underlying branch).
* - Pair allowlist is keyed by `keccak256(sorted(tokenA, tokenB))`.
* - Admin (owner) can atomically set/clear allowlists and update per-pool profiles.
* - The profile exposes three booleans:
* `exIndexUint` : true => `exchange(uint256,uint256,...)`, false => `exchange(int128,int128,...)`
* `exHasEthFlag` : true => non-underlying `exchange(..., bool use_eth)` (5-arg/6-arg forms)
* `exHasReceiver` : true => presence of receiver overloads `exchange(..., address)` / `exchange(..., bool, address)`
* `exHasReceiverUnderlying` : true => underlying receiver overloads exist
* - The registry also provides view-only probe helpers to heuristically detect a profile off-chain.
*/
/**
* @title IPoolRegistry
* @notice Interface for accessing whitelisted pools and their call profiles.
*/
interface IPoolRegistry {
/**
* @notice Minimal call profile for non-underlying `exchange(...)`.
* @dev
* - `exIndexUint` selects indices type: uint256 vs int128.
* - `exHasEthFlag` indicates existence of a trailing `bool use_eth` argument in non-underlying exchange.
* - `exHasReceiver` indicates presence of receiver overloads (`..., address)` or `(..., bool, address)`.
* - `exHasReceiverUnderlying` covers `exchange_underlying(..., address)`/`(..., bool, address)` presence.
*/
struct PoolProfile {
// exchange signatures (non-underlying branch)
bool exIndexUint; // true: exchange(uint256,uint256,...) ; false: exchange(int128,int128,...)
bool exHasEthFlag; // true: non-underlying exchange has trailing `bool use_eth`
bool exHasReceiver; // true: non-underlying exchange has overloads with `address receiver`
bool exHasReceiverUnderlying; // underlying: has receiver overloads
}
/**
* @notice Get allowlisted pools for a (tokenA, tokenB) pair.
* @param tokenA First token.
* @param tokenB Second token.
* @return Array of allowlisted pool addresses under the canonical pair key.
*/
function getVerifiedPools(address tokenA, address tokenB) external view returns (address[] memory);
/**
* @notice Get a saved profile for a pool.
* @param pool Pool address.
* @return exists True if a profile is set in the registry.
* @return profile The stored PoolProfile ({exIndexUint, exHasEthFlag, exHasReceiver}).
*/
function getPoolProfile(address pool) external view returns (bool exists, PoolProfile memory profile);
/**
* @notice Returns stored profile flags for a pool as separate booleans (gas-cheaper in some cases).
* @param pool Pool address.
* @return exists True if an explicit profile exists.
* @return exIndexUint See `PoolProfile.exIndexUint`.
* @return exHasEthFlag See `PoolProfile.exHasEthFlag`.
* @return exHasReceiver See `PoolProfile.exHasReceiver`.
* @return exHasReceiverUnderlying See `PoolProfile.exHasReceiverUnderlying`.
*/
function getPoolProfileFlags(address pool)
external
view
returns (
bool exists,
bool exIndexUint,
bool exHasEthFlag,
bool exHasReceiver,
bool exHasReceiverUnderlying
);
}
/**
* @title CurvePoolRegistry
* @notice Stores and manages the list of officially verified Curve pools for specific token pairs.
* @dev Owner is the only actor allowed to mutate storage (allowlists and profiles).
*/
contract CurvePoolRegistry is Ownable, IPoolRegistry {
// events
event VerifiedPoolsSet(bytes32 indexed pairKey, address tokenA, address tokenB, address[] pools);
event VerifiedPoolsCleared(bytes32 indexed pairKey, address tokenA, address tokenB);
event PoolProfileSet(
address indexed pool,
bool exIndexUint,
bool exHasEthFlag,
bool exHasReceiver,
bool exHasReceiverUnderlying
);
event PoolProfileCleared(address indexed pool);
event DefaultProfileSet(PoolProfile profile);
// probe constants
uint256 private constant DX = 1;
uint256 private constant MIN = 0;
// selectors
// coins(...)
bytes4 private constant COINS_U256 = bytes4(keccak256("coins(uint256)"));
bytes4 private constant COINS_I128 = bytes4(keccak256("coins(int128)"));
// non-underlying exchange base
bytes4 private constant EX_U256_ETH = bytes4(keccak256("exchange(uint256,uint256,uint256,uint256,bool)"));
bytes4 private constant EX_U256 = bytes4(keccak256("exchange(uint256,uint256,uint256,uint256)"));
bytes4 private constant EX_I128_ETH = bytes4(keccak256("exchange(int128,int128,uint256,uint256,bool)"));
bytes4 private constant EX_I128 = bytes4(keccak256("exchange(int128,int128,uint256,uint256)"));
// non-underlying exchange with receiver
bytes4 private constant EX_U256_RCV = bytes4(keccak256("exchange(uint256,uint256,uint256,uint256,address)"));
bytes4 private constant EX_U256_ETH_RCV = bytes4(keccak256("exchange(uint256,uint256,uint256,uint256,bool,address)"));
bytes4 private constant EX_I128_RCV = bytes4(keccak256("exchange(int128,int128,uint256,uint256,address)"));
// key: keccak256(sorted(tokenA, tokenB)) => allowlisted pools
mapping(bytes32 => address[]) public verifiedPools;
// per-pool profile
mapping(address => bool) internal exIndexUintOf; // true => exchange(uint256,...)
mapping(address => bool) internal exHasEthFlagOf; // true => has trailing `bool use_eth`
mapping(address => bool) internal exHasReceiverOf; // true => has overloads with `address receiver`
mapping(address => bool) internal exHasReceiverUnderlyingOf;
mapping(address => bool) internal hasProfile;
PoolProfile private _defaultProfile = PoolProfile({
exIndexUint: true,
exHasEthFlag: true,
exHasReceiver: false,
exHasReceiverUnderlying: false
});
constructor() Ownable(msg.sender) {}
/**
* @inheritdoc IPoolRegistry
*/
function getVerifiedPools(address tokenA, address tokenB)
external
view
override
returns (address[] memory)
{
return verifiedPools[_pairKey(tokenA, tokenB)];
}
/**
* @inheritdoc IPoolRegistry
*/
function getPoolProfile(address pool)
external
view
override
returns (bool exists, PoolProfile memory profile)
{
if (hasProfile[pool]) {
profile = PoolProfile({
exIndexUint: exIndexUintOf[pool],
exHasEthFlag: exHasEthFlagOf[pool],
exHasReceiver: exHasReceiverOf[pool],
exHasReceiverUnderlying: exHasReceiverUnderlyingOf[pool]
});
return (true, profile);
}
return (false, _defaultProfile);
}
/**
* @inheritdoc IPoolRegistry
*/
function getPoolProfileFlags(address pool)
external
view
override
returns (
bool exists,
bool exIndexUint,
bool exHasEthFlag,
bool exHasReceiver,
bool exHasReceiverUnderlying
)
{
if (hasProfile[pool]) {
return (
true,
exIndexUintOf[pool],
exHasEthFlagOf[pool],
exHasReceiverOf[pool],
exHasReceiverUnderlyingOf[pool]
);
}
IPoolRegistry.PoolProfile memory p = _defaultProfile;
return (false, p.exIndexUint, p.exHasEthFlag, p.exHasReceiver, p.exHasReceiverUnderlying);
}
/**
* @notice Returns the current default profile that is used when a pool has no explicit profile.
* @return profile The default `PoolProfile`.
*/
function getDefaultProfile() external view returns (PoolProfile memory) {
return _defaultProfile;
}
/**
* @notice Add/replace the allowlist of pools for a (tokenA, tokenB) pair.
* @dev Replaces the full list atomically.
* @param tokenA First token
* @param tokenB Second token
* @param pools New full list of allowlisted pools (non-empty)
*/
function setVerifiedPools(address tokenA, address tokenB, address[] calldata pools)
external
onlyOwner
{
require(pools.length > 0, "Registry: empty list");
bytes32 key = _pairKey(tokenA, tokenB);
verifiedPools[key] = pools;
emit VerifiedPoolsSet(key, tokenA, tokenB, pools);
}
/**
* @notice Clear the allowlist for a (tokenA, tokenB) pair.
* @param tokenA First token
* @param tokenB Second token
*/
function clearVerifiedPools(address tokenA, address tokenB)
external
onlyOwner
{
bytes32 key = _pairKey(tokenA, tokenB);
delete verifiedPools[key];
emit VerifiedPoolsCleared(key, tokenA, tokenB);
}
/**
* @notice Set/update a pool profile (three flags).
* @param pool Pool address (non-zero)
* @param exIndexUint true => `exchange(uint256,...)`; false => `exchange(int128,...)`
* @param exHasEthFlag true => non-underlying has trailing `bool use_eth`
* @param exHasReceiver true => receiver overloads exist (`..., address)` / `(..., bool, address)`
* @param exHasReceiverUnderlying true => underlying receiver overloads exist
*/
function setPoolProfile(
address pool,
bool exIndexUint,
bool exHasEthFlag,
bool exHasReceiver,
bool exHasReceiverUnderlying
)
external
onlyOwner
{
require(pool != address(0), "Registry: zero pool");
exIndexUintOf[pool] = exIndexUint;
exHasEthFlagOf[pool] = exHasEthFlag;
exHasReceiverOf[pool] = exHasReceiver;
exHasReceiverUnderlyingOf[pool] = exHasReceiverUnderlying;
hasProfile[pool] = true;
emit PoolProfileSet(pool, exIndexUint, exHasEthFlag, exHasReceiver, exHasReceiverUnderlying);
}
/**
* @notice Batch set/update pool profiles (arrays must be aligned).
* @param pools Pool addresses
* @param exIndexUint Flags for indices type per pool
* @param exHasEthFlag Flags for `use_eth` presence per pool
* @param exHasReceiver Flags for receiver overloads per pool
* @param exHasReceiverUnderlying Flags for presence of receiver overloads per pool (underlying).
*/
function setPoolProfiles(
address[] calldata pools,
bool[] calldata exIndexUint,
bool[] calldata exHasEthFlag,
bool[] calldata exHasReceiver,
bool[] calldata exHasReceiverUnderlying
)
external
onlyOwner
{
uint256 n = pools.length;
require(n > 0, "Registry: empty arrays");
require(
exIndexUint.length == n &&
exHasEthFlag.length == n &&
exHasReceiver.length == n &&
exHasReceiverUnderlying.length == n,
"Registry: bad arrays"
);
for (uint256 i; i < n; ++i) {
address pool = pools[i];
require(pool != address(0), "Registry: zero pool");
exIndexUintOf[pool] = exIndexUint[i];
exHasEthFlagOf[pool] = exHasEthFlag[i];
exHasReceiverOf[pool] = exHasReceiver[i];
exHasReceiverUnderlyingOf[pool] = exHasReceiverUnderlying[i];
hasProfile[pool] = true;
emit PoolProfileSet(pool, exIndexUint[i], exHasEthFlag[i], exHasReceiver[i], exHasReceiverUnderlying[i]);
}
}
/**
* @notice Delete a saved profile for a pool.
* @dev After deletion, calling modules may fall back to defaults or skip routing.
* @param pool Pool address
*/
function clearPoolProfile(address pool) external onlyOwner {
delete exIndexUintOf[pool];
delete exHasEthFlagOf[pool];
delete exHasReceiverOf[pool];
delete exHasReceiverUnderlyingOf[pool]; // NEW
delete hasProfile[pool];
emit PoolProfileCleared(pool);
}
/**
* @notice Sets the global default profile returned when a pool lacks an explicit profile.
* @dev Emits {DefaultProfileSet}. Parameter order matches {setPoolProfile} to reduce misconfiguration risk.
* @param exIndexUint true => `exchange(uint256,...)`; false => `exchange(int128,...)`
* @param exHasEthFlag true => non-underlying has trailing `bool use_eth`
* @param exHasReceiver true => non-underlying receiver overloads exist
* @param exHasReceiverUnderlying true => underlying receiver overloads exist
*/
function setDefaultProfile(
bool exIndexUint,
bool exHasEthFlag,
bool exHasReceiver,
bool exHasReceiverUnderlying
) external onlyOwner {
_defaultProfile = PoolProfile({
exIndexUint: exIndexUint,
exHasEthFlag: exHasEthFlag,
exHasReceiver: exHasReceiver,
exHasReceiverUnderlying: exHasReceiverUnderlying
});
emit DefaultProfileSet(_defaultProfile);
}
/**
* @notice Directional pair key (order-dependent).
* @dev tokenIn -> tokenOut matters:
* key(a,b) != key(b,a)
* @param a Token address
* @param b Token address
* @return Pair key `keccak256(a, b)`
*/
function _pairKey(address a, address b) internal pure returns (bytes32) {
return keccak256(abi.encodePacked(a, b));
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../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.
*
* The initial owner is set to the address provided by the deployer. 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;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @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 {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling 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 {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_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 (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"optimizer": {
"enabled": true,
"runs": 20
},
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bool","name":"exIndexUint","type":"bool"},{"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"internalType":"bool","name":"exHasReceiver","type":"bool"},{"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"indexed":false,"internalType":"struct IPoolRegistry.PoolProfile","name":"profile","type":"tuple"}],"name":"DefaultProfileSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolProfileCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"exIndexUint","type":"bool"},{"indexed":false,"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"indexed":false,"internalType":"bool","name":"exHasReceiver","type":"bool"},{"indexed":false,"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"name":"PoolProfileSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"pairKey","type":"bytes32"},{"indexed":false,"internalType":"address","name":"tokenA","type":"address"},{"indexed":false,"internalType":"address","name":"tokenB","type":"address"}],"name":"VerifiedPoolsCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"pairKey","type":"bytes32"},{"indexed":false,"internalType":"address","name":"tokenA","type":"address"},{"indexed":false,"internalType":"address","name":"tokenB","type":"address"},{"indexed":false,"internalType":"address[]","name":"pools","type":"address[]"}],"name":"VerifiedPoolsSet","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"clearPoolProfile","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"clearVerifiedPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDefaultProfile","outputs":[{"components":[{"internalType":"bool","name":"exIndexUint","type":"bool"},{"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"internalType":"bool","name":"exHasReceiver","type":"bool"},{"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"internalType":"struct IPoolRegistry.PoolProfile","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProfile","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"components":[{"internalType":"bool","name":"exIndexUint","type":"bool"},{"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"internalType":"bool","name":"exHasReceiver","type":"bool"},{"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"internalType":"struct IPoolRegistry.PoolProfile","name":"profile","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProfileFlags","outputs":[{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"bool","name":"exIndexUint","type":"bool"},{"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"internalType":"bool","name":"exHasReceiver","type":"bool"},{"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getVerifiedPools","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"exIndexUint","type":"bool"},{"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"internalType":"bool","name":"exHasReceiver","type":"bool"},{"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"name":"setDefaultProfile","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"exIndexUint","type":"bool"},{"internalType":"bool","name":"exHasEthFlag","type":"bool"},{"internalType":"bool","name":"exHasReceiver","type":"bool"},{"internalType":"bool","name":"exHasReceiverUnderlying","type":"bool"}],"name":"setPoolProfile","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"bool[]","name":"exIndexUint","type":"bool[]"},{"internalType":"bool[]","name":"exHasEthFlag","type":"bool[]"},{"internalType":"bool[]","name":"exHasReceiver","type":"bool[]"},{"internalType":"bool[]","name":"exHasReceiverUnderlying","type":"bool[]"}],"name":"setPoolProfiles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"setVerifiedPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"verifiedPools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60803460cb57331560b8575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3608081016001600160401b0381118282101760a4575f916060916040526001815260016020820152826040820152015263ff0000001961010162ffffff19600754161716600755604051610f6c90816100d08239f35b634e487b7160e01b5f52604160045260245ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe60a06040526004361015610011575f80fd5b5f3560e01c806319e803c0146109965780631b920507146109665780631ea946b4146108985780632f673c4d146105a4578063434c91e3146104a2578063715018a61461045e5780638da5cb5b146104375780639630f1dd146103ea578063bb62a944146102fe578063d0cd2f93146102b4578063e2bffd2b14610214578063ef136bfc146101d7578063f2fde38b146101655763f3be488e146100b3575f80fd5b34610161576040366003190112610161576100cc610b5e565b6100d4610b74565b906100dd610e95565b6100e78282610ebb565b91825f52600160205260405f208054905f81558161013f575b604080516001600160a01b0380871682528516602082015286917f731c0ee5887b58bc0e2319a2e2ef976da93bd72a73067208a6bdc3f29f9ab47291a2005b5f5260205f205f5b8281106101545750610100565b5f82820155600101610147565b5f80fd5b346101615760203660031901126101615761017e610b5e565b610186610e95565b6001600160a01b031680156101c4575f80546001600160a01b03198116831782556001600160a01b0316905f516020610f175f395f51905f529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346101615760203660031901126101615760a06102126101fd6101f8610b5e565b610dfb565b60409291925192151583526020830190610bba565bf35b346101615760203660031901126101615761022d610b5e565b610235610e95565b6001600160a01b03165f818152600260209081526040808320805460ff1990811690915560038352818420805482169055600483528184208054821690556005835281842080548216905560069092528220805490911690557fea746679c6ad45960c4c036f97446756abcd86f8985d6e83cfa3085f253507a59080a2005b34610161576040366003190112610161576024356004355f52600160205260405f20908154811015610161575f91825260209182902001546040516001600160a01b039091168152f35b346101615760a036600319011261016157610317610b5e565b61031f610be5565b90610328610bf4565b610330610c03565b92608435928315158403610161575f516020610ef75f395f51905f52936103e591610359610e95565b6001600160a01b03169561036e871515610ceb565b865f5260026020526103838460405f20610d3a565b865f5260036020526103988560405f20610d3a565b865f5260046020526103ad8160405f20610d3a565b865f5260056020526103c28260405f20610d3a565b865f52600660205260405f20600160ff1982541617905560405194859485610d4b565b0390a2005b346101615760203660031901126101615760a061040d610408610b5e565b610d6e565b92604092919251941515855215156020850152151560408401521515606083015215156080820152f35b34610161575f366003190112610161575f546040516001600160a01b039091168152602090f35b34610161575f36600319011261016157610476610e95565b5f80546001600160a01b0319811682556001600160a01b03165f516020610f175f395f51905f528280a3005b346101615760803660031901126101615760043580151580910361016157608063ff00000060ff7f48409c1a16bd76b982cabba3909885fc5614732ee14d68eda9086a1dd66cd87e93606062ff00006104f9610be5565b92610502610bf4565b9061050b610c03565b94610514610e95565b6040519061052182610c26565b828252151592836020830152151595866040830152151594859101528580196007541691161760075561ff006007549160081b169063ffffff0019161794859260181b169260101b161717806007558160405193165f1715158352818160081c1615156020840152818160101c161515604084015260181c1615156060820152a1005b346101615760a0366003190112610161576004356001600160401b038111610161576105d4903690600401610b8a565b6024356001600160401b038111610161576105f3903690600401610b8a565b9190926044356001600160401b03811161016157610615903690600401610b8a565b9290916064356001600160401b03811161016157610637903690600401610b8a565b956084356001600160401b03811161016157610657903690600401610b8a565b959094610662610e95565b801561085a5780831480610851575b80610848575b8061083f575b15610803575f5b81811061068d57005b6001600160a01b036106a0828489610cc7565b6106a990610c12565b1660805260805115156106bb90610ceb565b6106c681858d610cc7565b6106cf90610d2d565b6080515f52600260205260405f20906106e791610d3a565b6106f2818a85610cc7565b6106fb90610d2d565b6080515f52600360205260405f209061071391610d3a565b61071e818b87610cc7565b61072790610d2d565b6080515f52600460205260405f209061073f91610d3a565b61074a818989610cc7565b61075390610d2d565b6080515f52600560205260405f209061076b91610d3a565b6080515f52600660205260405f2060ff19815416600117905561078f81858d610cc7565b61079890610d2d565b6107a3828b86610cc7565b6107ac90610d2d565b906107b8838d89610cc7565b6107c190610d2d565b6107cc848c8c610cc7565b6107d590610d2d565b91604051928392608051956107ea9385610d4b565b035f516020610ef75f395f51905f5291a2600101610684565b60405162461bcd60e51b815260206004820152601460248201527352656769737472793a206261642061727261797360601b6044820152606490fd5b5080871461067d565b50808914610677565b50808814610671565b60405162461bcd60e51b815260206004820152601660248201527552656769737472793a20656d7074792061727261797360501b6044820152606490fd5b34610161576040366003190112610161576108c26108b4610b5e565b6108bc610b74565b90610ebb565b5f52600160205260405f20604051806020835491828152019081935f5260205f20905f5b81811061094757505050816108fc910382610c41565b604051918291602083019060208452518091526040830191905f5b818110610925575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610917565b82546001600160a01b03168452602090930192600192830192016108e6565b34610161575f3660031901126101615761097e610c62565b506080610989610c86565b6102126040518092610bba565b34610161576060366003190112610161576109af610b5e565b6109b7610b74565b6044356001600160401b038111610161576109d6903690600401610b8a565b6109de610e95565b8015610b22576109ee8385610ebb565b93845f52600160205260405f206001600160401b038311610b0e57600160401b8311610b0e578054838255808410610ae4575b5090829184905f5260205f20905f5b848110610ac2575050604080516001600160a01b0393841681529690921660208701525060609085018190528401526080830191905f905b808210610a9857857f2816aeba324eef1136173fb42311b8f5841214856c197ceb10737afe6fe7fa6386860387a2005b90919283359060018060a01b03821680920361016157602081600193829352019401920190610a68565b81929394506020610ad4600193610c12565b8583015586959493019101610a30565b815f52838060205f20019103905f5b828110610b01575050610a21565b5f82820155600101610af3565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b8152602060048201526014602482015273149959da5cdd1c9e4e88195b5c1d1e481b1a5cdd60621b6044820152606490fd5b600435906001600160a01b038216820361016157565b602435906001600160a01b038216820361016157565b9181601f84011215610161578235916001600160401b038311610161576020808501948460051b01011161016157565b6060809180511515845260208101511515602085015260408101511515604085015201511515910152565b60243590811515820361016157565b60443590811515820361016157565b60643590811515820361016157565b356001600160a01b03811681036101615790565b608081019081106001600160401b03821117610b0e57604052565b90601f801991011681019081106001600160401b03821117610b0e57604052565b60405190610c6f82610c26565b5f6060838281528260208201528260408201520152565b60405190610c9382610c26565b81606060ff60075481811615158452818160081c1615156020850152818160101c161515604085015260181c161515910152565b9190811015610cd75760051b0190565b634e487b7160e01b5f52603260045260245ffd5b15610cf257565b60405162461bcd60e51b8152602060048201526013602482015272149959da5cdd1c9e4e881e995c9bc81c1bdbdb606a1b6044820152606490fd5b3580151581036101615790565b9060ff801983541691151516179055565b901515815290151560208201529015156040820152901515606082015260800190565b6001600160a01b03165f8181526006602052604090205460ff16610dba5750610d95610c86565b90815115159160208101511515916060604083015115159201511515905f9493929190565b5f90815260026020908152604080832054600383528184205460048452828520546005909452919093205460019460ff948516949283169383169290911690565b610e03610c62565b506001600160a01b03165f8181526006602052604090205460ff16610e3057505f90610e2d610c86565b90565b5f9081526002602090815260408083205460038352818420546004845282852054600590945293829020549151949360ff928316938316929081169116610e7686610c26565b1515855215156020850152151560408401521515606083015260019190565b5f546001600160a01b03163303610ea857565b63118cdaa760e01b5f523360045260245ffd5b6040516001600160601b0319606092831b8116602083019081529390921b909116603482015260288152610ef0604882610c41565b5190209056fe8209612c049af1b2a61980da61d80bab51ada3898004cac6a8c8d3eebccad3c48be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122091c93a21ce99ca60d50850f3ed1704d78f0fa9f8e86803c0f5a66c0f6100d93b64736f6c63430008210033
Deployed Bytecode
0x60a06040526004361015610011575f80fd5b5f3560e01c806319e803c0146109965780631b920507146109665780631ea946b4146108985780632f673c4d146105a4578063434c91e3146104a2578063715018a61461045e5780638da5cb5b146104375780639630f1dd146103ea578063bb62a944146102fe578063d0cd2f93146102b4578063e2bffd2b14610214578063ef136bfc146101d7578063f2fde38b146101655763f3be488e146100b3575f80fd5b34610161576040366003190112610161576100cc610b5e565b6100d4610b74565b906100dd610e95565b6100e78282610ebb565b91825f52600160205260405f208054905f81558161013f575b604080516001600160a01b0380871682528516602082015286917f731c0ee5887b58bc0e2319a2e2ef976da93bd72a73067208a6bdc3f29f9ab47291a2005b5f5260205f205f5b8281106101545750610100565b5f82820155600101610147565b5f80fd5b346101615760203660031901126101615761017e610b5e565b610186610e95565b6001600160a01b031680156101c4575f80546001600160a01b03198116831782556001600160a01b0316905f516020610f175f395f51905f529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346101615760203660031901126101615760a06102126101fd6101f8610b5e565b610dfb565b60409291925192151583526020830190610bba565bf35b346101615760203660031901126101615761022d610b5e565b610235610e95565b6001600160a01b03165f818152600260209081526040808320805460ff1990811690915560038352818420805482169055600483528184208054821690556005835281842080548216905560069092528220805490911690557fea746679c6ad45960c4c036f97446756abcd86f8985d6e83cfa3085f253507a59080a2005b34610161576040366003190112610161576024356004355f52600160205260405f20908154811015610161575f91825260209182902001546040516001600160a01b039091168152f35b346101615760a036600319011261016157610317610b5e565b61031f610be5565b90610328610bf4565b610330610c03565b92608435928315158403610161575f516020610ef75f395f51905f52936103e591610359610e95565b6001600160a01b03169561036e871515610ceb565b865f5260026020526103838460405f20610d3a565b865f5260036020526103988560405f20610d3a565b865f5260046020526103ad8160405f20610d3a565b865f5260056020526103c28260405f20610d3a565b865f52600660205260405f20600160ff1982541617905560405194859485610d4b565b0390a2005b346101615760203660031901126101615760a061040d610408610b5e565b610d6e565b92604092919251941515855215156020850152151560408401521515606083015215156080820152f35b34610161575f366003190112610161575f546040516001600160a01b039091168152602090f35b34610161575f36600319011261016157610476610e95565b5f80546001600160a01b0319811682556001600160a01b03165f516020610f175f395f51905f528280a3005b346101615760803660031901126101615760043580151580910361016157608063ff00000060ff7f48409c1a16bd76b982cabba3909885fc5614732ee14d68eda9086a1dd66cd87e93606062ff00006104f9610be5565b92610502610bf4565b9061050b610c03565b94610514610e95565b6040519061052182610c26565b828252151592836020830152151595866040830152151594859101528580196007541691161760075561ff006007549160081b169063ffffff0019161794859260181b169260101b161717806007558160405193165f1715158352818160081c1615156020840152818160101c161515604084015260181c1615156060820152a1005b346101615760a0366003190112610161576004356001600160401b038111610161576105d4903690600401610b8a565b6024356001600160401b038111610161576105f3903690600401610b8a565b9190926044356001600160401b03811161016157610615903690600401610b8a565b9290916064356001600160401b03811161016157610637903690600401610b8a565b956084356001600160401b03811161016157610657903690600401610b8a565b959094610662610e95565b801561085a5780831480610851575b80610848575b8061083f575b15610803575f5b81811061068d57005b6001600160a01b036106a0828489610cc7565b6106a990610c12565b1660805260805115156106bb90610ceb565b6106c681858d610cc7565b6106cf90610d2d565b6080515f52600260205260405f20906106e791610d3a565b6106f2818a85610cc7565b6106fb90610d2d565b6080515f52600360205260405f209061071391610d3a565b61071e818b87610cc7565b61072790610d2d565b6080515f52600460205260405f209061073f91610d3a565b61074a818989610cc7565b61075390610d2d565b6080515f52600560205260405f209061076b91610d3a565b6080515f52600660205260405f2060ff19815416600117905561078f81858d610cc7565b61079890610d2d565b6107a3828b86610cc7565b6107ac90610d2d565b906107b8838d89610cc7565b6107c190610d2d565b6107cc848c8c610cc7565b6107d590610d2d565b91604051928392608051956107ea9385610d4b565b035f516020610ef75f395f51905f5291a2600101610684565b60405162461bcd60e51b815260206004820152601460248201527352656769737472793a206261642061727261797360601b6044820152606490fd5b5080871461067d565b50808914610677565b50808814610671565b60405162461bcd60e51b815260206004820152601660248201527552656769737472793a20656d7074792061727261797360501b6044820152606490fd5b34610161576040366003190112610161576108c26108b4610b5e565b6108bc610b74565b90610ebb565b5f52600160205260405f20604051806020835491828152019081935f5260205f20905f5b81811061094757505050816108fc910382610c41565b604051918291602083019060208452518091526040830191905f5b818110610925575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610917565b82546001600160a01b03168452602090930192600192830192016108e6565b34610161575f3660031901126101615761097e610c62565b506080610989610c86565b6102126040518092610bba565b34610161576060366003190112610161576109af610b5e565b6109b7610b74565b6044356001600160401b038111610161576109d6903690600401610b8a565b6109de610e95565b8015610b22576109ee8385610ebb565b93845f52600160205260405f206001600160401b038311610b0e57600160401b8311610b0e578054838255808410610ae4575b5090829184905f5260205f20905f5b848110610ac2575050604080516001600160a01b0393841681529690921660208701525060609085018190528401526080830191905f905b808210610a9857857f2816aeba324eef1136173fb42311b8f5841214856c197ceb10737afe6fe7fa6386860387a2005b90919283359060018060a01b03821680920361016157602081600193829352019401920190610a68565b81929394506020610ad4600193610c12565b8583015586959493019101610a30565b815f52838060205f20019103905f5b828110610b01575050610a21565b5f82820155600101610af3565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b8152602060048201526014602482015273149959da5cdd1c9e4e88195b5c1d1e481b1a5cdd60621b6044820152606490fd5b600435906001600160a01b038216820361016157565b602435906001600160a01b038216820361016157565b9181601f84011215610161578235916001600160401b038311610161576020808501948460051b01011161016157565b6060809180511515845260208101511515602085015260408101511515604085015201511515910152565b60243590811515820361016157565b60443590811515820361016157565b60643590811515820361016157565b356001600160a01b03811681036101615790565b608081019081106001600160401b03821117610b0e57604052565b90601f801991011681019081106001600160401b03821117610b0e57604052565b60405190610c6f82610c26565b5f6060838281528260208201528260408201520152565b60405190610c9382610c26565b81606060ff60075481811615158452818160081c1615156020850152818160101c161515604085015260181c161515910152565b9190811015610cd75760051b0190565b634e487b7160e01b5f52603260045260245ffd5b15610cf257565b60405162461bcd60e51b8152602060048201526013602482015272149959da5cdd1c9e4e881e995c9bc81c1bdbdb606a1b6044820152606490fd5b3580151581036101615790565b9060ff801983541691151516179055565b901515815290151560208201529015156040820152901515606082015260800190565b6001600160a01b03165f8181526006602052604090205460ff16610dba5750610d95610c86565b90815115159160208101511515916060604083015115159201511515905f9493929190565b5f90815260026020908152604080832054600383528184205460048452828520546005909452919093205460019460ff948516949283169383169290911690565b610e03610c62565b506001600160a01b03165f8181526006602052604090205460ff16610e3057505f90610e2d610c86565b90565b5f9081526002602090815260408083205460038352818420546004845282852054600590945293829020549151949360ff928316938316929081169116610e7686610c26565b1515855215156020850152151560408401521515606083015260019190565b5f546001600160a01b03163303610ea857565b63118cdaa760e01b5f523360045260245ffd5b6040516001600160601b0319606092831b8116602083019081529390921b909116603482015260288152610ef0604882610c41565b5190209056fe8209612c049af1b2a61980da61d80bab51ada3898004cac6a8c8d3eebccad3c48be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122091c93a21ce99ca60d50850f3ed1704d78f0fa9f8e86803c0f5a66c0f6100d93b64736f6c63430008210033
Deployed Bytecode Sourcemap
5051:10608:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;:::i;:::-;;;:::i;:::-;1500:62:0;;;:::i;:::-;10576:24:2;;;;:::i;:::-;5051:10608;;;;10618:13;5051:10608;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;;;10652:41;;;5051:10608;;;;;;;;;;;;;;;;;;;;;;;10618:13;5051:10608;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;-1:-1:-1;;;;;5051:10608:2;2627:22:0;;2623:91;;5051:10608:2;;;-1:-1:-1;;;;;;5051:10608:2;;;;;;-1:-1:-1;;;;;5051:10608:2;;-1:-1:-1;;;;;;;;;;;3052:40:0;5051:10608:2;3052:40:0;5051:10608:2;2623:91:0;2672:31;;;5051:10608:2;2672:31:0;5051:10608:2;;;;;2672:31:0;5051:10608:2;;;;;;-1:-1:-1;;5051:10608:2;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;-1:-1:-1;;;;;5051:10608:2;;;;;13922:13;5051:10608;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14036:25;5051:10608;;;;;;;;;;;14092:10;5051:10608;;;;;;;;;;;;14124:24;;5051:10608;14124:24;5051:10608;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;;;;;;;;;;;;;;6905:50;;;;;5051:10608;;;;;;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1500:62:0;11842:87:2;1500:62:0;;;:::i;:::-;-1:-1:-1;;;;;5051:10608:2;;11478:50;11486:18;;;11478:50;:::i;:::-;5051:10608;;;11539:13;5051:10608;;11539:47;5051:10608;;;;11539:47;:::i;:::-;5051:10608;;;11597:14;5051:10608;;11597:48;5051:10608;;;;11597:48;:::i;:::-;5051:10608;;;;;;11656:49;5051:10608;;;;11656:49;:::i;:::-;5051:10608;;;11716:25;5051:10608;;11716:59;5051:10608;;;;11716:59;:::i;:::-;5051:10608;;;11786:10;5051:10608;;;;;11822:4;5051:10608;;;;;;;;;;11842:87;;;;;:::i;:::-;;;;5051:10608;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;1500:62:0;;:::i;:::-;5051:10608:2;;;-1:-1:-1;;;;;;5051:10608:2;;;;-1:-1:-1;;;;;5051:10608:2;-1:-1:-1;;;;;;;;;;;5051:10608:2;;3052:40:0;5051:10608:2;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;;;;;;;;;;;;15206:34;5051:10608;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;1500:62:0;;;:::i;:::-;5051:10608:2;;;;;;:::i;:::-;;;;;;14980:210;;5051:10608;14980:210;;5051:10608;;;14980:210;;5051:10608;14980:210;;5051:10608;;;14980:210;;;;5051:10608;;;;14962:228;5051:10608;;;;;14962:228;5051:10608;;14962:228;5051:10608;;;;;;;;;;;;;;;;;;;;;;;14962:228;5051:10608;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15206:34;5051:10608;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;:::i;:::-;1500:62:0;;;;;:::i;:::-;12770:5:2;;5051:10608;;12835:23;;;:64;;;5051:10608;12835:106;;;5051:10608;12835:158;;;5051:10608;;;;;13070:5;;;;;;5051:10608;13077:3;-1:-1:-1;;;;;13112:8:2;;;;;:::i;:::-;;;;:::i;:::-;5051:10608;;;;;13143:18;;13135:50;;;:::i;:::-;13234:14;;;;;:::i;:::-;;;;:::i;:::-;5051:10608;;;;13200:13;5051:10608;;;;;13200:48;;;;:::i;:::-;13297:15;;;;;:::i;:::-;;;;:::i;:::-;5051:10608;;;;13263:14;5051:10608;;;;;13263:49;;;;:::i;:::-;13361:16;;;;;:::i;:::-;;;;:::i;:::-;5051:10608;;;;;;;;;;13327:50;;;;:::i;:::-;13426:26;;;;;:::i;:::-;;;;:::i;:::-;5051:10608;;;;13392:25;5051:10608;;;;;13392:60;;;;:::i;:::-;5051:10608;;;;13467:10;5051:10608;;;;;;;;;;;;;;13546:14;;;;;:::i;:::-;;;;:::i;:::-;13562:15;;;;;:::i;:::-;;;;:::i;:::-;13579:16;;;;;;:::i;:::-;;;;:::i;:::-;13597:26;;;;;:::i;:::-;;;;:::i;:::-;5051:10608;;;13525:99;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;13525:99:2;;5051:10608;;13059:9;;5051:10608;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;-1:-1:-1;;;5051:10608:2;;;;;;;12835:158;12958:35;;;;12835:158;;:106;12916:25;;;;12835:106;;:64;12875:24;;;;12835:64;;5051:10608;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;7881:24;5051:10608;;:::i;:::-;;;:::i;:::-;7881:24;;:::i;:::-;5051:10608;;7867:13;5051:10608;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;-1:-1:-1;5051:10608:2;;;;;;;;;7867:13;5051:10608;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;7867:13;5051:10608;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;5051:10608:2;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;:::i;:::-;1500:62:0;;:::i;:::-;10088:16:2;;5051:10608;;10154:24;;;;:::i;:::-;5051:10608;;;;10189:13;5051:10608;;;;;-1:-1:-1;;;;;5051:10608:2;;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;;;-1:-1:-1;5051:10608:2;;;;;;;;;;;;;;;-1:-1:-1;;5051:10608:2;;;;;;10231:44;;;;;;;5051:10608;;;;;;;;;;;;;;;;;;;;;;10189:13;5051:10608;;;;;;;;;;;;;;;;;;;;10189:13;5051:10608;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10189:13;5051:10608;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;5051:10608:2;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;5051:10608:2;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;5051:10608:2;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;9622:15;5051:10608;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;-1:-1:-1;;;5051:10608:2;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8613:734::-;-1:-1:-1;;;;;5051:10608:2;-1:-1:-1;5051:10608:2;;;8920:10;5051:10608;;;;;;;;8916:261;;5051:10608;;;:::i;:::-;;;;;;9280:14;5051:10608;9280:14;;5051:10608;;;9296:15;9313:25;5051:10608;9296:15;;5051:10608;;;9313:25;;5051:10608;;;9250:89;-1:-1:-1;9250:89:2;;;;8613:734;:::o;8916:261::-;-1:-1:-1;5051:10608:2;;;9002:13;5051:10608;;;;;;;;;9040:14;5051:10608;;;;;;9079:15;5051:10608;;;;;;9119:25;5051:10608;;;;;;;;8979:4;;5051:10608;;;;;;;;;;;;;;;;8953:212::o;7974:575::-;5051:10608;;:::i;:::-;-1:-1:-1;;;;;;5051:10608:2;;;;;8141:10;5051:10608;;;;;;;;8137:363;;8510:31;5051:10608;;;;:::i;:::-;7974:575;:::o;8137:363::-;5051:10608;;;;8230:13;5051:10608;;;;;;;;;8283:14;5051:10608;;;;;;8337:15;5051:10608;;;;;;8404:25;5051:10608;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;8184:267;;5051:10608;;;;8184:267;;5051:10608;;;8184:267;;;5051:10608;8474:4;8466:22;;:::o;1796:162:0:-;1710:6;5051:10608:2;-1:-1:-1;;;;;5051:10608:2;735:10:1;1855:23:0;1851:101;;1796:162::o;1851:101::-;1901:40;;;1710:6;1901:40;735:10:1;1901:40:0;5051:10608:2;;1710:6:0;1901:40;15525:131:2;5051:10608;;-1:-1:-1;;;;;;5051:10608:2;;;;;;15625:22;;;5051:10608;;;;;;;;;;;;;;15625:22;;;;;5051:10608;15625:22;:::i;:::-;5051:10608;15615:33;;15525:131;:::o
Swarm Source
ipfs://91c93a21ce99ca60d50850f3ed1704d78f0fa9f8e86803c0f5a66c0f6100d93b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.