ccip-router 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -21
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -240,6 +240,23 @@ What `withWyriwe()` adds on top of basic:
|
|
|
240
240
|
|
|
241
241
|
---
|
|
242
242
|
|
|
243
|
+
## Node modes
|
|
244
|
+
|
|
245
|
+
ccip-router runs in two modes — any combination can form a mesh.
|
|
246
|
+
|
|
247
|
+
| Mode | Description | Typical host |
|
|
248
|
+
|---|---|---|
|
|
249
|
+
| **Operator node** | Admin dashboard, signing key, ENS records, attestation pipeline | Self-hosted (Docker / VPS / home server) |
|
|
250
|
+
| **Public node** | Mesh sync + CCIP-Read serving only. No admin surface, no key UI. Set `DISABLE_ADMIN=true` | Any PaaS (Railway, Fly, Render) |
|
|
251
|
+
|
|
252
|
+
Both modes use the same Docker image and npm package. The difference is configuration only.
|
|
253
|
+
|
|
254
|
+
**→ [Full deployment guide](DEPLOYMENT.md)** — self-hosted operator setup, Railway one-click public node, reverse proxy config, Cloudflare Tunnel, multi-URL resolver, key generation, security notes.
|
|
255
|
+
|
|
256
|
+
[](https://railway.com/template/ccip-router)
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
243
260
|
## Quick start (setup wizard)
|
|
244
261
|
|
|
245
262
|
```bash
|
|
@@ -266,6 +283,8 @@ npm run dev
|
|
|
266
283
|
|
|
267
284
|
## Environment variables
|
|
268
285
|
|
|
286
|
+
> **Security:** never put `GATEWAY_PRIVATE_KEY` or other secrets inline in a compose file. Use `env_file:` pointing to a `chmod 600` file, or your platform's secrets UI (Railway Variables, Fly secrets, etc.). See [DEPLOYMENT.md](DEPLOYMENT.md) for the recommended pattern.
|
|
287
|
+
|
|
269
288
|
| Variable | Required | Default | Description |
|
|
270
289
|
|---|---|---|---|
|
|
271
290
|
| `GATEWAY_PRIVATE_KEY` | Yes* | — | 32-byte hex signing key (`0x...`). Without it the node runs in dry-run mode (unsigned records). |
|
|
@@ -282,6 +301,12 @@ npm run dev
|
|
|
282
301
|
| `NODE_REGISTRY` | No | — | Deployed `NodeRegistry` contract address. Enables on-chain node registration. |
|
|
283
302
|
| `RPC_URL` | No | — | JSON-RPC endpoint. Required alongside `ATTESTATION_INDEX`. |
|
|
284
303
|
| `MODEL_HASH` | No | — | `keccak256` of model weights CID. Required to activate WYRIWE attestation. |
|
|
304
|
+
| `NODE_URL` | No | — | This node's public URL. Required for VNI (signed node identity). |
|
|
305
|
+
| `AUTO_DISCOVER` | No | `true` | Pull peer lists from synced peers automatically. |
|
|
306
|
+
| `CDN_PROVIDER` | No | — | `pinata` or `storacha`. Enables IPFS upload from admin panel. |
|
|
307
|
+
| `CDN_API_KEY` | No | — | API key / JWT for the configured CDN provider. |
|
|
308
|
+
| `NETWORK_KEY` | No | — | Ethereum address. Messages signed by this key are marked as official network announcements. |
|
|
309
|
+
| `DISABLE_ADMIN` | No | `false` | Set `true` to skip mounting `/admin` and `/static` entirely. Recommended for public PaaS nodes. |
|
|
285
310
|
|
|
286
311
|
\* Can also come from `config.json` written by the setup wizard.
|
|
287
312
|
|
|
@@ -626,27 +651,6 @@ Tests use `SQLiteDB(':memory:')` directly (bypassing the runtime singleton) and
|
|
|
626
651
|
|
|
627
652
|
---
|
|
628
653
|
|
|
629
|
-
## Roadmap
|
|
630
|
-
|
|
631
|
-
### v0.3.0 — IPFS browser resolution
|
|
632
|
-
Native ENS browsers (Brave, eth.link) resolve `contenthash` directly on-chain — they don't follow CCIP-Read. v0.3.0 will add an **IPFS + Browser resolution** admin panel that closes this gap:
|
|
633
|
-
|
|
634
|
-
- Pin a file or CID to IPFS (via Pinata) from the admin panel
|
|
635
|
-
- Set the resulting CID as the ENS name's `contenthash` on-chain (MetaMask, no stored key)
|
|
636
|
-
- Manage multiple names from one panel
|
|
637
|
-
|
|
638
|
-
Combined with `withEns()` (CCIP-Read, dynamic records) this makes the gateway handle both resolution paths:
|
|
639
|
-
|
|
640
|
-
| Path | Who | How |
|
|
641
|
-
|---|---|---|
|
|
642
|
-
| Static pages | Brave / native ENS browsers | `contenthash` on-chain → IPFS |
|
|
643
|
-
| Dynamic data | dapps / smart contracts | `offchainLookup` → CCIP-Read → `withEns()` |
|
|
644
|
-
|
|
645
|
-
### v0.4.0+ — Phase 2 / Phase 3
|
|
646
|
-
See [GATEWAY_DECENTRALIZATION_PLAN.md](https://github.com/Echo-Merlini/ccip-router) for the full decentralisation roadmap (chain as source of truth, incentivised node network).
|
|
647
|
-
|
|
648
|
-
---
|
|
649
|
-
|
|
650
654
|
## Related
|
|
651
655
|
|
|
652
656
|
- [ens-boiler](https://github.com/Echo-Merlini/ens-boiler) — opinionated ENS agent stack built on `ccip-router`
|
package/package.json
CHANGED