Source Code
Overview
POL Balance
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 97 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Register Admin V... | 29939532 | 47 hrs ago | IN | 0 POL | 0.00281202 | ||||
| Register Admin V... | 29937880 | 2 days ago | IN | 0 POL | 0.00311671 | ||||
| Register Admin V... | 29805894 | 4 days ago | IN | 0 POL | 0.00345807 | ||||
| Register Admin V... | 29803585 | 4 days ago | IN | 0 POL | 0.00289306 | ||||
| Register Admin V... | 29768154 | 5 days ago | IN | 0 POL | 0.00389726 | ||||
| Register Admin V... | 29672777 | 7 days ago | IN | 0 POL | 0.00281332 | ||||
| Register Admin V... | 29638612 | 8 days ago | IN | 0 POL | 0.00310935 | ||||
| Register Admin V... | 29635751 | 8 days ago | IN | 0 POL | 0.00320552 | ||||
| Register Admin V... | 29633889 | 8 days ago | IN | 0 POL | 0.00320517 | ||||
| Register Admin V... | 29597655 | 9 days ago | IN | 0 POL | 0.00089813 | ||||
| Register Admin V... | 29594926 | 9 days ago | IN | 0 POL | 0.00331467 | ||||
| Register Admin V... | 29591904 | 9 days ago | IN | 0 POL | 0.00295263 | ||||
| Register Admin V... | 28896745 | 25 days ago | IN | 0 POL | 0.00881792 | ||||
| Register Admin V... | 28735250 | 28 days ago | IN | 0 POL | 0.00364146 | ||||
| Register Admin V... | 28461054 | 35 days ago | IN | 0 POL | 0.00289857 | ||||
| Register Admin V... | 28426585 | 36 days ago | IN | 0 POL | 0.00289857 | ||||
| Register Admin V... | 27658513 | 53 days ago | IN | 0 POL | 0.00518598 | ||||
| Register Admin V... | 27643631 | 54 days ago | IN | 0 POL | 0.00422004 | ||||
| Register Admin V... | 26002153 | 92 days ago | IN | 0 POL | 0.00650309 | ||||
| Register Admin V... | 25585251 | 103 days ago | IN | 0 POL | 0.01092672 | ||||
| Register Admin V... | 25585053 | 103 days ago | IN | 0 POL | 0.01092672 | ||||
| Register Admin V... | 24003320 | 142 days ago | IN | 0 POL | 0.00646556 | ||||
| Register Admin V... | 23978090 | 143 days ago | IN | 0 POL | 0.00467538 | ||||
| Register Admin V... | 23978062 | 143 days ago | IN | 0 POL | 0.00467538 | ||||
| Register Admin V... | 23619807 | 152 days ago | IN | 0 POL | 0.00377488 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RegistryModuleOwnerCustom
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 26000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.24;
import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
import {IGetCCIPAdmin} from "../interfaces/IGetCCIPAdmin.sol";
import {IOwner} from "../interfaces/IOwner.sol";
import {ITokenAdminRegistry} from "../interfaces/ITokenAdminRegistry.sol";
contract RegistryModuleOwnerCustom is ITypeAndVersion {
error CanOnlySelfRegister(address admin, address token);
error AddressZero();
event AdministratorRegistered(address indexed token, address indexed administrator);
string public constant override typeAndVersion = "RegistryModuleOwnerCustom 1.5.0";
// The TokenAdminRegistry contract
ITokenAdminRegistry internal immutable i_tokenAdminRegistry;
constructor(address tokenAdminRegistry) {
if (tokenAdminRegistry == address(0)) {
revert AddressZero();
}
i_tokenAdminRegistry = ITokenAdminRegistry(tokenAdminRegistry);
}
/// @notice Registers the admin of the token using the `getCCIPAdmin` method.
/// @param token The token to register the admin for.
/// @dev The caller must be the admin returned by the `getCCIPAdmin` method.
function registerAdminViaGetCCIPAdmin(address token) external {
_registerAdmin(token, IGetCCIPAdmin(token).getCCIPAdmin());
}
/// @notice Registers the admin of the token using the `owner` method.
/// @param token The token to register the admin for.
/// @dev The caller must be the admin returned by the `owner` method.
function registerAdminViaOwner(address token) external {
_registerAdmin(token, IOwner(token).owner());
}
/// @notice Registers the admin of the token to msg.sender given that the
/// admin is equal to msg.sender.
/// @param token The token to register the admin for.
/// @param admin The caller must be the admin.
function _registerAdmin(address token, address admin) internal {
if (admin != msg.sender) {
revert CanOnlySelfRegister(admin, token);
}
i_tokenAdminRegistry.proposeAdministrator(token, admin);
emit AdministratorRegistered(token, admin);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface ITypeAndVersion {
function typeAndVersion() external pure returns (string memory);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IGetCCIPAdmin {
/// @notice Returns the admin of the token.
/// @dev This method is named to never conflict with existing methods.
function getCCIPAdmin() external view returns (address);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IOwner {
/// @notice Returns the owner of the contract.
/// @dev This method is named to match with the OpenZeppelin Ownable contract.
function owner() external view returns (address);
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
interface ITokenAdminRegistry {
/// @notice Returns the pool for the given token.
function getPool(address token) external view returns (address);
/// @notice Proposes an administrator for the given token as pending administrator.
/// @param localToken The token to register the administrator for.
/// @param administrator The administrator to register.
function proposeAdministrator(address localToken, address administrator) external;
}{
"remappings": [
"forge-std/=src/v0.8/vendor/forge-std/src/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@arbitrum/=node_modules/@arbitrum/",
"hardhat/=node_modules/hardhat/",
"@eth-optimism/=node_modules/@eth-optimism/",
"@scroll-tech/=node_modules/@scroll-tech/"
],
"optimizer": {
"enabled": true,
"runs": 26000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"tokenAdminRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AddressZero","type":"error"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"CanOnlySelfRegister","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"administrator","type":"address"}],"name":"AdministratorRegistered","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"registerAdminViaGetCCIPAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"registerAdminViaOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405161047e38038061047e83398101604081905261002f91610067565b6001600160a01b03811661005657604051639fabe1c160e01b815260040160405180910390fd5b6001600160a01b0316608052610097565b60006020828403121561007957600080fd5b81516001600160a01b038116811461009057600080fd5b9392505050565b6080516103cc6100b2600039600061024a01526103cc6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063181f5a771461004657806396ea2f7a14610098578063ff12c354146100ad575b600080fd5b6100826040518060400160405280601f81526020017f52656769737472794d6f64756c654f776e6572437573746f6d20312e352e300081525081565b60405161008f91906102ef565b60405180910390f35b6100ab6100a636600461037e565b6100c0565b005b6100ab6100bb36600461037e565b61013b565b610138818273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013391906103a2565b61018a565b50565b610138818273ffffffffffffffffffffffffffffffffffffffff16638fd6a6ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff811633146101fd576040517fc454d18200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528316602482015260440160405180910390fd5b6040517fe677ae3700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e677ae3790604401600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8085169350851691507f09590fb70af4b833346363965e043a9339e8c7d378b8a2b903c75c277faec4f990600090a35050565b60006020808352835180602085015260005b8181101561031d57858101830151858201604001528201610301565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461013857600080fd5b60006020828403121561039057600080fd5b813561039b8161035c565b9392505050565b6000602082840312156103b457600080fd5b815161039b8161035c56fea164736f6c6343000818000a0000000000000000000000001e73f6842d7afdd78957ac143d1f315404dd9e5b
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063181f5a771461004657806396ea2f7a14610098578063ff12c354146100ad575b600080fd5b6100826040518060400160405280601f81526020017f52656769737472794d6f64756c654f776e6572437573746f6d20312e352e300081525081565b60405161008f91906102ef565b60405180910390f35b6100ab6100a636600461037e565b6100c0565b005b6100ab6100bb36600461037e565b61013b565b610138818273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013391906103a2565b61018a565b50565b610138818273ffffffffffffffffffffffffffffffffffffffff16638fd6a6ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff811633146101fd576040517fc454d18200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528316602482015260440160405180910390fd5b6040517fe677ae3700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f0000000000000000000000001e73f6842d7afdd78957ac143d1f315404dd9e5b169063e677ae3790604401600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8085169350851691507f09590fb70af4b833346363965e043a9339e8c7d378b8a2b903c75c277faec4f990600090a35050565b60006020808352835180602085015260005b8181101561031d57858101830151858201604001528201610301565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461013857600080fd5b60006020828403121561039057600080fd5b813561039b8161035c565b9392505050565b6000602082840312156103b457600080fd5b815161039b8161035c56fea164736f6c6343000818000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001e73f6842d7afdd78957ac143d1f315404dd9e5b
-----Decoded View---------------
Arg [0] : tokenAdminRegistry (address): 0x1e73f6842d7afDD78957ac143d1f315404Dd9e5B
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e73f6842d7afdd78957ac143d1f315404dd9e5b
Loading...
Loading
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.