Files
smom-dbis-138/docs/deployment/ETHERSCAN_V2_VERIFY_OTHER_CHAINS.md
2026-03-02 12:14:09 -08:00

3.5 KiB
Raw Blame History

Verify on Other Blockchains (Same Etherscan API Key)

Etherscan API V2 uses one API key for all supported chains. This repo uses ETHERSCAN_API_KEY in .env for every chain.

V2 endpoint

All verification uses: https://api.etherscan.io/v2/api?chainid=<chainId>&apikey=...
The plugin sends the correct chainId from the Hardhat network.

Networks and verify command

Network Chain ID Verify --network Explorer
Mainnet 1 mainnet etherscan.io
Sepolia 11155111 sepolia sepolia.etherscan.io
BSC 56 bsc bscscan.com
Polygon 137 polygon polygonscan.com
Gnosis 100 gnosis gnosisscan.io
Optimism 10 optimism optimistic.etherscan.io
Base 8453 base basescan.org
Arbitrum 42161 arbitrum arbiscan.io
Avalanche 43114 avalanche snowtrace.io

Cronos (25) is not in Etherscan V2 supported chains; use Cronoscan if needed.

Status: CCIPLogger on mainnet is already verified. CCIPLogger on other chains (BSC, Polygon, etc.) can be verified after deployment and once addresses are set in .env.

Prerequisite: deploy and set .env

  1. Deploy CCIPLogger to each chain (optional):
    ./scripts/deployment/deploy-ccip-logger-all-chains.sh
    Or per chain: NETWORK=bsc npx hardhat run scripts/ccip-deployment/deploy-ccip-logger-multichain.js --network bsc
  2. Add to .env for each deployed chain:
Network Logger address (.env) Router (.env)
BSC CCIP_LOGGER_BSC CCIP_BSC_ROUTER
Polygon CCIP_LOGGER_POLYGON CCIP_POLYGON_ROUTER
Gnosis CCIP_LOGGER_GNOSIS CCIP_GNOSIS_ROUTER
Optimism CCIP_LOGGER_OPTIMISM CCIP_OPTIMISM_ROUTER
Base CCIP_LOGGER_BASE CCIP_BASE_ROUTER
Arbitrum CCIP_LOGGER_ARBITRUM CCIP_ARBITRUM_ROUTER
Avalanche CCIP_LOGGER_AVALANCHE CCIP_AVALANCHE_ROUTER

(Cronos: use CCIP_LOGGER_CRONOS and CCIP_CRONOS_ROUTER for deployment only; verification is on Cronoscan, not Etherscan V2.)

Verify CCIPLogger on other chains

Option A script (recommended)
From repo root (smom-dbis-138):

./scripts/deployment/verify-ccip-logger-other-chains.sh

The script reads CCIP_LOGGER_* and CCIP_*_ROUTER from .env and runs Hardhat verify for each chain that has both set. Requires ETHERSCAN_API_KEY and PRIVATE_KEY in .env.

Option B manual (per chain)
Constructor args: (address router, address authorizedSigner, uint64 expectedSourceChainSelector) with authorizedSigner = 0x0000...0000 and source chain selector 138.

# Example: BSC (replace with your deployed address and router from .env)
npx hardhat verify --network bsc <CCIP_LOGGER_BSC> "<CCIP_BSC_ROUTER>" "0x0000000000000000000000000000000000000000" 138

Same pattern for polygon, gnosis, optimism, base, arbitrum, avalanche. Ref: deploy-ccip-logger-multichain.js, docs.etherscan.io/v2-migration.

Run result (no other-chain deployments yet)

Running verify-ccip-logger-other-chains.sh with current .env: 0 verified, 7 skipped (no CCIP_LOGGER_BSC, CCIP_LOGGER_POLYGON, etc. in .env). After deploying CCIPLogger to BSC/Polygon/etc. and setting the corresponding CCIP_LOGGER_* and CCIP_*_ROUTER in .env, re-run the script to verify on those chains.