- MASTER_INDEX: Last Updated 2026-03-06; status 59/59 contracts; add NEXT_STEPS_LIST, CONTRACT_NEXT_STEPS_LIST - docs/README, NEXT_STEPS_INDEX, 06-besu/MASTER_INDEX: Last Updated 2026-03-06 - Contract check script: 59 addresses (PMM, vault/reserve, CompliantFiatTokens); canonical CCIP/router - New docs: EXECUTION_CHECKLIST, NEXT_STEPS_LIST, DOTENV_AUDIT, ADDITIONAL_PATHS, deployer gas runbook, WEMIX_ACQUISITION_TABLED, etc. - Config: deployer-gas-routes, cro-wemix-swap-routes, routing-registry, token-mapping - Scripts: check-contracts-on-chain-138, check-pmm-pool-balances-chain138, deployer-gas-auto-route, acquire-cro-and-wemix-gas - Operator rule: operator-lan-access-check.mdc Made-with: Cursor
10 KiB
Config-Ready Chains Completion Runbook (Gnosis, Cronos, Celo, Wemix)
Last Updated: 2026-03-06
Status: Active
Purpose: Complete CCIP bridge setup for chains that are "Config ready" so they become fully operational (✅). Add Cronos and Wemix by funding deployer gas (CRO, WEMIX), then deploying bridges and running complete-config.
Overview
The following chains have selectors and frontend config ready but require deployment and configuration to enable bridging from ChainID 138:
| Chain | Chain ID | Selector (decimal) | Gas Token | Status |
|---|---|---|---|---|
| Gnosis Chain | 100 | 465200170687744372 | xDAI (0.1) | Config ready |
| Cronos | 25 | 1456215246176062136 | CRO (1) | Config ready |
| Celo | 42220 | 1346049177634351622 | CELO (0.1) | Config ready |
| Wemix | 1111 | 5142893604156789321 | WEMIX (0.4) | Config ready |
Prerequisite: Confirm Chainlink CCIP supports each chain. All four are supported.
Quick: Add Cronos and Wemix
- Gas: Deployer needs ~15 CRO (Cronos) and ~0.4 WEMIX (Wemix). Run from repo root:
./scripts/deployment/acquire-cro-and-wemix-gas.shfor instructions and aggregator links. - Env: Copy Cronos and Wemix variables from
smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.exampleintosmom-dbis-138/.env(RPC, CCIP router, LINK, WETH9/WETH10). - Deploy:
cd smom-dbis-138 && ./scripts/deployment/deploy-bridges-config-ready-chains.sh cronosthen.../deploy-bridges-config-ready-chains.sh wemix. SetCCIPWETH9_BRIDGE_CRONOS,CCIPWETH10_BRIDGE_CRONOS,CCIPWETH9_BRIDGE_WEMIX,CCIPWETH10_BRIDGE_WEMIXin.envfrom script output. - Complete:
./scripts/deployment/complete-config-ready-chains.shto add 138↔Cronos and 138↔Wemix destinations. - Fund LINK on each new bridge (see Step 4 below).
Preflight (RPC + Gas Balance)
Before deploying, ensure RPC URLs are set and deployer has native gas on each chain:
cd smom-dbis-138
./scripts/deployment/preflight-config-ready-chains.sh [gnosis|cronos|celo|wemix|all]
Fixes any RPC or balance issues before proceeding.
Completion Steps (per chain)
For each of Gnosis, Cronos, Celo, and Wemix:
- Deploy CCIPWETH9Bridge and CCIPWETH10Bridge on that chain.
- Configure Chain 138 → destination: On Chain 138's WETH9/WETH10 bridges, call
addDestination(selector, receiverBridge). - Configure destination → Chain 138: On the new chain's bridges, call
addDestination(CHAIN138_SELECTOR, chain138Bridge). - Fund each new bridge with LINK for CCIP fees (recommended: 10 LINK per bridge).
Step 1: Deploy bridges on Gnosis, Cronos, Celo, Wemix
Operator one-time setup: Copy the non-secret vars from smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example into smom-dbis-138/.env. Ensure PRIVATE_KEY is set and the deployer has native gas on each chain (xDAI, CRO, CELO, WEMIX). Then run:
cd smom-dbis-138
# Test first (no on-chain tx)
DRY_RUN=1 ./scripts/deployment/deploy-bridges-config-ready-chains.sh cronos
SIMULATE=1 ./scripts/deployment/deploy-bridges-config-ready-chains.sh cronos # forge without --broadcast
# Deploy (preflight runs automatically)
./scripts/deployment/deploy-bridges-config-ready-chains.sh gnosis # or cronos | celo | wemix | all
Record the logged bridge addresses and set CCIPWETH9_BRIDGE_GNOSIS, CCIPWETH10_BRIDGE_GNOSIS (and CELO/WEMIX) in .env. Then run ./scripts/deployment/complete-config-ready-chains.sh to add destinations.
For each chain you need:
- RPC URL
- CCIP Router address (from CCIP directory)
- LINK token address (chain-specific)
- WETH9 and WETH10 addresses (chain-specific; example has WXDAI, WCELO, WWEMIX)
- Deployer private key with native gas token (xDAI for Gnosis, CELO for Celo, WEMIX for Wemix)
Deploy command (per chain)
From smom-dbis-138/:
# Example: Gnosis Chain
export RPC_URL="https://rpc.gnosischain.com"
export CCIP_ROUTER_ADDRESS="<from CCIP directory>"
export LINK_TOKEN_ADDRESS="<Gnosis LINK address>"
export WETH9_ADDRESS="<Gnosis WETH9 or 0x0 to skip>"
export WETH10_ADDRESS="<Gnosis WETH10 or 0x0 to skip>"
export PRIVATE_KEY="0x..."
forge script script/deploy/bridge/DeployWETHBridges.s.sol:DeployWETHBridges \
--rpc-url "$RPC_URL" \
--broadcast \
-vvvv
Repeat for Cronos, Celo, and Wemix with their RPCs, routers, and LINK/WETH addresses. Record the deployed bridge addresses for Step 2 and Step 3.
Environment variables (reference)
| Variable | Gnosis | Cronos | Celo | Wemix |
|---|---|---|---|---|
| RPC_URL | https://rpc.gnosischain.com | https://evm.cronos.org | https://forno.celo.org | https://api.wemix.com |
| Chain ID | 100 | 25 | 42220 | 1111 |
| CCIP Router | See CCIP directory | 0xE26B0A098D861d5C7d9434aD471c0572Ca6EAa67 | See CCIP directory | See CCIP directory |
| LINK token | See CCIP directory | 0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85 | See CCIP directory | See CCIP directory |
| Gas token | xDAI (0.1) | CRO (1) | CELO (0.1) | WEMIX (0.4) |
Step 2: Add destinations on Chain 138 bridges
On Chain 138, add each new chain as a destination so that users can bridge from Chain 138 to Gnosis/Celo/Wemix.
Required in .env (in smom-dbis-138/):
CCIPWETH9_BRIDGE_CHAIN138– Chain 138 WETH9 bridge addressCCIPWETH10_BRIDGE_CHAIN138– Chain 138 WETH10 bridge addressRPC_URLorRPC_URL_138– Chain 138 RPCPRIVATE_KEY– admin key for Chain 138 bridges
Run the completion script (see below), or run manually:
# Decimal selectors (use these in cast)
GNOSIS_SELECTOR=465200170687744372
CELO_SELECTOR=1346049177634351622
WEMIX_SELECTOR=5142893604156789321
# Example: Add Gnosis WETH9 as destination on Chain 138 WETH9 bridge
cast send "$CCIPWETH9_BRIDGE_CHAIN138" "addDestination(uint64,address)" \
$GNOSIS_SELECTOR "$CCIPWETH9_BRIDGE_GNOSIS" \
--rpc-url "${RPC_URL_138:-$CHAIN138_RPC}" --private-key "$PRIVATE_KEY" --legacy
Repeat for WETH10, and for Celo and Wemix using their bridge addresses and selectors.
Step 3: Add Chain 138 as destination on Gnosis/Celo/Wemix bridges
On each of Gnosis, Celo, and Wemix, configure their new bridges to accept messages from Chain 138 by adding Chain 138 as a destination.
You need the Chain 138 CCIP chain selector (from your CCIP Router on Chain 138 or from Chainlink). Set it in .env as CHAIN138_SELECTOR (decimal).
# Example: On Gnosis WETH9 bridge, add Chain 138 WETH9 bridge as destination
cast send "$CCIPWETH9_BRIDGE_GNOSIS" "addDestination(uint64,address)" \
"$CHAIN138_SELECTOR" "$CCIPWETH9_BRIDGE_CHAIN138" \
--rpc-url "$GNOSIS_RPC" --private-key "$PRIVATE_KEY" --legacy
Repeat for WETH10 on Gnosis, and for both bridges on Celo and Wemix.
Step 4: Fund bridges with LINK
Each bridge on Gnosis, Cronos, Celo, and Wemix must hold LINK to pay CCIP fees. Recommended: 10 LINK per bridge for initial operations (20 LINK per chain for WETH9 + WETH10).
Prerequisite: The deployer must have LINK on each chain. Check balances first:
cd smom-dbis-138
./scripts/deployment/check-link-balance-config-ready-chains.sh all
If balances are insufficient, acquire LINK on each chain (bridge from mainnet or DEX), then run:
./scripts/deployment/fund-ccip-bridges-with-link.sh
Or fund manually per chain:
# Example: Fund Gnosis WETH9 bridge (amount in 18 decimals, 10 LINK)
cast send "$LINK_TOKEN_GNOSIS" "transfer(address,uint256)" \
"$CCIPWETH9_BRIDGE_GNOSIS" "10000000000000000000" \
--rpc-url "$GNOSIS_RPC" --private-key "$PRIVATE_KEY"
Repeat for WETH10 on each chain, and for Cronos, Celo, and Wemix using their LINK and RPC.
Automated script
Use the completion script to add destinations and print exact commands for deployment and funding when addresses are missing.
Deploy bridges first: smom-dbis-138/scripts/deployment/deploy-bridges-config-ready-chains.sh [gnosis|celo|wemix|all] — requires per-chain RPC, CCIP_ROUTER_, LINK_TOKEN_, WETH9_, WETH10_ in .env (see smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example).
Then configure destinations: smom-dbis-138/scripts/deployment/complete-config-ready-chains.sh
Usage:
cd smom-dbis-138
source .env 2>/dev/null || true
# Configure only (requires bridge addresses in .env)
./scripts/deployment/complete-config-ready-chains.sh
# Dry run (print commands only)
DRY_RUN=1 ./scripts/deployment/complete-config-ready-chains.sh
Required .env variables for full configuration:
- Chain 138:
CCIPWETH9_BRIDGE_CHAIN138,CCIPWETH10_BRIDGE_CHAIN138,RPC_URL_138(orRPC_URL/CHAIN138_RPCfrom loader),PRIVATE_KEY,CHAIN138_SELECTOR - Gnosis:
CCIPWETH9_BRIDGE_GNOSIS,CCIPWETH10_BRIDGE_GNOSIS,GNOSIS_RPC - Celo:
CCIPWETH9_BRIDGE_CELO,CCIPWETH10_BRIDGE_CELO,CELO_RPC - Wemix:
CCIPWETH9_BRIDGE_WEMIX,CCIPWETH10_BRIDGE_WEMIX,WEMIX_RPC
See smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example for a full example.
Verification
After completing all steps for a chain:
- Chain 138 → chain: On Chain 138, call
getDestinationChains()on WETH9/WETH10 bridges; the chain’s selector should appear. - Chain → Chain 138: On the remote chain, call
getDestinationChains()on its bridges;CHAIN138_SELECTORshould appear. - Test transfer: Send a small amount (e.g. 0.001 WETH) from Chain 138 to the destination and confirm receipt.