Files
proxmox/docs/07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md
defiQUG bea1903ac9
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Sync all local changes: docs, config, scripts, submodule refs, verification evidence
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:46:06 -08:00

7.0 KiB
Raw Blame History

Config-Ready Chains Completion Runbook (Gnosis, Celo, Wemix)

Last Updated: 2026-02-12
Status: Active
Purpose: Complete CCIP bridge setup for chains that are "Config ready" so they become fully operational ().


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) Status
Gnosis Chain 100 465200170687744372 Config ready
Celo 42220 1346049177634351622 Config ready
Wemix 1111 5142893604156789321 Config ready

Prerequisite: Confirm Chainlink CCIP supports each chain (Gnosis, Celo, Wemix). If a chain is not in the CCIP directory, deployment will fail; complete only the chains that are supported.


Completion Steps (per chain)

For each of Gnosis, 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, Celo, Wemix

For each chain you need:

  • RPC URL
  • CCIP Router address (from CCIP directory)
  • LINK token address (chain-specific)
  • WETH9 and WETH10 addresses (chain-specific or deploy)
  • 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 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 Celo Wemix
RPC_URL https://rpc.gnosischain.com https://forno.celo.org https://api.wemix.com
Chain ID 100 42220 1111
CCIP Router See CCIP directory See CCIP directory See CCIP directory
LINK token See CCIP directory See CCIP directory See CCIP directory
Gas token xDAI CELO WEMIX

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, Celo, and Wemix must hold LINK to pay CCIP fees. Recommended: 10 LINK per bridge for initial operations.

# 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 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.

Location: 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