Sepolia Testnet

Contract

0x62e731218d0D47305aba2BE3751E7EE9E5520790

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Register Admin V...79771422025-03-25 9:00:004 mins ago1742893200IN
0x62e73121...9E5520790
0 ETH0.000764146.92934913
Register Admin V...79770672025-03-25 8:45:0019 mins ago1742892300IN
0x62e73121...9E5520790
0 ETH0.000542434.91884457
Register Admin V...79765982025-03-25 7:10:241 hr ago1742886624IN
0x62e73121...9E5520790
0 ETH0.000001010.00922239
Register Admin V...79765192025-03-25 6:54:362 hrs ago1742885676IN
0x62e73121...9E5520790
0 ETH0.00000110.00998502
Register Admin V...79741162025-03-24 22:53:1210 hrs ago1742856792IN
0x62e73121...9E5520790
0 ETH0.0060890355.21581343
Register Admin V...79739332025-03-24 22:16:3610 hrs ago1742854596IN
0x62e73121...9E5520790
0 ETH0.0041495937.62879145
Register Admin V...79739162025-03-24 22:13:1210 hrs ago1742854392IN
0x62e73121...9E5520790
0 ETH0.0039387835.71722627
Register Admin V...79738062025-03-24 21:51:1211 hrs ago1742853072IN
0x62e73121...9E5520790
0 ETH0.0041405837.54716811
Register Admin V...79737972025-03-24 21:49:2411 hrs ago1742852964IN
0x62e73121...9E5520790
0 ETH0.0044010739.90927225
Register Admin V...79737812025-03-24 21:46:1211 hrs ago1742852772IN
0x62e73121...9E5520790
0 ETH0.003960135.91055752
Register Admin V...79737122025-03-24 21:32:2411 hrs ago1742851944IN
0x62e73121...9E5520790
0 ETH0.0036860933.42574524
Register Admin V...79736312025-03-24 21:16:1211 hrs ago1742850972IN
0x62e73121...9E5520790
0 ETH0.0038407934.82865616
Register Admin V...79735942025-03-24 21:08:4811 hrs ago1742850528IN
0x62e73121...9E5520790
0 ETH0.0033101330.01652642
Register Admin V...79735892025-03-24 21:07:4811 hrs ago1742850468IN
0x62e73121...9E5520790
0 ETH0.003248229.45493229
Register Admin V...79735602025-03-24 21:02:0012 hrs ago1742850120IN
0x62e73121...9E5520790
0 ETH0.0031268928.35488035
Register Admin V...79735422025-03-24 20:58:2412 hrs ago1742849904IN
0x62e73121...9E5520790
0 ETH0.0032326129.31358131
Register Admin V...79734682025-03-24 20:43:3612 hrs ago1742849016IN
0x62e73121...9E5520790
0 ETH0.0035079831.81413015
Register Admin V...79734242025-03-24 20:34:4812 hrs ago1742848488IN
0x62e73121...9E5520790
0 ETH0.003885735.23589072
Register Admin V...79733632025-03-24 20:22:3612 hrs ago1742847756IN
0x62e73121...9E5520790
0 ETH0.0038858635.23727203
Register Admin V...79733342025-03-24 20:16:4812 hrs ago1742847408IN
0x62e73121...9E5520790
0 ETH0.0033967230.80171631
Register Admin V...79733032025-03-24 20:10:3612 hrs ago1742847036IN
0x62e73121...9E5520790
0 ETH0.0032739829.68871852
Register Admin V...79732872025-03-24 20:07:2412 hrs ago1742846844IN
0x62e73121...9E5520790
0 ETH0.0033478130.35823963
Register Admin V...79732622025-03-24 20:02:2413 hrs ago1742846544IN
0x62e73121...9E5520790
0 ETH0.0042915238.91585556
Register Admin V...79732572025-03-24 20:01:2413 hrs ago1742846484IN
0x62e73121...9E5520790
0 ETH0.0038912835.28645734
Register Admin V...79732572025-03-24 20:01:2413 hrs ago1742846484IN
0x62e73121...9E5520790
0 ETH0.0038912835.28645734
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xdFACbe6F...A85c6801a
The constructor portion of the code might be different and could alter the actual behaviour of the contract

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)

File 1 of 5 : RegistryModuleOwnerCustom.sol
// 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);
  }
}

File 2 of 5 : ITypeAndVersion.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface ITypeAndVersion {
  function typeAndVersion() external pure returns (string memory);
}

File 3 of 5 : IGetCCIPAdmin.sol
// 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);
}

File 4 of 5 : IOwner.sol
// 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);
}

File 5 of 5 : ITokenAdminRegistry.sol
// 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;
}

Settings
{
  "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"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063181f5a771461004657806396ea2f7a14610098578063ff12c354146100ad575b600080fd5b6100826040518060400160405280601f81526020017f52656769737472794d6f64756c654f776e6572437573746f6d20312e352e300081525081565b60405161008f91906102ef565b60405180910390f35b6100ab6100a636600461037e565b6100c0565b005b6100ab6100bb36600461037e565b61013b565b610138818273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013391906103a2565b61018a565b50565b610138818273ffffffffffffffffffffffffffffffffffffffff16638fd6a6ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff811633146101fd576040517fc454d18200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528316602482015260440160405180910390fd5b6040517fe677ae3700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f00000000000000000000000095f29fee11c5c55d26cccf1db6772de953b37b82169063e677ae3790604401600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8085169350851691507f09590fb70af4b833346363965e043a9339e8c7d378b8a2b903c75c277faec4f990600090a35050565b60006020808352835180602085015260005b8181101561031d57858101830151858201604001528201610301565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461013857600080fd5b60006020828403121561039057600080fd5b813561039b8161035c565b9392505050565b6000602082840312156103b457600080fd5b815161039b8161035c56fea164736f6c6343000818000a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.