# CCIP Relay Service Deployment **Last Updated:** 2026-02-12 **Status:** ✅ Deployed on Proxmox host r630-01 **Purpose:** Custom relay mechanism for delivering CCIP messages from Chain 138 to Ethereum Mainnet --- ## Overview The CCIP Relay Service monitors `MessageSent` events on Chain 138 and relays messages to Ethereum Mainnet. It runs as a Node.js process on the Proxmox host r630-01. ### Deployment Summary | Attribute | Value | |-----------|-------| | **Host** | r630-01 (192.168.11.11) | | **Path** | `/opt/smom-dbis-138/services/relay` | | **Chain 138 RPC** | `RPC_URL_138_PUBLIC` — VMID 2201 (192.168.11.221:8545, besu-rpc-public-1) | | **Source** | `smom-dbis-138/services/relay` (in project) | | **Start block** | `latest` (monitors from current block) | ### Architecture 1. **Chain 138 (Source):** Monitors CCIP Router `MessageSent` events via **RPC_URL_138_PUBLIC** (VMID 2201, 192.168.11.221:8545) 2. **Ethereum Mainnet (Destination):** Submits relay transactions via Infura or configured RPC 3. **Contracts:** CCIPRelayRouter + CCIPRelayBridge on mainnet; CCIP Router + WETH9 Bridge on Chain 138 --- ## Configuration ### Required Environment | Variable | Value | Notes | |----------|-------|-------| | `RPC_URL_138_PUBLIC` (or `RPC_URL_138`) | `http://192.168.11.221:8545` | Chain 138 **Public** RPC — VMID 2201 (relay reads RPC_URL_138_PUBLIC first) | | `RPC_URL_MAINNET` | Infura or `ETHEREUM_MAINNET_RPC` | From smom-dbis-138/.env | | `PRIVATE_KEY` | Relayer private key | Needs ETH on mainnet for gas | | `START_BLOCK` | `latest` | Avoids RPC range limit errors | | `CCIP_ROUTER_CHAIN138` | 0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817 | Chain 138 router | | `CCIP_RELAY_ROUTER_MAINNET` | 0xAd9A228CcEB4cbB612cD165FFB72fE090ff10Afb | Mainnet relay router | | `CCIP_RELAY_BRIDGE_MAINNET` | 0xF9A32F37099c582D28b4dE7Fca6eaC1e5259f939 | Mainnet relay bridge | **Important:** Use `START_BLOCK=latest` to avoid "Requested range exceeds maximum RPC range limit" from Besu when querying `eth_getLogs`. Use `.env.local` with expanded `PRIVATE_KEY` if `${PRIVATE_KEY}` is used in `.env`. --- ## Operational Commands ### Start Relay ```bash ssh root@192.168.11.11 cd /opt/smom-dbis-138/services/relay nohup ./start-relay.sh >> relay-service.log 2>&1 & ``` ### View Logs ```bash ssh root@192.168.11.11 "tail -f /opt/smom-dbis-138/services/relay/relay-service.log" ``` ### Check Status ```bash ssh root@192.168.11.11 "pgrep -af 'node index.js' | grep relay; tail -30 /opt/smom-dbis-138/services/relay/relay-service.log" ``` ### Restart ```bash ssh root@192.168.11.11 "pkill -f 'node index.js' 2>/dev/null; sleep 2; cd /opt/smom-dbis-138/services/relay && nohup ./start-relay.sh >> relay-service.log 2>&1 &" ``` --- ## Deployment (from project root) ### Sync and deploy to Proxmox host ```bash # Create directory ssh root@192.168.11.11 "mkdir -p /opt/smom-dbis-138/services/relay /opt/smom-dbis-138" # Sync relay service (excludes node_modules) rsync -avz --exclude='node_modules' \ smom-dbis-138/services/relay/ \ root@192.168.11.11:/opt/smom-dbis-138/services/relay/ # Sync parent .env for PRIVATE_KEY scp smom-dbis-138/.env root@192.168.11.11:/opt/smom-dbis-138/.env # Install and start ssh root@192.168.11.11 "cd /opt/smom-dbis-138/services/relay && npm install && nohup ./start-relay.sh >> relay-service.log 2>&1 &" ``` --- ## Troubleshooting | Issue | Solution | |-------|----------| | `EHOSTUNREACH 192.168.11.250` | Set `RPC_URL_138_PUBLIC=http://192.168.11.221:8545` (VMID 2201) in `.env` or `.env.local` | | `Requested range exceeds maximum RPC range limit` | Set `START_BLOCK=latest` in `.env` or `.env.local` | | `PRIVATE_KEY required` | Ensure `smom-dbis-138/.env` has `PRIVATE_KEY` or use `.env.local` with expanded key | | Messages not relaying | Check relayer has ETH on mainnet; verify bridge WETH9 balance; see [DEPLOYMENT_GUIDE.md](../../smom-dbis-138/services/relay/DEPLOYMENT_GUIDE.md) | --- ## Related Documentation - **[CCIP_DEPLOYMENT_SPEC.md](CCIP_DEPLOYMENT_SPEC.md)** - CCIP fleet deployment - **[CCIP_BRIDGE_MAINNET_CONNECTION.md](CCIP_BRIDGE_MAINNET_CONNECTION.md)** - Bridge/mainnet connection - **[OPERATIONAL_RUNBOOKS.md](../03-deployment/OPERATIONAL_RUNBOOKS.md#ccip-operations)** - CCIP operations runbook - **[RPC_ENDPOINTS_MASTER.md](../04-configuration/RPC_ENDPOINTS_MASTER.md)** - RPC endpoints (VMID 2201) - **Source:** [smom-dbis-138/services/relay/](../../smom-dbis-138/services/relay/) - Code and DEPLOYMENT_GUIDE.md