Source Code
Overview
ETH Balance
ETH Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Factory Whit... | 16713933 | 323 days ago | IN | 0 ETH | 0.00000281 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 28339058 | 2 hrs ago | 0 ETH | ||||
| 28339058 | 2 hrs ago | 0 ETH | ||||
| 28339037 | 2 hrs ago | 0 ETH | ||||
| 28339037 | 2 hrs ago | 0 ETH | ||||
| 28339036 | 2 hrs ago | 0 ETH | ||||
| 28339036 | 2 hrs ago | 0 ETH | ||||
| 28338684 | 2 hrs ago | 0 ETH | ||||
| 28338684 | 2 hrs ago | 0 ETH | ||||
| 28338212 | 2 hrs ago | 0 ETH | ||||
| 28338212 | 2 hrs ago | 0 ETH | ||||
| 28338199 | 2 hrs ago | 0 ETH | ||||
| 28338199 | 2 hrs ago | 0 ETH | ||||
| 28337236 | 3 hrs ago | 0 ETH | ||||
| 28337236 | 3 hrs ago | 0 ETH | ||||
| 28337200 | 3 hrs ago | 0 ETH | ||||
| 28337200 | 3 hrs ago | 0 ETH | ||||
| 28337070 | 3 hrs ago | 0 ETH | ||||
| 28337070 | 3 hrs ago | 0 ETH | ||||
| 28331922 | 6 hrs ago | 0 ETH | ||||
| 28331922 | 6 hrs ago | 0 ETH | ||||
| 28328669 | 8 hrs ago | 0 ETH | ||||
| 28328669 | 8 hrs ago | 0 ETH | ||||
| 28328281 | 8 hrs ago | 0 ETH | ||||
| 28328281 | 8 hrs ago | 0 ETH | ||||
| 28327329 | 9 hrs ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SyncSwapPoolMaster
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 100 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.7.6;
pragma abicoder v2;
import "./interfaces/IPoolMaster.sol";
import "./interfaces/IPoolFactory.sol";
import "./libraries/external/Ownable.sol";
/// @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, Ownable {
address public override wETH;
/// @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 _forwarderRegistry, address _feeManager) {
wETH = _wETH;
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 {
require(isFactoryWhitelisted[msg.sender], "Not whitelisted");
require(pool != address(0));
// Double check to prevent duplicated pools.
require(!isPool[pool], "Pool exists");
// Encode and hash pool config to get the mapping key.
bytes32 hash = keccak256(abi.encode(poolType, data));
// Double check to prevent duplicated pools.
require(getPool[hash] == address(0), "Pool hash exists");
// 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;
/// @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;
interface IPoolFactory {
function master() external view returns (address);
function createPool(bytes calldata data) external returns (address pool);
}// 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 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
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "./Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}{
"viaIR": false,
"optimizer": {
"enabled": true,
"runs": 100,
"details": {
"yul": true
}
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"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":"_forwarderRegistry","type":"address"},{"internalType":"address","name":"_feeManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"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":[{"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":"wETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162001662380380620016628339810160408190526200003491620000ee565b600062000040620000cd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039485166001600160a01b03199182161790915560028054938516938216939093179092556003805491909316911617905562000137565b3390565b80516001600160a01b0381168114620000e957600080fd5b919050565b60008060006060848603121562000103578283fd5b6200010e84620000d1565b92506200011e60208501620000d1565b91506200012e60408501620000d1565b90509250925092565b61151b80620001476000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063af88634f1161007c578063af88634f146102c9578063d0fb0203146102e9578063f2428621146102f1578063f2fde38b146102f9578063f6c009271461030c578063faff4f081461031f57610158565b80638da5cb5b146102625780638e6684591461026a5780639dd41df21461027d578063a5a7f8b714610290578063abcef554146102a3578063ac4afa38146102b657610158565b80634625a94d116101155780634625a94d146101f8578063472d35b91461020b5780634ccb20c01461021e5780635b16ebb714610226578063715018a6146102395780637f47b8e61461024157610158565b80630a992e0c1461015d5780630e16943b14610186578063202e4f9e1461019b5780632716ae66146101bb5780632b4c9f16146101c357806343a0fcc4146101d8575b600080fd5b61017061016b366004610f68565b610332565b60405161017d9190611460565b60405180910390f35b6101996101943660046110ab565b6103b9565b005b6101ae6101a9366004610fa7565b6104a0565b60405161017d9190611470565b6101ae6104db565b6101cb6104e1565b60405161017d919061127e565b6101eb6101e6366004610f68565b6104f0565b60405161017d9190611354565b610170610206366004610fdf565b610505565b610199610219366004610f68565b61059b565b6101cb61063d565b6101eb610234366004610f68565b6106bf565b6101996106d4565b61025461024f36600461106b565b610776565b60405161017d9291906112db565b6101cb6107c8565b6101cb6102783660046111e9565b6107d7565b6101cb61028b3660046110d8565b610819565b61019961029e36600461112b565b6108a4565b6101eb6102b1366004610f68565b610b7f565b6101cb6102c43660046111d1565b610c05565b6102dc6102d7366004610fa7565b610c2f565b60405161017d91906112f8565b6101cb610cd5565b6101cb610ce4565b610199610307366004610f68565b610cf3565b6101cb61031a3660046111d1565b610deb565b61019961032d366004610f68565b610e06565b6003546040516302a64b8360e21b81526000916001600160a01b031690630a992e0c9061036390859060040161127e565b60206040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b39190611231565b92915050565b6103c1610ea8565b6000546001600160a01b03908116911614610411576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b6001600160a01b0382166104405760405162461bcd60e51b8152600401610437906113eb565b60405180910390fd5b6001600160a01b03821660008181526004602052604090819020805460ff1916841515179055517f2c54fd9c1d7578da6d66f809aa31e327bc1a6cad6dc1d439f4b21adce023a15690610494908490611354565b60405180910390a25050565b60006104ac8383610eac565b6001600160a01b0391821660009081526007602090815260408083209390941682529190915220549392505050565b60085490565b6002546001600160a01b031681565b60046020526000908152604090205460ff1681565b600354604051634625a94d60e01b81526000916001600160a01b031690634625a94d90610540908a908a908a908a908a908a90600401611292565b60206040518083038186803b15801561055857600080fd5b505afa15801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190611231565b979650505050505050565b6105a3610ea8565b6000546001600160a01b039081169116146105f3576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f98a0dc993512fd2ddd1a4ee28a53d1275ec3c174565e996b03d4718909237bf890600090a250565b600354604080516301332c8360e61b815290516000926001600160a01b031691634ccb20c0916004808301926020929190829003018186803b15801561068257600080fd5b505afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba9190610f8b565b905090565b60056020526000908152604090205460ff1681565b6106dc610ea8565b6000546001600160a01b0390811691161461072c576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6007602052826000526040600020602052816000526040600020818154811061079e57600080fd5b6000918252602090912001546001600160a01b0381169350600160a01b900461ffff169150839050565b6000546001600160a01b031690565b60006107e38383610eac565b9093509150600660006107f7868686610ee0565b81526020810191909152604001600020546001600160a01b0316949350505050565b6040516313b8683f60e01b81526000906001600160a01b038516906313b8683f9061084a908690869060040161135f565b602060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089c9190610f8b565b949350505050565b3360009081526004602052604090205460ff166108d35760405162461bcd60e51b815260040161043790611373565b6001600160a01b0386166108e657600080fd5b6001600160a01b03861660009081526005602052604090205460ff161561091f5760405162461bcd60e51b8152600401610437906113c6565b600085858560405160200161093693929190611439565b60408051601f198184030181529181528151602092830120600081815260069093529120549091506001600160a01b0316156109845760405162461bcd60e51b81526004016104379061139c565b866006600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160056000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506008879080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060076000846001600160a01b03166001600160a01b031681526020019081526020016000206000836001600160a01b03166001600160a01b031681526020019081526020016000206040518060400160405280896001600160a01b031681526020018861ffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548161ffff021916908361ffff16021790555050508561ffff16876001600160a01b0316336001600160a01b03167f4318beca5ca4f759b99c1f5f581fa8255b077a82e4c07f17213c471af5a0f56a8888604051610b6e92919061135f565b60405180910390a450505050505050565b600254604051632af3bd5560e21b81526000916001600160a01b03169063abcef55490610bb090859060040161127e565b60206040518083038186803b158015610bc857600080fd5b505afa158015610bdc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b391906111b5565b919050565b60088181548110610c1557600080fd5b6000918252602090912001546001600160a01b0316905081565b6060610c3b8383610eac565b6001600160a01b0380831660009081526007602090815260408083209385168352928152828220805484518184028101840190955280855295985093965091939184015b82821015610cc957600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101610c7f565b50505050905092915050565b6003546001600160a01b031681565b6001546001600160a01b031681565b610cfb610ea8565b6000546001600160a01b03908116911614610d4b576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b6001600160a01b038116610d905760405162461bcd60e51b81526004018080602001828103825260268152602001806114a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6006602052600090815260409020546001600160a01b031681565b610e0e610ea8565b6000546001600160a01b03908116911614610e5e576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f41e309325204d4979853ee58efce248d83b12200f22fe333be8e33bbf748a71b90600090a250565b3390565b600080826001600160a01b0316846001600160a01b03161015610ed3575082905081610ed9565b50819050825b9250929050565b6000838383604051602001610ef793929190611414565b6040516020818303038152906040528051906020012090509392505050565b60008083601f840112610f27578182fd5b50813567ffffffffffffffff811115610f3e578182fd5b602083019150836020828501011115610ed957600080fd5b803561ffff81168114610c0057600080fd5b600060208284031215610f79578081fd5b8135610f8481611479565b9392505050565b600060208284031215610f9c578081fd5b8151610f8481611479565b60008060408385031215610fb9578081fd5b8235610fc481611479565b91506020830135610fd481611479565b809150509250929050565b60008060008060008060a08789031215610ff7578182fd5b863561100281611479565b9550602087013561101281611479565b9450604087013561102281611479565b9350606087013561103281611479565b9250608087013567ffffffffffffffff81111561104d578283fd5b61105989828a01610f16565b979a9699509497509295939492505050565b60008060006060848603121561107f578283fd5b833561108a81611479565b9250602084013561109a81611479565b929592945050506040919091013590565b600080604083850312156110bd578182fd5b82356110c881611479565b91506020830135610fd481611491565b6000806000604084860312156110ec578283fd5b83356110f781611479565b9250602084013567ffffffffffffffff811115611112578283fd5b61111e86828701610f16565b9497909650939450505050565b60008060008060008060a08789031215611143578182fd5b863561114e81611479565b955061115c60208801610f56565b9450604087013567ffffffffffffffff811115611177578283fd5b61118389828a01610f16565b909550935050606087013561119781611479565b915060808701356111a781611479565b809150509295509295509295565b6000602082840312156111c6578081fd5b8151610f8481611491565b6000602082840312156111e2578081fd5b5035919050565b6000806000606084860312156111fd578283fd5b61120684610f56565b9250602084013561121681611479565b9150604084013561122681611479565b809150509250925092565b600060208284031215611242578081fd5b815162ffffff81168114610f84578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b038781168252868116602083015285811660408301528416606082015260a0608082018190526000906112cf9083018486611254565b98975050505050505050565b6001600160a01b0392909216825261ffff16602082015260400190565b602080825282518282018190526000919060409081850190868401855b8281101561134757815180516001600160a01b0316855286015161ffff16868501529284019290850190600101611315565b5091979650505050505050565b901515815260200190565b60006020825261089c602083018486611254565b6020808252600f908201526e139bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b60208082526010908201526f506f6f6c20686173682065786973747360801b604082015260600190565b6020808252600b908201526a506f6f6c2065786973747360a81b604082015260600190565b6020808252600f908201526e496e76616c696420666163746f727960881b604082015260600190565b61ffff9390931683526001600160a01b03918216602084015216604082015260600190565b600061ffff8516825260406020830152611457604083018486611254565b95945050505050565b62ffffff91909116815260200190565b90815260200190565b6001600160a01b038116811461148e57600080fd5b50565b801515811461148e57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212205fbfa86a68c8461164b1e3b9d9fff490d15cc7d656a392aaef29a8b706e06a6a64736f6c63430007060033000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f00000000000000000000000095e0179d6b9b9886ea29e1ac23661817d14b17b9000000000000000000000000019f6f1d08d9b76969132aa6e29cb6a5cadc5785
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063af88634f1161007c578063af88634f146102c9578063d0fb0203146102e9578063f2428621146102f1578063f2fde38b146102f9578063f6c009271461030c578063faff4f081461031f57610158565b80638da5cb5b146102625780638e6684591461026a5780639dd41df21461027d578063a5a7f8b714610290578063abcef554146102a3578063ac4afa38146102b657610158565b80634625a94d116101155780634625a94d146101f8578063472d35b91461020b5780634ccb20c01461021e5780635b16ebb714610226578063715018a6146102395780637f47b8e61461024157610158565b80630a992e0c1461015d5780630e16943b14610186578063202e4f9e1461019b5780632716ae66146101bb5780632b4c9f16146101c357806343a0fcc4146101d8575b600080fd5b61017061016b366004610f68565b610332565b60405161017d9190611460565b60405180910390f35b6101996101943660046110ab565b6103b9565b005b6101ae6101a9366004610fa7565b6104a0565b60405161017d9190611470565b6101ae6104db565b6101cb6104e1565b60405161017d919061127e565b6101eb6101e6366004610f68565b6104f0565b60405161017d9190611354565b610170610206366004610fdf565b610505565b610199610219366004610f68565b61059b565b6101cb61063d565b6101eb610234366004610f68565b6106bf565b6101996106d4565b61025461024f36600461106b565b610776565b60405161017d9291906112db565b6101cb6107c8565b6101cb6102783660046111e9565b6107d7565b6101cb61028b3660046110d8565b610819565b61019961029e36600461112b565b6108a4565b6101eb6102b1366004610f68565b610b7f565b6101cb6102c43660046111d1565b610c05565b6102dc6102d7366004610fa7565b610c2f565b60405161017d91906112f8565b6101cb610cd5565b6101cb610ce4565b610199610307366004610f68565b610cf3565b6101cb61031a3660046111d1565b610deb565b61019961032d366004610f68565b610e06565b6003546040516302a64b8360e21b81526000916001600160a01b031690630a992e0c9061036390859060040161127e565b60206040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b39190611231565b92915050565b6103c1610ea8565b6000546001600160a01b03908116911614610411576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b6001600160a01b0382166104405760405162461bcd60e51b8152600401610437906113eb565b60405180910390fd5b6001600160a01b03821660008181526004602052604090819020805460ff1916841515179055517f2c54fd9c1d7578da6d66f809aa31e327bc1a6cad6dc1d439f4b21adce023a15690610494908490611354565b60405180910390a25050565b60006104ac8383610eac565b6001600160a01b0391821660009081526007602090815260408083209390941682529190915220549392505050565b60085490565b6002546001600160a01b031681565b60046020526000908152604090205460ff1681565b600354604051634625a94d60e01b81526000916001600160a01b031690634625a94d90610540908a908a908a908a908a908a90600401611292565b60206040518083038186803b15801561055857600080fd5b505afa15801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190611231565b979650505050505050565b6105a3610ea8565b6000546001600160a01b039081169116146105f3576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f98a0dc993512fd2ddd1a4ee28a53d1275ec3c174565e996b03d4718909237bf890600090a250565b600354604080516301332c8360e61b815290516000926001600160a01b031691634ccb20c0916004808301926020929190829003018186803b15801561068257600080fd5b505afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba9190610f8b565b905090565b60056020526000908152604090205460ff1681565b6106dc610ea8565b6000546001600160a01b0390811691161461072c576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6007602052826000526040600020602052816000526040600020818154811061079e57600080fd5b6000918252602090912001546001600160a01b0381169350600160a01b900461ffff169150839050565b6000546001600160a01b031690565b60006107e38383610eac565b9093509150600660006107f7868686610ee0565b81526020810191909152604001600020546001600160a01b0316949350505050565b6040516313b8683f60e01b81526000906001600160a01b038516906313b8683f9061084a908690869060040161135f565b602060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089c9190610f8b565b949350505050565b3360009081526004602052604090205460ff166108d35760405162461bcd60e51b815260040161043790611373565b6001600160a01b0386166108e657600080fd5b6001600160a01b03861660009081526005602052604090205460ff161561091f5760405162461bcd60e51b8152600401610437906113c6565b600085858560405160200161093693929190611439565b60408051601f198184030181529181528151602092830120600081815260069093529120549091506001600160a01b0316156109845760405162461bcd60e51b81526004016104379061139c565b866006600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160056000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506008879080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555060076000846001600160a01b03166001600160a01b031681526020019081526020016000206000836001600160a01b03166001600160a01b031681526020019081526020016000206040518060400160405280896001600160a01b031681526020018861ffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548161ffff021916908361ffff16021790555050508561ffff16876001600160a01b0316336001600160a01b03167f4318beca5ca4f759b99c1f5f581fa8255b077a82e4c07f17213c471af5a0f56a8888604051610b6e92919061135f565b60405180910390a450505050505050565b600254604051632af3bd5560e21b81526000916001600160a01b03169063abcef55490610bb090859060040161127e565b60206040518083038186803b158015610bc857600080fd5b505afa158015610bdc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b391906111b5565b919050565b60088181548110610c1557600080fd5b6000918252602090912001546001600160a01b0316905081565b6060610c3b8383610eac565b6001600160a01b0380831660009081526007602090815260408083209385168352928152828220805484518184028101840190955280855295985093965091939184015b82821015610cc957600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900461ffff1681830152825260019092019101610c7f565b50505050905092915050565b6003546001600160a01b031681565b6001546001600160a01b031681565b610cfb610ea8565b6000546001600160a01b03908116911614610d4b576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b6001600160a01b038116610d905760405162461bcd60e51b81526004018080602001828103825260268152602001806114a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6006602052600090815260409020546001600160a01b031681565b610e0e610ea8565b6000546001600160a01b03908116911614610e5e576040805162461bcd60e51b815260206004820181905260248201526000805160206114c6833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f41e309325204d4979853ee58efce248d83b12200f22fe333be8e33bbf748a71b90600090a250565b3390565b600080826001600160a01b0316846001600160a01b03161015610ed3575082905081610ed9565b50819050825b9250929050565b6000838383604051602001610ef793929190611414565b6040516020818303038152906040528051906020012090509392505050565b60008083601f840112610f27578182fd5b50813567ffffffffffffffff811115610f3e578182fd5b602083019150836020828501011115610ed957600080fd5b803561ffff81168114610c0057600080fd5b600060208284031215610f79578081fd5b8135610f8481611479565b9392505050565b600060208284031215610f9c578081fd5b8151610f8481611479565b60008060408385031215610fb9578081fd5b8235610fc481611479565b91506020830135610fd481611479565b809150509250929050565b60008060008060008060a08789031215610ff7578182fd5b863561100281611479565b9550602087013561101281611479565b9450604087013561102281611479565b9350606087013561103281611479565b9250608087013567ffffffffffffffff81111561104d578283fd5b61105989828a01610f16565b979a9699509497509295939492505050565b60008060006060848603121561107f578283fd5b833561108a81611479565b9250602084013561109a81611479565b929592945050506040919091013590565b600080604083850312156110bd578182fd5b82356110c881611479565b91506020830135610fd481611491565b6000806000604084860312156110ec578283fd5b83356110f781611479565b9250602084013567ffffffffffffffff811115611112578283fd5b61111e86828701610f16565b9497909650939450505050565b60008060008060008060a08789031215611143578182fd5b863561114e81611479565b955061115c60208801610f56565b9450604087013567ffffffffffffffff811115611177578283fd5b61118389828a01610f16565b909550935050606087013561119781611479565b915060808701356111a781611479565b809150509295509295509295565b6000602082840312156111c6578081fd5b8151610f8481611491565b6000602082840312156111e2578081fd5b5035919050565b6000806000606084860312156111fd578283fd5b61120684610f56565b9250602084013561121681611479565b9150604084013561122681611479565b809150509250925092565b600060208284031215611242578081fd5b815162ffffff81168114610f84578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b038781168252868116602083015285811660408301528416606082015260a0608082018190526000906112cf9083018486611254565b98975050505050505050565b6001600160a01b0392909216825261ffff16602082015260400190565b602080825282518282018190526000919060409081850190868401855b8281101561134757815180516001600160a01b0316855286015161ffff16868501529284019290850190600101611315565b5091979650505050505050565b901515815260200190565b60006020825261089c602083018486611254565b6020808252600f908201526e139bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b60208082526010908201526f506f6f6c20686173682065786973747360801b604082015260600190565b6020808252600b908201526a506f6f6c2065786973747360a81b604082015260600190565b6020808252600f908201526e496e76616c696420666163746f727960881b604082015260600190565b61ffff9390931683526001600160a01b03918216602084015216604082015260600190565b600061ffff8516825260406020830152611457604083018486611254565b95945050505050565b62ffffff91909116815260200190565b90815260200190565b6001600160a01b038116811461148e57600080fd5b50565b801515811461148e57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212205fbfa86a68c8461164b1e3b9d9fff490d15cc7d656a392aaef29a8b706e06a6a64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f00000000000000000000000095e0179d6b9b9886ea29e1ac23661817d14b17b9000000000000000000000000019f6f1d08d9b76969132aa6e29cb6a5cadc5785
-----Decoded View---------------
Arg [0] : _wETH (address): 0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f
Arg [1] : _forwarderRegistry (address): 0x95E0179D6b9b9886ea29e1AC23661817d14b17B9
Arg [2] : _feeManager (address): 0x019F6F1D08D9b76969132aa6e29cB6A5cadC5785
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f
Arg [1] : 00000000000000000000000095e0179d6b9b9886ea29e1ac23661817d14b17b9
Arg [2] : 000000000000000000000000019f6f1d08d9b76969132aa6e29cb6a5cadc5785
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 ]
[ 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.