3.5 KiB
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
- 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 - Add to
.envfor 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.