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

238 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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="<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:
```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 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
- [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)