2026-03-02 11:37:34 -08:00
# Config-Ready Chains Completion Runbook (Gnosis, Cronos, Celo, Wemix)
2026-02-12 15:46:57 -08:00
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
**Last Updated:** 2026-03-06
2026-02-12 15:46:57 -08:00
**Status:** Active
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
**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.
2026-02-12 15:46:57 -08:00
---
## Overview
The following chains have **selectors and frontend config ready ** but require deployment and configuration to enable bridging from ChainID 138:
2026-03-02 11:37:34 -08:00
| 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 |
2026-02-12 15:46:57 -08:00
2026-03-02 11:37:34 -08:00
**Prerequisite:** Confirm [Chainlink CCIP supports ](https://docs.chain.link/ccip/supported-networks ) each chain. All four are supported.
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
### 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).
2026-03-02 11:37:34 -08:00
---
## 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.
2026-02-12 15:46:57 -08:00
---
## Completion Steps (per chain)
2026-03-02 11:37:34 -08:00
For each of Gnosis, Cronos, Celo, and Wemix:
2026-02-12 15:46:57 -08:00
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).
---
2026-03-02 11:37:34 -08:00
## 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.
2026-02-12 15:46:57 -08:00
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)
2026-03-02 11:37:34 -08:00
- WETH9 and WETH10 addresses (chain-specific; example has WXDAI, WCELO, WWEMIX)
2026-02-12 15:46:57 -08:00
- 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="<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
```
2026-03-02 11:37:34 -08:00
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.
2026-02-12 15:46:57 -08:00
### Environment variables (reference)
2026-03-02 11:37:34 -08:00
| 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) |
2026-02-12 15:46:57 -08:00
---
## 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" \
2026-02-21 15:46:06 -08:00
--rpc-url "${RPC_URL_138:-$CHAIN138_RPC}" --private-key "$PRIVATE_KEY" --legacy
2026-02-12 15:46:57 -08:00
```
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
2026-03-02 11:37:34 -08:00
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:
2026-02-12 15:46:57 -08:00
```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"
```
2026-03-02 11:37:34 -08:00
Repeat for WETH10 on each chain, and for Cronos, Celo, and Wemix using their LINK and RPC.
2026-02-12 15:46:57 -08:00
---
## Automated script
Use the completion script to add destinations and print exact commands for deployment and funding when addresses are missing.
2026-03-02 11:37:34 -08:00
**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`
2026-02-12 15:46:57 -08:00
**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:**
2026-02-21 15:46:06 -08:00
- Chain 138: `CCIPWETH9_BRIDGE_CHAIN138` , `CCIPWETH10_BRIDGE_CHAIN138` , `RPC_URL_138` (or `RPC_URL` /`CHAIN138_RPC` from loader), `PRIVATE_KEY` , `CHAIN138_SELECTOR`
2026-02-12 15:46:57 -08:00
- 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 )