# 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](https://docs.chain.link/ccip/supported-networks) 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: ```bash 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: ```bash 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](https://docs.chain.link/ccip/supported-networks)) - 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/`: ```bash # Example: Gnosis Chain export RPC_URL="https://rpc.gnosischain.com" export CCIP_ROUTER_ADDRESS="" export LINK_TOKEN_ADDRESS="" export WETH9_ADDRESS="" export WETH10_ADDRESS="" 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: ```bash # 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). ```bash # 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: ```bash 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: ```bash ./scripts/deployment/fund-ccip-bridges-with-link.sh ``` Or fund manually per chain: ```bash # 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:** ```bash 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 chain’s 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 - [CCIP Chain Selectors](../../docs/11-references/CCIP_CHAIN_SELECTORS.md) - [BRIDGE_CONFIGURATION.md](../../smom-dbis-138/docs/deployment/BRIDGE_CONFIGURATION.md) - [BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md](../../docs/11-references/BRIDGE_CHAINS_IMPLEMENTATION_COMPLETE.md) - [CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md](../../docs/11-references/CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md) - [Chainlink CCIP supported networks](https://docs.chain.link/ccip/supported-networks)