Files
proxmox/docs/07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md
defiQUG 3f76bc9507
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: update master documentation and push to Gitea (2026-03-06)
- 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
2026-03-06 19:11:25 -08:00

10 KiB
Raw Blame History

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

  1. Gas: Deployer needs ~15 CRO (Cronos) and ~0.4 WEMIX (Wemix). Run from repo root: ./scripts/deployment/acquire-cro-and-wemix-gas.sh for instructions and aggregator links.
  2. Env: Copy Cronos and Wemix variables from smom-dbis-138/docs/deployment/ENV_CONFIG_READY_CHAINS.example into smom-dbis-138/.env (RPC, CCIP router, LINK, WETH9/WETH10).
  3. Deploy: cd smom-dbis-138 && ./scripts/deployment/deploy-bridges-config-ready-chains.sh cronos then .../deploy-bridges-config-ready-chains.sh wemix. Set CCIPWETH9_BRIDGE_CRONOS, CCIPWETH10_BRIDGE_CRONOS, CCIPWETH9_BRIDGE_WEMIX, CCIPWETH10_BRIDGE_WEMIX in .env from script output.
  4. Complete: ./scripts/deployment/complete-config-ready-chains.sh to add 138↔Cronos and 138↔Wemix destinations.
  5. 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:

  1. Deploy CCIPWETH9Bridge and CCIPWETH10Bridge on that chain.
  2. Configure Chain 138 → destination: On Chain 138's WETH9/WETH10 bridges, call addDestination(selector, receiverBridge).
  3. Configure destination → Chain 138: On the new chain's bridges, call addDestination(CHAIN138_SELECTOR, chain138Bridge).
  4. 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 address
  • CCIPWETH10_BRIDGE_CHAIN138 Chain 138 WETH10 bridge address
  • RPC_URL or RPC_URL_138 Chain 138 RPC
  • PRIVATE_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.


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 (or RPC_URL/CHAIN138_RPC from 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:

  1. Chain 138 → chain: On Chain 138, call getDestinationChains() on WETH9/WETH10 bridges; the chains selector should appear.
  2. Chain → Chain 138: On the remote chain, call getDestinationChains() on its bridges; CHAIN138_SELECTOR should appear.
  3. Test transfer: Send a small amount (e.g. 0.001 WETH) from Chain 138 to the destination and confirm receipt.

References