Files
proxmox/docs/07-ccip/CROSS_NETWORK_FUNDING_BOOTSTRAP_STRATEGY.md

135 lines
5.4 KiB
Markdown
Raw Normal View History

# Cross-Network Funding Bootstrap Strategy
Status date: March 29, 2026
This runbook captures the practical funding graph from Chain 138 after the live relay and recovery work.
## Core constraint
Chain 138 uses a custom router that emits `MessageSent` events but does not natively deliver into public-chain CCIP bridges.
That means:
- a native destination mapping like `138 -> Gnosis` is configuration signal, not proof of a live route
- the practical first-hop routes out of Chain 138 are the relay-backed lanes
- the other public chains are best treated as destinations of the mainnet hub after mainnet is funded
This is confirmed by live execution:
- the relay-backed `138 -> BSC` route worked and was used to bootstrap mainnet
- the original stuck `138 -> Mainnet` transfer was completed after relay funding and replay
- the earlier `138 -> Gnosis` native-bridge attempt did not produce a live delivery path
## Practical route matrix
| Chain | Practical route today | Current prerequisite | Best use |
| --- | --- | --- | --- |
| Mainnet | Relay-backed direct | Mainnet relay bridge must hold enough WETH | Direct `138 -> Mainnet` when relay inventory is funded |
| BSC | Relay-backed direct | BSC relay bridge only covers tiny sends right now | Small direct `138 -> BSC`, or bootstrap mainnet through BSC |
| Avalanche | Relay-backed direct | Avalanche relay bridge only covers tiny sends right now | Tiny direct sends only, or top up inventory first |
| Gnosis | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Gnosis` |
| Cronos | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Cronos` |
| Celo | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Celo` |
| Polygon | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Polygon` |
| Arbitrum | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Arbitrum` |
| Optimism | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Optimism` |
| Base | Via mainnet hub | Bootstrap mainnet first | `138 -> Mainnet`, then `Mainnet -> Base` |
| WEMIX | Deploy-first | Bridge not deployed and no gas seed | Deploy and seed first |
## Best strategy now
### 1. Keep mainnet as the hub
This is the best practical topology.
Why:
- `138 -> Mainnet` is a real relay-backed route when the relay bridge has WETH
- mainnet already has enabled fan-out mappings for Gnosis, Cronos, Celo, Polygon, Arbitrum, Optimism, and Base
- the successful recovery proved that topping up mainnet relay inventory and replaying is operationally viable
### 2. Use BSC as the bootstrap and recovery helper
BSC is the best non-mainnet first hop today because:
- the relay-backed lane is live
- deployer already has native BNB gas
- external bridging from BSC into mainnet is easy
Current limitation:
- BSC relay inventory is only large enough for tiny sends right now
Operational use:
- use it for small bootstrap steps
- use it to refill mainnet when mainnet relay inventory is empty
### 3. Treat Avalanche as a tiny-send lane until it is topped up
Avalanche is structurally similar to BSC but currently weaker because:
- the relay-backed lane exists
- deployer has native gas
- relay inventory is present but still below the `0.01` WETH working threshold
### 4. Treat the native-mapped chains as mainnet destinations
Gnosis, Cronos, Celo, Polygon, Arbitrum, Optimism, and Base are still valuable, but their practical role is:
- `Mainnet -> target` destinations after mainnet bootstrap
- not proven direct Chain 138 first hops
## What to keep funded
The highest-payoff balances to maintain are:
1. Mainnet relay bridge WETH
2. Mainnet bridge LINK
3. BSC relay bridge WETH
4. Avalanche relay bridge WETH if Avalanche is needed
Cleaning up legacy return paths back to Chain 138 is still worthwhile, but it is lower priority than keeping the relay-backed lanes liquid.
## Exact helpers
Live route printer:
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
./scripts/deployment/print-chain138-public-chain-unload-routes.sh
```
Focused examples:
```bash
TARGET_CHAIN=mainnet ./scripts/deployment/print-chain138-public-chain-unload-routes.sh
TARGET_CHAIN=bsc ./scripts/deployment/print-chain138-public-chain-unload-routes.sh
TARGET_CHAIN=polygon ./scripts/deployment/print-chain138-public-chain-unload-routes.sh
UNLOAD_AMOUNT_WEI=30000000000000000 ./scripts/deployment/print-chain138-public-chain-unload-routes.sh
```
Live audit:
```bash
cd /home/intlc/projects/proxmox/smom-dbis-138
./scripts/deployment/audit-funding-bootstrap-routes.sh
```
## Recommended execution order
1. Audit the current route and inventory state.
2. If mainnet relay inventory is sufficient, use direct `138 -> Mainnet`.
3. If mainnet relay inventory is insufficient, use `138 -> BSC` plus the proven external BSC -> Mainnet bridge pattern to refill mainnet.
4. Once mainnet is funded, fan out `Mainnet -> target` for Gnosis, Cronos, Celo, Polygon, Arbitrum, Optimism, and Base.
5. Seed Avalanche relay inventory only if Avalanche needs to become an active first hop too.
## Bottom line
The practical route graph is now:
- first hop from Chain 138 through the relay-backed lanes
- keep mainnet funded and use it as the hub
- use BSC as the proven bootstrap and recovery helper
- treat the native-mapped public-chain bridges as mainnet destinations unless a dedicated relay is added for them