Overview
ETH Balance
ETH Value
$0.00Latest 5 from a total of 5 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Accept Ownership | 27068977 | 32 days ago | IN | 0 ETH | 0.00000001 | ||||
| Transfer Ownersh... | 27068974 | 32 days ago | IN | 0 ETH | 0.00000001 | ||||
| Set Factory Whit... | 5959578 | 610 days ago | IN | 0 ETH | 0.00001252 | ||||
| Set Factory Whit... | 5959570 | 610 days ago | IN | 0 ETH | 0.00001242 | ||||
| Set Factory Whit... | 5959564 | 610 days ago | IN | 0 ETH | 0.00001228 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | ||||
|---|---|---|---|---|---|---|---|
| 28741701 | 3 mins ago | 0 ETH | |||||
| 28741701 | 3 mins ago | 0 ETH | |||||
| 28741564 | 7 mins ago | 0 ETH | |||||
| 28740419 | 39 mins ago | 0 ETH | |||||
| 28740392 | 39 mins ago | 0 ETH | |||||
| 28740392 | 39 mins ago | 0 ETH | |||||
| 28740390 | 39 mins ago | 0 ETH | |||||
| 28740380 | 39 mins ago | 0 ETH | |||||
| 28740352 | 41 mins ago | 0 ETH | |||||
| 28740339 | 41 mins ago | 0 ETH | |||||
| 28740288 | 42 mins ago | 0 ETH | |||||
| 28740217 | 44 mins ago | 0 ETH | |||||
| 28740202 | 45 mins ago | 0 ETH | |||||
| 28739620 | 1 hr ago | 0 ETH | |||||
| 28739580 | 1 hr ago | 0 ETH | |||||
| 28739511 | 1 hr ago | 0 ETH | |||||
| 28738965 | 1 hr ago | 0 ETH | |||||
| 28738737 | 1 hr ago | 0 ETH | |||||
| 28738735 | 1 hr ago | 0 ETH | |||||
| 28738623 | 1 hr ago | 0 ETH | |||||
| 28738574 | 1 hr ago | 0 ETH | |||||
| 28738573 | 1 hr ago | 0 ETH | |||||
| 28738571 | 1 hr ago | 0 ETH | |||||
| 28738458 | 1 hr ago | 0 ETH | |||||
| 28738457 | 1 hr ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SyncSwapPoolMaster_
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.0;
import "../interfaces/master/IPoolMaster.sol";
import "../interfaces/factory/IPoolFactory.sol";
import "../libraries/Ownable2Step.sol";
error NotWhitelistedFactory();
error PoolAlreadyExists();
/// @notice The pool master manages swap fees for pools, whitelist for factories,
/// protocol fee and pool registry.
///
/// It accepts pool registers from whitelisted factories, with the pool data on pool
/// creation, to enable querying of the existence or fees of a pool by address or config.
///
/// This contract provides a unified interface to query and manage fees across
/// different pool types, and a unique registry for all pools.
///
contract SyncSwapPoolMaster_ is IPoolMaster, Ownable2Step {
address public immutable override wETH;
/// @dev The vault that holds funds.
address public immutable override vault;
/// @dev The registry of forwarder.
address public forwarderRegistry;
/// @dev The fee manager.
address public override feeManager;
/// @dev Whether an address is a factory.
mapping(address => bool) public override isFactoryWhitelisted;
/// @dev Whether an address is a pool.
mapping(address => bool) public override isPool;
/// @dev Pools by hash of its config.
mapping(bytes32 => address) public override getPool;
struct PoolInfo {
address pool;
uint16 poolType;
}
mapping(address => mapping(address => PoolInfo[])) public pairPools;
address[] public override pools;
constructor(address _wETH, address _vault, address _forwarderRegistry, address _feeManager) {
wETH = _wETH;
vault = _vault;
forwarderRegistry = _forwarderRegistry;
feeManager = _feeManager;
}
function poolsLength() external view override returns (uint) {
return pools.length;
}
function _hashPoolConfig(uint16 poolType, address token0, address token1) private pure returns (bytes32 hash) {
hash = keccak256(abi.encode(poolType, token0, token1));
}
function _sortTokens(address tokenA, address tokenB) private pure returns (address token0, address token1) {
if (tokenA < tokenB) {
(token0, token1) = (tokenA, tokenB);
} else {
(token0, token1) = (tokenB, tokenA);
}
}
function getPoolByTokens(uint16 poolType, address tokenA, address tokenB) external view returns (address) {
(tokenA, tokenB) = _sortTokens(tokenA, tokenB);
return getPool[_hashPoolConfig(poolType, tokenA, tokenB)];
}
function pairPoolsLength(address tokenA, address tokenB) external view returns (uint) {
(tokenA, tokenB) = _sortTokens(tokenA, tokenB);
return pairPools[tokenA][tokenB].length;
}
function getPairPools(address tokenA, address tokenB) external view returns (PoolInfo[] memory) {
(tokenA, tokenB) = _sortTokens(tokenA, tokenB);
return pairPools[tokenA][tokenB];
}
function isForwarder(address forwarder) external view override returns (bool) {
return IForwarderRegistry(forwarderRegistry).isForwarder(forwarder);
}
function setForwarderRegistry(address newForwarderRegistry) external override onlyOwner {
forwarderRegistry = newForwarderRegistry;
emit UpdateForwarderRegistry(newForwarderRegistry);
}
function getSwapFee(
address pool,
address sender,
address tokenIn,
address tokenOut,
bytes calldata data
) external view override returns (uint24 fee) {
fee = IFeeManager(feeManager).getSwapFee(pool, sender, tokenIn, tokenOut, data);
}
function getProtocolFee(address pool) external view override returns (uint24 fee) {
fee = IFeeManager(feeManager).getProtocolFee(pool);
}
function getFeeRecipient() external view override returns (address recipient) {
recipient = IFeeManager(feeManager).getFeeRecipient();
}
function setFeeManager(address newFeeManager) external override onlyOwner {
feeManager = newFeeManager;
emit UpdateFeeManager(newFeeManager);
}
function setFactoryWhitelisted(address factory, bool whitelisted) external override onlyOwner {
require(factory != address(0), "Invalid factory");
isFactoryWhitelisted[factory] = whitelisted;
emit SetFactoryWhitelisted(factory, whitelisted);
}
/// @dev Create a pool with deployment data and, register it via the factory.
function createPool(address factory, bytes calldata data) external override returns (address pool) {
// The factory have to call `registerPool` to register the pool.
// The pool whitelist is checked in `registerPool`.
pool = IPoolFactory(factory).createPool(data);
}
/// @dev Register a pool to the mapping by its config. Can only be called by factories.
function registerPool(address pool, uint16 poolType, bytes calldata data, address token0, address token1) external override {
if (!isFactoryWhitelisted[msg.sender]) {
revert NotWhitelistedFactory();
}
require(pool != address(0));
// Double check to prevent duplicated pools.
if (isPool[pool]) {
revert PoolAlreadyExists();
}
// Encode and hash pool config to get the mapping key.
bytes32 hash = keccak256(abi.encode(poolType, data));
// Double check to prevent duplicated pools.
if (getPool[hash] != address(0)) {
revert PoolAlreadyExists();
}
// Set to mappings.
getPool[hash] = pool;
isPool[pool] = true;
pools.push(pool);
pairPools[token0][token1].push(PoolInfo({
pool: pool,
poolType: poolType
}));
emit RegisterPool(msg.sender, pool, poolType, data);
}
}// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity >=0.5.0;
interface IPoolFactory {
function master() external view returns (address);
function getDeployData() external view returns (bytes memory);
function createPool(bytes calldata data) external returns (address pool);
}// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity >=0.5.0;
/// @notice The manager contract to control fees.
/// Management functions are omitted.
interface IFeeManager {
function getSwapFee(
address pool,
address sender,
address tokenIn,
address tokenOut,
bytes calldata data
) external view returns (uint24);
function getProtocolFee(address pool) external view returns (uint24);
function getFeeRecipient() external view returns (address);
}// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity >=0.5.0;
interface IForwarderRegistry {
function isForwarder(address forwarder) external view returns (bool);
}// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity >=0.5.0;
import "./IFeeManager.sol";
import "./IForwarderRegistry.sol";
/// @dev The master contract to create pools and manage whitelisted factories.
/// Inheriting the fee manager interface to support fee queries.
interface IPoolMaster is IFeeManager, IForwarderRegistry {
event SetFactoryWhitelisted(address indexed factory, bool whitelisted);
event RegisterPool(
address indexed factory,
address indexed pool,
uint16 indexed poolType,
bytes data
);
event UpdateForwarderRegistry(address indexed newForwarderRegistry);
event UpdateFeeManager(address indexed newFeeManager);
function wETH() external view returns (address);
function vault() external view returns (address);
function feeManager() external view returns (address);
function pools(uint) external view returns (address);
function poolsLength() external view returns (uint);
// Forwarder Registry
function setForwarderRegistry(address) external;
// Fees
function setFeeManager(address) external;
// Factories
function isFactoryWhitelisted(address) external view returns (bool);
function setFactoryWhitelisted(address factory, bool whitelisted) external;
// Pools
function isPool(address) external view returns (bool);
function getPool(bytes32) external view returns (address);
function createPool(address factory, bytes calldata data) external returns (address pool);
function registerPool(address pool, uint16 poolType, bytes calldata data, address token0, address token1) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(msg.sender);
}
/**
* @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() == msg.sender, "Ownable: caller is not the owner");
}
/**
* @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 {
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 (last updated v4.8.0) (access/Ownable2Step.sol)
pragma solidity ^0.8.0;
import "./Ownable.sol";
/**
* @dev Contract module which provides 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} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/
abstract contract Ownable2Step is Ownable {
address private _pendingOwner;
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/
function pendingOwner() public view virtual returns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual override onlyOwner {
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual override {
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/
function acceptOwnership() public virtual {
require(pendingOwner() == msg.sender, "Ownable2Step: caller is not the new owner");
_transferOwnership(msg.sender);
}
}{
"viaIR": false,
"optimizer": {
"enabled": true,
"runs": 200,
"details": {
"yul": false
}
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_wETH","type":"address"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_forwarderRegistry","type":"address"},{"internalType":"address","name":"_feeManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotWhitelistedFactory","type":"error"},{"inputs":[],"name":"PoolAlreadyExists","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":"factory","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"uint16","name":"poolType","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"RegisterPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"indexed":false,"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"SetFactoryWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newFeeManager","type":"address"}],"name":"UpdateFeeManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newForwarderRegistry","type":"address"}],"name":"UpdateForwarderRegistry","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forwarderRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeRecipient","outputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getPairPools","outputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint16","name":"poolType","type":"uint16"}],"internalType":"struct SyncSwapPoolMaster_.PoolInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"poolType","type":"uint16"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getPoolByTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getProtocolFee","outputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"getSwapFee","outputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFactoryWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairPools","outputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint16","name":"poolType","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"pairPoolsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint16","name":"poolType","type":"uint16"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"setFactoryWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeManager","type":"address"}],"name":"setFeeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newForwarderRegistry","type":"address"}],"name":"setForwarderRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c06040523480156200001157600080fd5b506040516200161838038062001618833981016040819052620000349162000121565b6200003f336200007c565b6001600160a01b0393841660805291831660a052600280549184166001600160a01b0319928316179055600380549290931691161790556200018f565b600180546001600160a01b031916905562000097816200009a565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6200010881620000ea565b81146200009757600080fd5b8051620000f781620000fd565b600080600080608085870312156200013c576200013c600080fd5b60006200014a878762000114565b94505060206200015d8782880162000114565b9350506040620001708782880162000114565b9250506060620001838782880162000114565b91505092959194509250565b60805160a051611463620001b560003960006104150152600061039f01526114636000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063d0fb020311610097578063f2fde38b11610071578063f2fde38b146103c1578063f6c00927146103d4578063faff4f08146103fd578063fbfa77cf1461041057600080fd5b8063d0fb020314610376578063e30c397814610389578063f24286211461039a57600080fd5b8063a5a7f8b7116100d3578063a5a7f8b71461031d578063abcef55414610330578063ac4afa3814610343578063af88634f1461035657600080fd5b80638da5cb5b146102e65780638e668459146102f75780639dd41df21461030a57600080fd5b80634625a94d116101665780635b16ebb7116101405780635b16ebb714610292578063715018a6146102b557806379ba5097146102bd5780637f47b8e6146102c557600080fd5b80634625a94d14610264578063472d35b9146102775780634ccb20c01461028a57600080fd5b80630a992e0c146101ae5780630e16943b146101d7578063202e4f9e146101ec5780632716ae661461020c5780632b4c9f161461021457806343a0fcc414610234575b600080fd5b6101c16101bc366004610d82565b610437565b6040516101ce9190610db0565b60405180910390f35b6101ea6101e5366004610dd1565b6104af565b005b6101ff6101fa366004610e0e565b610546565b6040516101ce9190610e47565b6008546101ff565b600254610227906001600160a01b031681565b6040516101ce9190610e5e565b610257610242366004610d82565b60046020526000908152604090205460ff1681565b6040516101ce9190610e74565b6101c1610272366004610ecd565b610581565b6101ea610285366004610d82565b610608565b61022761065a565b6102576102a0366004610d82565b60056020526000908152604090205460ff1681565b6101ea6106cd565b6101ea6106e1565b6102d86102d3366004610f74565b610723565b6040516101ce929190610fce565b6000546001600160a01b0316610227565b610227610305366004610ffe565b610775565b610227610318366004611044565b6107b9565b6101ea61032b3660046110a0565b610835565b61025761033e366004610d82565b610a3e565b610227610351366004611136565b610ab0565b610369610364366004610e0e565b610ada565b6040516101ce91906111de565b600354610227906001600160a01b031681565b6001546001600160a01b0316610227565b6102277f000000000000000000000000000000000000000000000000000000000000000081565b6101ea6103cf366004610d82565b610b80565b6102276103e2366004611136565b6006602052600090815260409020546001600160a01b031681565b6101ea61040b366004610d82565b610bf1565b6102277f000000000000000000000000000000000000000000000000000000000000000081565b6003546040516302a64b8360e21b81526000916001600160a01b031690630a992e0c90610468908590600401610e5e565b602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190611205565b92915050565b6104b7610c43565b6001600160a01b0382166104e65760405162461bcd60e51b81526004016104dd9061124f565b60405180910390fd5b6001600160a01b03821660008181526004602052604090819020805460ff1916841515179055517f2c54fd9c1d7578da6d66f809aa31e327bc1a6cad6dc1d439f4b21adce023a1569061053a908490610e74565b60405180910390a25050565b60006105528383610c7c565b6001600160a01b0391821660009081526007602090815260408083209390941682529190915220549392505050565b600354604051634625a94d60e01b81526000916001600160a01b031690634625a94d906105bc908a908a908a908a908a908a9060040161128e565b602060405180830381865afa1580156105d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fd9190611205565b979650505050505050565b610610610c43565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f98a0dc993512fd2ddd1a4ee28a53d1275ec3c174565e996b03d4718909237bf890600090a250565b600354604080516301332c8360e61b815290516000926001600160a01b031691634ccb20c09160048083019260209291908290030181865afa1580156106a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c891906112ed565b905090565b6106d5610c43565b6106df6000610cb0565b565b336106f46001546001600160a01b031690565b6001600160a01b03161461071a5760405162461bcd60e51b81526004016104dd9061130e565b6106df33610cb0565b6007602052826000526040600020602052816000526040600020818154811061074b57600080fd5b6000918252602090912001546001600160a01b0381169350600160a01b900461ffff169150839050565b60006107818383610c7c565b909350915060066000610795868686610ccc565b81526020810191909152604001600020546001600160a01b031690505b9392505050565b6040516313b8683f60e01b81526000906001600160a01b038516906313b8683f906107ea908690869060040161135b565b6020604051808303816000875af1158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d91906112ed565b949350505050565b3360009081526004602052604090205460ff16610865576040516329951ebb60e21b815260040160405180910390fd5b6001600160a01b03861661087857600080fd5b6001600160a01b03861660009081526005602052604090205460ff16156108b257604051630188c99160e11b815260040160405180910390fd5b60008585856040516020016108c99392919061136d565b60408051601f198184030181529181528151602092830120600081815260069093529120549091506001600160a01b03161561091857604051630188c99160e11b815260040160405180910390fd5b600081815260066020908152604080832080546001600160a01b03808d166001600160a01b0319928316811790935582865260058552838620805460ff19166001908117909155600880548083019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180549093168417909255888116865260078552838620888216875285528386208451808601865284815261ffff808f1682890181815284549687018555938a52979098209051930180549151909716600160a01b026001600160b01b03199091169290911691909117179093555190919033907f4318beca5ca4f759b99c1f5f581fa8255b077a82e4c07f17213c471af5a0f56a90610a2d908a908a9061135b565b60405180910390a450505050505050565b600254604051632af3bd5560e21b81526000916001600160a01b03169063abcef55490610a6f908590600401610e5e565b602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a991906113a2565b60088181548110610ac057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060610ae68383610c7c565b6001600160a01b0380831660009081526007602090815260408083209385168352928152828220805484518184028101840190955280855295985093965091939184015b82821015610b7457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101610b2a565b50505050905092915050565b610b88610c43565b600180546001600160a01b0383166001600160a01b03199091168117909155610bb96000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610bf9610c43565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f41e309325204d4979853ee58efce248d83b12200f22fe333be8e33bbf748a71b90600090a250565b33610c566000546001600160a01b031690565b6001600160a01b0316146106df5760405162461bcd60e51b81526004016104dd906113f5565b600080826001600160a01b0316846001600160a01b03161015610ca3575082905081610ca9565b50819050825b9250929050565b600180546001600160a01b0319169055610cc981610d02565b50565b6000838383604051602001610ce393929190611405565b6040516020818303038152906040528051906020012090509392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382166104a9565b610d6c81610d52565b8114610cc957600080fd5b80356104a981610d63565b600060208284031215610d9757610d97600080fd5b600061082d8484610d77565b62ffffff81165b82525050565b602081016104a98284610da3565b801515610d6c565b80356104a981610dbe565b60008060408385031215610de757610de7600080fd5b6000610df38585610d77565b9250506020610e0485828601610dc6565b9150509250929050565b60008060408385031215610e2457610e24600080fd5b6000610e308585610d77565b9250506020610e0485828601610d77565b80610daa565b602081016104a98284610e41565b610daa81610d52565b602081016104a98284610e55565b801515610daa565b602081016104a98284610e6c565b60008083601f840112610e9757610e97600080fd5b50813567ffffffffffffffff811115610eb257610eb2600080fd5b602083019150836001820283011115610ca957610ca9600080fd5b60008060008060008060a08789031215610ee957610ee9600080fd5b6000610ef58989610d77565b9650506020610f0689828a01610d77565b9550506040610f1789828a01610d77565b9450506060610f2889828a01610d77565b935050608087013567ffffffffffffffff811115610f4857610f48600080fd5b610f5489828a01610e82565b92509250509295509295509295565b80610d6c565b80356104a981610f63565b600080600060608486031215610f8c57610f8c600080fd5b6000610f988686610d77565b9350506020610fa986828701610d77565b9250506040610fba86828701610f69565b9150509250925092565b61ffff8116610daa565b60408101610fdc8285610e55565b6107b26020830184610fc4565b61ffff8116610d6c565b80356104a981610fe9565b60008060006060848603121561101657611016600080fd5b60006110228686610ff3565b935050602061103386828701610d77565b9250506040610fba86828701610d77565b60008060006040848603121561105c5761105c600080fd5b60006110688686610d77565b935050602084013567ffffffffffffffff81111561108857611088600080fd5b61109486828701610e82565b92509250509250925092565b60008060008060008060a087890312156110bc576110bc600080fd5b60006110c88989610d77565b96505060206110d989828a01610ff3565b955050604087013567ffffffffffffffff8111156110f9576110f9600080fd5b61110589828a01610e82565b9450945050606061111889828a01610d77565b925050608061112989828a01610d77565b9150509295509295509295565b60006020828403121561114b5761114b600080fd5b600061082d8484610f69565b805160408301906111688482610e55565b50602082015161117b6020850182610fc4565b50505050565b600061118d8383611157565b505060400190565b600061119f825190565b80845260209384019383018060005b838110156111d35781516111c28882611181565b9750602083019250506001016111ae565b509495945050505050565b602080825281016107b28184611195565b62ffffff8116610d6c565b80516104a9816111ef565b60006020828403121561121a5761121a600080fd5b600061082d84846111fa565b600f81526000602082016e496e76616c696420666163746f727960881b815291505b5060200190565b602080825281016104a981611226565b82818337506000910152565b818352600060208401935061128183858461125f565b5050601f01601f19160190565b60a0810161129c8289610e55565b6112a96020830188610e55565b6112b66040830187610e55565b6112c36060830186610e55565b81810360808301526112d681848661126b565b98975050505050505050565b80516104a981610d63565b60006020828403121561130257611302600080fd5b600061082d84846112e2565b602080825281016104a981602981527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206020820152683732bb9037bbb732b960b91b604082015260600190565b6020808252810161082d81848661126b565b6040810161137b8286610fc4565b818103602083015261138e81848661126b565b95945050505050565b80516104a981610dbe565b6000602082840312156113b7576113b7600080fd5b600061082d8484611397565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611248565b602080825281016104a9816113c3565b606081016114138286610fc4565b6114206020830185610e55565b61082d6040830184610e5556fea26469706673582212203cacb49701a5b3fb6079cc0924e7626117628138d6fe0e586708d8af2100787b64736f6c634300081700330000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b0000000000000000000000005300000000000000000000000000000000000004000000000000000000000000466eee909b32e20b7ce709327cd821f00048850f000000000000000000000000dfb26acd0c1754194b0fbc9bca681c4321132611
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063d0fb020311610097578063f2fde38b11610071578063f2fde38b146103c1578063f6c00927146103d4578063faff4f08146103fd578063fbfa77cf1461041057600080fd5b8063d0fb020314610376578063e30c397814610389578063f24286211461039a57600080fd5b8063a5a7f8b7116100d3578063a5a7f8b71461031d578063abcef55414610330578063ac4afa3814610343578063af88634f1461035657600080fd5b80638da5cb5b146102e65780638e668459146102f75780639dd41df21461030a57600080fd5b80634625a94d116101665780635b16ebb7116101405780635b16ebb714610292578063715018a6146102b557806379ba5097146102bd5780637f47b8e6146102c557600080fd5b80634625a94d14610264578063472d35b9146102775780634ccb20c01461028a57600080fd5b80630a992e0c146101ae5780630e16943b146101d7578063202e4f9e146101ec5780632716ae661461020c5780632b4c9f161461021457806343a0fcc414610234575b600080fd5b6101c16101bc366004610d82565b610437565b6040516101ce9190610db0565b60405180910390f35b6101ea6101e5366004610dd1565b6104af565b005b6101ff6101fa366004610e0e565b610546565b6040516101ce9190610e47565b6008546101ff565b600254610227906001600160a01b031681565b6040516101ce9190610e5e565b610257610242366004610d82565b60046020526000908152604090205460ff1681565b6040516101ce9190610e74565b6101c1610272366004610ecd565b610581565b6101ea610285366004610d82565b610608565b61022761065a565b6102576102a0366004610d82565b60056020526000908152604090205460ff1681565b6101ea6106cd565b6101ea6106e1565b6102d86102d3366004610f74565b610723565b6040516101ce929190610fce565b6000546001600160a01b0316610227565b610227610305366004610ffe565b610775565b610227610318366004611044565b6107b9565b6101ea61032b3660046110a0565b610835565b61025761033e366004610d82565b610a3e565b610227610351366004611136565b610ab0565b610369610364366004610e0e565b610ada565b6040516101ce91906111de565b600354610227906001600160a01b031681565b6001546001600160a01b0316610227565b6102277f0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b81565b6101ea6103cf366004610d82565b610b80565b6102276103e2366004611136565b6006602052600090815260409020546001600160a01b031681565b6101ea61040b366004610d82565b610bf1565b6102277f000000000000000000000000530000000000000000000000000000000000000481565b6003546040516302a64b8360e21b81526000916001600160a01b031690630a992e0c90610468908590600401610e5e565b602060405180830381865afa158015610485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a99190611205565b92915050565b6104b7610c43565b6001600160a01b0382166104e65760405162461bcd60e51b81526004016104dd9061124f565b60405180910390fd5b6001600160a01b03821660008181526004602052604090819020805460ff1916841515179055517f2c54fd9c1d7578da6d66f809aa31e327bc1a6cad6dc1d439f4b21adce023a1569061053a908490610e74565b60405180910390a25050565b60006105528383610c7c565b6001600160a01b0391821660009081526007602090815260408083209390941682529190915220549392505050565b600354604051634625a94d60e01b81526000916001600160a01b031690634625a94d906105bc908a908a908a908a908a908a9060040161128e565b602060405180830381865afa1580156105d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fd9190611205565b979650505050505050565b610610610c43565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f98a0dc993512fd2ddd1a4ee28a53d1275ec3c174565e996b03d4718909237bf890600090a250565b600354604080516301332c8360e61b815290516000926001600160a01b031691634ccb20c09160048083019260209291908290030181865afa1580156106a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c891906112ed565b905090565b6106d5610c43565b6106df6000610cb0565b565b336106f46001546001600160a01b031690565b6001600160a01b03161461071a5760405162461bcd60e51b81526004016104dd9061130e565b6106df33610cb0565b6007602052826000526040600020602052816000526040600020818154811061074b57600080fd5b6000918252602090912001546001600160a01b0381169350600160a01b900461ffff169150839050565b60006107818383610c7c565b909350915060066000610795868686610ccc565b81526020810191909152604001600020546001600160a01b031690505b9392505050565b6040516313b8683f60e01b81526000906001600160a01b038516906313b8683f906107ea908690869060040161135b565b6020604051808303816000875af1158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d91906112ed565b949350505050565b3360009081526004602052604090205460ff16610865576040516329951ebb60e21b815260040160405180910390fd5b6001600160a01b03861661087857600080fd5b6001600160a01b03861660009081526005602052604090205460ff16156108b257604051630188c99160e11b815260040160405180910390fd5b60008585856040516020016108c99392919061136d565b60408051601f198184030181529181528151602092830120600081815260069093529120549091506001600160a01b03161561091857604051630188c99160e11b815260040160405180910390fd5b600081815260066020908152604080832080546001600160a01b03808d166001600160a01b0319928316811790935582865260058552838620805460ff19166001908117909155600880548083019091557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180549093168417909255888116865260078552838620888216875285528386208451808601865284815261ffff808f1682890181815284549687018555938a52979098209051930180549151909716600160a01b026001600160b01b03199091169290911691909117179093555190919033907f4318beca5ca4f759b99c1f5f581fa8255b077a82e4c07f17213c471af5a0f56a90610a2d908a908a9061135b565b60405180910390a450505050505050565b600254604051632af3bd5560e21b81526000916001600160a01b03169063abcef55490610a6f908590600401610e5e565b602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a991906113a2565b60088181548110610ac057600080fd5b6000918252602090912001546001600160a01b0316905081565b6060610ae68383610c7c565b6001600160a01b0380831660009081526007602090815260408083209385168352928152828220805484518184028101840190955280855295985093965091939184015b82821015610b7457600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101610b2a565b50505050905092915050565b610b88610c43565b600180546001600160a01b0383166001600160a01b03199091168117909155610bb96000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610bf9610c43565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f41e309325204d4979853ee58efce248d83b12200f22fe333be8e33bbf748a71b90600090a250565b33610c566000546001600160a01b031690565b6001600160a01b0316146106df5760405162461bcd60e51b81526004016104dd906113f5565b600080826001600160a01b0316846001600160a01b03161015610ca3575082905081610ca9565b50819050825b9250929050565b600180546001600160a01b0319169055610cc981610d02565b50565b6000838383604051602001610ce393929190611405565b6040516020818303038152906040528051906020012090509392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382166104a9565b610d6c81610d52565b8114610cc957600080fd5b80356104a981610d63565b600060208284031215610d9757610d97600080fd5b600061082d8484610d77565b62ffffff81165b82525050565b602081016104a98284610da3565b801515610d6c565b80356104a981610dbe565b60008060408385031215610de757610de7600080fd5b6000610df38585610d77565b9250506020610e0485828601610dc6565b9150509250929050565b60008060408385031215610e2457610e24600080fd5b6000610e308585610d77565b9250506020610e0485828601610d77565b80610daa565b602081016104a98284610e41565b610daa81610d52565b602081016104a98284610e55565b801515610daa565b602081016104a98284610e6c565b60008083601f840112610e9757610e97600080fd5b50813567ffffffffffffffff811115610eb257610eb2600080fd5b602083019150836001820283011115610ca957610ca9600080fd5b60008060008060008060a08789031215610ee957610ee9600080fd5b6000610ef58989610d77565b9650506020610f0689828a01610d77565b9550506040610f1789828a01610d77565b9450506060610f2889828a01610d77565b935050608087013567ffffffffffffffff811115610f4857610f48600080fd5b610f5489828a01610e82565b92509250509295509295509295565b80610d6c565b80356104a981610f63565b600080600060608486031215610f8c57610f8c600080fd5b6000610f988686610d77565b9350506020610fa986828701610d77565b9250506040610fba86828701610f69565b9150509250925092565b61ffff8116610daa565b60408101610fdc8285610e55565b6107b26020830184610fc4565b61ffff8116610d6c565b80356104a981610fe9565b60008060006060848603121561101657611016600080fd5b60006110228686610ff3565b935050602061103386828701610d77565b9250506040610fba86828701610d77565b60008060006040848603121561105c5761105c600080fd5b60006110688686610d77565b935050602084013567ffffffffffffffff81111561108857611088600080fd5b61109486828701610e82565b92509250509250925092565b60008060008060008060a087890312156110bc576110bc600080fd5b60006110c88989610d77565b96505060206110d989828a01610ff3565b955050604087013567ffffffffffffffff8111156110f9576110f9600080fd5b61110589828a01610e82565b9450945050606061111889828a01610d77565b925050608061112989828a01610d77565b9150509295509295509295565b60006020828403121561114b5761114b600080fd5b600061082d8484610f69565b805160408301906111688482610e55565b50602082015161117b6020850182610fc4565b50505050565b600061118d8383611157565b505060400190565b600061119f825190565b80845260209384019383018060005b838110156111d35781516111c28882611181565b9750602083019250506001016111ae565b509495945050505050565b602080825281016107b28184611195565b62ffffff8116610d6c565b80516104a9816111ef565b60006020828403121561121a5761121a600080fd5b600061082d84846111fa565b600f81526000602082016e496e76616c696420666163746f727960881b815291505b5060200190565b602080825281016104a981611226565b82818337506000910152565b818352600060208401935061128183858461125f565b5050601f01601f19160190565b60a0810161129c8289610e55565b6112a96020830188610e55565b6112b66040830187610e55565b6112c36060830186610e55565b81810360808301526112d681848661126b565b98975050505050505050565b80516104a981610d63565b60006020828403121561130257611302600080fd5b600061082d84846112e2565b602080825281016104a981602981527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206020820152683732bb9037bbb732b960b91b604082015260600190565b6020808252810161082d81848661126b565b6040810161137b8286610fc4565b818103602083015261138e81848661126b565b95945050505050565b80516104a981610dbe565b6000602082840312156113b7576113b7600080fd5b600061082d8484611397565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611248565b602080825281016104a9816113c3565b606081016114138286610fc4565b6114206020830185610e55565b61082d6040830184610e5556fea26469706673582212203cacb49701a5b3fb6079cc0924e7626117628138d6fe0e586708d8af2100787b64736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b0000000000000000000000005300000000000000000000000000000000000004000000000000000000000000466eee909b32e20b7ce709327cd821f00048850f000000000000000000000000dfb26acd0c1754194b0fbc9bca681c4321132611
-----Decoded View---------------
Arg [0] : _wETH (address): 0x7160570BB153Edd0Ea1775EC2b2Ac9b65F1aB61B
Arg [1] : _vault (address): 0x5300000000000000000000000000000000000004
Arg [2] : _forwarderRegistry (address): 0x466eEE909B32e20b7ce709327cd821f00048850F
Arg [3] : _feeManager (address): 0xdfB26ACd0C1754194b0FbC9BCA681c4321132611
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007160570bb153edd0ea1775ec2b2ac9b65f1ab61b
Arg [1] : 0000000000000000000000005300000000000000000000000000000000000004
Arg [2] : 000000000000000000000000466eee909b32e20b7ce709327cd821f00048850f
Arg [3] : 000000000000000000000000dfb26acd0c1754194b0fbc9bca681c4321132611
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
Multichain Portfolio | 35 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.