Overview
ETH Balance
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Sender White... | 713 | 648 days ago | IN | 0 ETH | 0.00028996 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
2218084 | 436 days ago | 0 ETH | ||||
2218084 | 436 days ago | 0 ETH | ||||
2218056 | 436 days ago | 0 ETH | ||||
2218056 | 436 days ago | 0 ETH | ||||
2218031 | 436 days ago | 0 ETH | ||||
2218031 | 436 days ago | 0 ETH | ||||
2217998 | 436 days ago | 0 ETH | ||||
2217998 | 436 days ago | 0 ETH | ||||
2217974 | 436 days ago | 0 ETH | ||||
2217974 | 436 days ago | 0 ETH | ||||
2217939 | 436 days ago | 0 ETH | ||||
2217939 | 436 days ago | 0 ETH | ||||
2217920 | 436 days ago | 0 ETH | ||||
2217920 | 436 days ago | 0 ETH | ||||
2217916 | 436 days ago | 0 ETH | ||||
2217916 | 436 days ago | 0 ETH | ||||
2217914 | 436 days ago | 0 ETH | ||||
2217914 | 436 days ago | 0 ETH | ||||
2217860 | 436 days ago | 0 ETH | ||||
2217860 | 436 days ago | 0 ETH | ||||
2217842 | 436 days ago | 0 ETH | ||||
2217842 | 436 days ago | 0 ETH | ||||
2217819 | 436 days ago | 0 ETH | ||||
2217819 | 436 days ago | 0 ETH | ||||
2217762 | 436 days ago | 0 ETH |
Loading...
Loading
Contract Name:
FeeRegistry
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default 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/master/IFeeRegistry.sol"; import "../libraries/Ownable.sol"; contract FeeRegistry is IFeeRegistry, Ownable { /// @dev The pool master. address public immutable master; /// @dev Whether a fee sender is whitelisted. mapping(address => bool) public isSenderWhitelisted; event SetSenderWhitelisted(address indexed sender, bool indexed isWhitelisted); constructor(address _master) { master = _master; } /// @dev Returns whether the address is a valid fee sender. function isFeeSender(address sender) external view override returns (bool) { return isSenderWhitelisted[sender] || IPoolMaster(master).isPool(sender); } /// @dev Whitelists a fee sender explicitly. function setSenderWhitelisted(address sender, bool isWhitelisted) external onlyOwner { require(sender != address(0), "Invalid address"); require(isSenderWhitelisted[sender] != isWhitelisted, "Already set"); isSenderWhitelisted[sender] = isWhitelisted; emit SetSenderWhitelisted(sender, isWhitelisted); } }
// 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 IFeeRegistry { function isFeeSender(address sender) external view returns (bool); }
// 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 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) 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); } }
{ "optimizer": { "enabled": true, "runs": 200, "details": { "yul": false } }, "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":"_master","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":"sender","type":"address"},{"indexed":true,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"SetSenderWhitelisted","type":"event"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"isFeeSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSenderWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","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":"address","name":"sender","type":"address"},{"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"setSenderWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516106e33803806106e383398101604081905261002f916100ce565b61003833610049565b6001600160a01b03166080526100f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6100b581610099565b81146100c057600080fd5b50565b80516100a6816100ac565b6000602082840312156100e3576100e3600080fd5b60006100ef84846100c3565b949350505050565b6080516105cb6101186000396000818160f7015261029101526105cb6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a79854bc1161005b578063a79854bc146100c2578063ee97f7f3146100f2578063f2fde38b14610119578063fe47d6e11461012c57600080fd5b8063531847f414610082578063715018a6146100975780638da5cb5b1461009f575b600080fd5b6100956100903660046103d9565b61013f565b005b61009561020a565b6000546001600160a01b03165b6040516100b99190610425565b60405180910390f35b6100e56100d0366004610433565b60016020526000908152604090205460ff1681565b6040516100b99190610464565b6100ac7f000000000000000000000000000000000000000000000000000000000000000081565b610095610127366004610433565b61021e565b6100e561013a366004610433565b610258565b61014761030d565b6001600160a01b0382166101765760405162461bcd60e51b815260040161016d9061049b565b60405180910390fd5b6001600160a01b03821660009081526001602052604090205481151560ff9091161515036101b65760405162461bcd60e51b815260040161016d906104cd565b6001600160a01b038216600081815260016020526040808220805460ff191685151590811790915590519092917f40c67e82f75d23c03a9fa9e732839880dfb47f0e2a4751003bef67f6af899ce391a35050565b61021261030d565b61021c6000610346565b565b61022661030d565b6001600160a01b03811661024c5760405162461bcd60e51b815260040161016d906104dd565b61025581610346565b50565b6001600160a01b03811660009081526001602052604081205460ff16806103075750604051635b16ebb760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635b16ebb7906102c6908590600401610425565b602060405180830381865afa1580156102e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103079190610532565b92915050565b336103206000546001600160a01b031690565b6001600160a01b03161461021c5760405162461bcd60e51b815260040161016d90610585565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b038216610307565b6103b081610396565b811461025557600080fd5b8035610307816103a7565b8015156103b0565b8035610307816103c6565b600080604083850312156103ef576103ef600080fd5b60006103fb85856103bb565b925050602061040c858286016103ce565b9150509250929050565b61041f81610396565b82525050565b602081016103078284610416565b60006020828403121561044857610448600080fd5b600061045484846103bb565b949350505050565b80151561041f565b60208101610307828461045c565b600f81526000602082016e496e76616c6964206164647265737360881b815291505b5060200190565b6020808252810161030781610472565b600b81526000602082016a105b1c9958591e481cd95d60aa1b81529150610494565b60208082528101610307816104ab565b6020808252810161030781602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b8051610307816103c6565b60006020828403121561054757610547600080fd5b60006104548484610527565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610494565b602080825281016103078161055356fea26469706673582212206fd3a8849bbcbee74ce841363f235c8dcf1d8499fe8ecb8c0c90987e3ab4252a64736f6c634300080f0033000000000000000000000000608cb7c3168427091f5994a45baf12083964b4a3
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a79854bc1161005b578063a79854bc146100c2578063ee97f7f3146100f2578063f2fde38b14610119578063fe47d6e11461012c57600080fd5b8063531847f414610082578063715018a6146100975780638da5cb5b1461009f575b600080fd5b6100956100903660046103d9565b61013f565b005b61009561020a565b6000546001600160a01b03165b6040516100b99190610425565b60405180910390f35b6100e56100d0366004610433565b60016020526000908152604090205460ff1681565b6040516100b99190610464565b6100ac7f000000000000000000000000608cb7c3168427091f5994a45baf12083964b4a381565b610095610127366004610433565b61021e565b6100e561013a366004610433565b610258565b61014761030d565b6001600160a01b0382166101765760405162461bcd60e51b815260040161016d9061049b565b60405180910390fd5b6001600160a01b03821660009081526001602052604090205481151560ff9091161515036101b65760405162461bcd60e51b815260040161016d906104cd565b6001600160a01b038216600081815260016020526040808220805460ff191685151590811790915590519092917f40c67e82f75d23c03a9fa9e732839880dfb47f0e2a4751003bef67f6af899ce391a35050565b61021261030d565b61021c6000610346565b565b61022661030d565b6001600160a01b03811661024c5760405162461bcd60e51b815260040161016d906104dd565b61025581610346565b50565b6001600160a01b03811660009081526001602052604081205460ff16806103075750604051635b16ebb760e01b81526001600160a01b037f000000000000000000000000608cb7c3168427091f5994a45baf12083964b4a31690635b16ebb7906102c6908590600401610425565b602060405180830381865afa1580156102e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103079190610532565b92915050565b336103206000546001600160a01b031690565b6001600160a01b03161461021c5760405162461bcd60e51b815260040161016d90610585565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b038216610307565b6103b081610396565b811461025557600080fd5b8035610307816103a7565b8015156103b0565b8035610307816103c6565b600080604083850312156103ef576103ef600080fd5b60006103fb85856103bb565b925050602061040c858286016103ce565b9150509250929050565b61041f81610396565b82525050565b602081016103078284610416565b60006020828403121561044857610448600080fd5b600061045484846103bb565b949350505050565b80151561041f565b60208101610307828461045c565b600f81526000602082016e496e76616c6964206164647265737360881b815291505b5060200190565b6020808252810161030781610472565b600b81526000602082016a105b1c9958591e481cd95d60aa1b81529150610494565b60208082528101610307816104ab565b6020808252810161030781602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b8051610307816103c6565b60006020828403121561054757610547600080fd5b60006104548484610527565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610494565b602080825281016103078161055356fea26469706673582212206fd3a8849bbcbee74ce841363f235c8dcf1d8499fe8ecb8c0c90987e3ab4252a64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000608cb7c3168427091f5994a45baf12083964b4a3
-----Decoded View---------------
Arg [0] : _master (address): 0x608Cb7C3168427091F5994A45Baf12083964B4A3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000608cb7c3168427091f5994a45baf12083964b4a3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.