Overview
ETH Balance
ETH Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Add Forwarder | 722 | 923 days ago | IN | 0 ETH | 0.000143 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 2218095 | 711 days ago | 0 ETH | ||||
| 2218095 | 711 days ago | 0 ETH | ||||
| 2218094 | 711 days ago | 0 ETH | ||||
| 2218094 | 711 days ago | 0 ETH | ||||
| 2218094 | 711 days ago | 0 ETH | ||||
| 2218094 | 711 days ago | 0 ETH | ||||
| 2218094 | 711 days ago | 0 ETH | ||||
| 2218093 | 711 days ago | 0 ETH | ||||
| 2218093 | 711 days ago | 0 ETH | ||||
| 2218093 | 711 days ago | 0 ETH | ||||
| 2218092 | 711 days ago | 0 ETH | ||||
| 2218091 | 711 days ago | 0 ETH | ||||
| 2218091 | 711 days ago | 0 ETH | ||||
| 2218090 | 711 days ago | 0 ETH | ||||
| 2218090 | 711 days ago | 0 ETH | ||||
| 2218090 | 711 days ago | 0 ETH | ||||
| 2218087 | 711 days ago | 0 ETH | ||||
| 2218087 | 711 days ago | 0 ETH | ||||
| 2218086 | 711 days ago | 0 ETH | ||||
| 2218085 | 711 days ago | 0 ETH | ||||
| 2218084 | 711 days ago | 0 ETH | ||||
| 2218082 | 711 days ago | 0 ETH | ||||
| 2218081 | 711 days ago | 0 ETH | ||||
| 2218080 | 711 days ago | 0 ETH | ||||
| 2218079 | 711 days ago | 0 ETH |
Loading...
Loading
Contract Name:
ForwarderRegistry
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/IForwarderRegistry.sol";
import "../libraries/Ownable.sol";
/// @notice A simple registry for sender forwarder contracts (usually the routers).
contract ForwarderRegistry is IForwarderRegistry, Ownable {
mapping(address => bool) private _isForwarder;
event AddForwarder(address forwarder);
event RemoveForwarder(address forwarder);
function isForwarder(address forwarder) external view override returns (bool) {
return _isForwarder[forwarder];
}
function addForwarder(address forwarder) external onlyOwner {
require(forwarder != address(0), "Invalid address");
require(!_isForwarder[forwarder], "Already added");
_isForwarder[forwarder] = true;
emit AddForwarder(forwarder);
}
function removeForwarder(address forwarder) external onlyOwner {
require(_isForwarder[forwarder], "Not added");
delete _isForwarder[forwarder];
emit RemoveForwarder(forwarder);
}
}// 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: 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[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"AddForwarder","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":false,"internalType":"address","name":"forwarder","type":"address"}],"name":"RemoveForwarder","type":"event"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"addForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isForwarder","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":"forwarder","type":"address"}],"name":"removeForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6105298061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634d93172d146100675780635c41d2fe1461007c578063715018a61461008f5780638da5cb5b14610097578063abcef554146100b9578063f2fde38b146100f2575b600080fd5b61007a61007536600461036e565b610105565b005b61007a61008a36600461036e565b6101a9565b61007a610265565b6000546001600160a01b03166040516100b091906103a6565b60405180910390f35b6100e56100c736600461036e565b6001600160a01b031660009081526001602052604090205460ff1690565b6040516100b091906103bc565b61007a61010036600461036e565b610279565b61010d6102b3565b6001600160a01b03811660009081526001602052604090205460ff1661014e5760405162461bcd60e51b8152600401610145906103ed565b60405180910390fd5b6001600160a01b03811660009081526001602052604090819020805460ff19169055517f4bbec60f4341dc6a34ef4508cd72c0e9cbc132df5553681fc875a67403fa3dc09061019e9083906103a6565b60405180910390a150565b6101b16102b3565b6001600160a01b0381166101d75760405162461bcd60e51b815260040161014590610423565b6001600160a01b03811660009081526001602052604090205460ff16156102105760405162461bcd60e51b815260040161014590610457565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f8667299a75160d72e8f7df4fe89bf635ef6f5e09cdffd80b7e5f0f4f639099bf9061019e9083906103a6565b61026d6102b3565b61027760006102ec565b565b6102816102b3565b6001600160a01b0381166102a75760405162461bcd60e51b815260040161014590610467565b6102b0816102ec565b50565b336102c66000546001600160a01b031690565b6001600160a01b0316146102775760405162461bcd60e51b8152600401610145906104e3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6103588161033c565b81146102b057600080fd5b80356103498161034f565b60006020828403121561038357610383600080fd5b600061038f8484610363565b949350505050565b6103a08161033c565b82525050565b602081016103498284610397565b8015156103a0565b6020810161034982846103b4565b6009815260006020820168139bdd08185919195960ba1b815291505b5060200190565b60208082528101610349816103ca565b600f81526000602082016e496e76616c6964206164647265737360881b815291506103e6565b60208082528101610349816103fd565b600d81526000602082016c105b1c9958591e481859191959609a1b815291506103e6565b6020808252810161034981610433565b6020808252810161034981602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006103e6565b60208082528101610349816104b156fea264697066735822122039004f7f8e353f4fbbf873f9b34fec659bdd633ba3d118f0a549566d58b4c8b864736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c80634d93172d146100675780635c41d2fe1461007c578063715018a61461008f5780638da5cb5b14610097578063abcef554146100b9578063f2fde38b146100f2575b600080fd5b61007a61007536600461036e565b610105565b005b61007a61008a36600461036e565b6101a9565b61007a610265565b6000546001600160a01b03166040516100b091906103a6565b60405180910390f35b6100e56100c736600461036e565b6001600160a01b031660009081526001602052604090205460ff1690565b6040516100b091906103bc565b61007a61010036600461036e565b610279565b61010d6102b3565b6001600160a01b03811660009081526001602052604090205460ff1661014e5760405162461bcd60e51b8152600401610145906103ed565b60405180910390fd5b6001600160a01b03811660009081526001602052604090819020805460ff19169055517f4bbec60f4341dc6a34ef4508cd72c0e9cbc132df5553681fc875a67403fa3dc09061019e9083906103a6565b60405180910390a150565b6101b16102b3565b6001600160a01b0381166101d75760405162461bcd60e51b815260040161014590610423565b6001600160a01b03811660009081526001602052604090205460ff16156102105760405162461bcd60e51b815260040161014590610457565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517f8667299a75160d72e8f7df4fe89bf635ef6f5e09cdffd80b7e5f0f4f639099bf9061019e9083906103a6565b61026d6102b3565b61027760006102ec565b565b6102816102b3565b6001600160a01b0381166102a75760405162461bcd60e51b815260040161014590610467565b6102b0816102ec565b50565b336102c66000546001600160a01b031690565b6001600160a01b0316146102775760405162461bcd60e51b8152600401610145906104e3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6103588161033c565b81146102b057600080fd5b80356103498161034f565b60006020828403121561038357610383600080fd5b600061038f8484610363565b949350505050565b6103a08161033c565b82525050565b602081016103498284610397565b8015156103a0565b6020810161034982846103b4565b6009815260006020820168139bdd08185919195960ba1b815291505b5060200190565b60208082528101610349816103ca565b600f81526000602082016e496e76616c6964206164647265737360881b815291506103e6565b60208082528101610349816103fd565b600d81526000602082016c105b1c9958591e481859191959609a1b815291506103e6565b6020808252810161034981610433565b6020808252810161034981602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006103e6565b60208082528101610349816104b156fea264697066735822122039004f7f8e353f4fbbf873f9b34fec659bdd633ba3d118f0a549566d58b4c8b864736f6c634300080f0033
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.