treefmt v2.5.0traversed 65 files emitted 62 files for processing formatted 62 files (5 changed) in 396ms M DEFAULT_CONFIGS.md M clanServices/dvt/roles/ecl/lodestar.nix M clanServices/dvt/roles/ecl/nimbus.nix M clanServices/dvt/roles/ecl/prysm.nix M clanServices/dvt/roles/ecl/teku.nix diff --git a/DEFAULT_CONFIGS.md b/DEFAULT_CONFIGS.md index e995885..522b7d5 100644 --- a/DEFAULT_CONFIGS.md +++ b/DEFAULT_CONFIGS.md @@ -12,35 +12,35 @@ reference for client configuration in research and testing environments. ### Universal settings -| Setting | Value | -|---------|-------| -| Systemd stop timeout | 300 s | -| EL P2P port | 30303 | -| EL HTTP-RPC port | 8545 (localhost only) | -| EL Engine API port | 8551 (localhost only) | -| CL P2P port | 9000 | -| Checkpoint sync URL | `https://beaconstate.ethstaker.cc` | -| IPv6 | disabled | -| MEV-Boost | disabled | +| Setting | Value | +| -------------------- | ---------------------------------- | +| Systemd stop timeout | 300 s | +| EL P2P port | 30303 | +| EL HTTP-RPC port | 8545 (localhost only) | +| EL Engine API port | 8551 (localhost only) | +| CL P2P port | 9000 | +| Checkpoint sync URL | `https://beaconstate.ethstaker.cc` | +| IPv6 | disabled | +| MEV-Boost | disabled | ### EL metrics ports -| Client | Port | -|--------|------| -| Geth | 6060 | -| Reth | 6060 | -| Erigon | 6060 | -| Besu | 9545 | +| Client | Port | +| ---------- | ---- | +| Geth | 6060 | +| Reth | 6060 | +| Erigon | 6060 | +| Besu | 9545 | | Nethermind | 6060 | ### CL REST and metrics ports -| Client | REST port | Metrics port | P2P ports | -|--------|-----------|-------------|-----------| -| Nimbus | 5051 | 8008 | 9000 TCP+UDP | -| Prysm | 3500 | 8080 | 13000 TCP / 12000 UDP | -| Teku | 5051 | 8008 | 9000 TCP+UDP | -| Lodestar | 9596 | 8008 | 9000 TCP+UDP | +| Client | REST port | Metrics port | P2P ports | +| -------- | --------- | ------------ | --------------------- | +| Nimbus | 5051 | 8008 | 9000 TCP+UDP | +| Prysm | 3500 | 8080 | 13000 TCP / 12000 UDP | +| Teku | 5051 | 8008 | 9000 TCP+UDP | +| Lodestar | 9596 | 8008 | 9000 TCP+UDP | ### Notable client-specific defaults @@ -56,66 +56,66 @@ reference for client configuration in research and testing environments. ### Role-level options (`clanServices/dvt/roles/ecl.nix`) -| Option | Default | Notes | -|--------|---------|-------| -| `executor.p2p.host` | `0.0.0.0` | all interfaces | -| `executor.p2p.port` | 30303 | | -| `executor.p2p.maxPeers` | 50 | ethpandaops leaves this at client default | -| `executor.p2p.nat` | null | set to `extip:` for public nodes | -| `beacon.p2p.host` | `0.0.0.0` | all interfaces | -| `beacon.p2p.port` | 9000 | | -| `beacon.p2p.maxPeers` | null | use client default | -| `beacon.p2p.nat` | null | set to `extip:` for public nodes | -| `beacon.rest.host` | `127.0.0.1` | overridden to `::` in DVT role for WireGuard access | -| `beacon.rest.port` | 5052 | per-client default used in DVT role | -| `beacon.checkpointSyncUrl` | null | no sane default set yet | +| Option | Default | Notes | +| -------------------------- | ----------- | --------------------------------------------------- | +| `executor.p2p.host` | `0.0.0.0` | all interfaces | +| `executor.p2p.port` | 30303 | | +| `executor.p2p.maxPeers` | 50 | ethpandaops leaves this at client default | +| `executor.p2p.nat` | null | set to `extip:` for public nodes | +| `beacon.p2p.host` | `0.0.0.0` | all interfaces | +| `beacon.p2p.port` | 9000 | | +| `beacon.p2p.maxPeers` | null | use client default | +| `beacon.p2p.nat` | null | set to `extip:` for public nodes | +| `beacon.rest.host` | `127.0.0.1` | overridden to `::` in DVT role for WireGuard access | +| `beacon.rest.port` | 5052 | per-client default used in DVT role | +| `beacon.checkpointSyncUrl` | null | no sane default set yet | ### EL metrics ports -| Client | Our port | Ethpandaops | Match? | -|--------|----------|-------------|--------| -| Geth | 6060 | 6060 | ✓ | -| Reth | 9001 | 6060 | ✗ — inherits ethereum-nix upstream default | -| Erigon | 6060 | 6060 | ✓ | -| Besu | 9545 | 9545 | ✓ | -| Nethermind | 9091 | 6060 | ✗ — hardcoded in our role | +| Client | Our port | Ethpandaops | Match? | +| ---------- | -------- | ----------- | ------------------------------------------ | +| Geth | 6060 | 6060 | ✓ | +| Reth | 9001 | 6060 | ✗ — inherits ethereum-nix upstream default | +| Erigon | 6060 | 6060 | ✓ | +| Besu | 9545 | 9545 | ✓ | +| Nethermind | 9091 | 6060 | ✗ — hardcoded in our role | ### CL REST ports -| Client | Our port | Ethpandaops | Notes | -|--------|----------|-------------|-------| -| Nimbus | 5052 | 5051 | intentional — set via `beacon.rest.port`; both work | -| Prysm | 3500 | 3500 | ✓ | -| Teku | 5051 | 5051 | ✓ | -| Lodestar | 9596 | 9596 | ✓ | +| Client | Our port | Ethpandaops | Notes | +| -------- | -------- | ----------- | --------------------------------------------------- | +| Nimbus | 5052 | 5051 | intentional — set via `beacon.rest.port`; both work | +| Prysm | 3500 | 3500 | ✓ | +| Teku | 5051 | 5051 | ✓ | +| Lodestar | 9596 | 9596 | ✓ | ### Hardcoded DVT-specific behaviours (intentional — not targets for change) These are baked in because DVT correctness requires them: -| Behaviour | Reason | -|-----------|--------| -| `subscribe-all-subnets = true` on all CLs | DVT attestation aggregation requires nodes to aggregate all subnets | -| Engine API at `http://127.0.0.1:8551` via JWT | EL/CL co-location on same machine; localhost keeps the JWT channel short | -| CL REST bound to `::` (all interfaces) | Validators reach beacon nodes over WireGuard overlay; localhost-only would break this | -| Metrics always enabled, scraped by Alloy → Mimir | Observability pipeline is part of the DVT cluster definition | -| Node keys deterministic per machine | Stable enode/ENR addresses across restarts; needed for static peer config | +| Behaviour | Reason | +| ------------------------------------------------ | ------------------------------------------------------------------------------------- | +| `subscribe-all-subnets = true` on all CLs | DVT attestation aggregation requires nodes to aggregate all subnets | +| Engine API at `http://127.0.0.1:8551` via JWT | EL/CL co-location on same machine; localhost keeps the JWT channel short | +| CL REST bound to `::` (all interfaces) | Validators reach beacon nodes over WireGuard overlay; localhost-only would break this | +| Metrics always enabled, scraped by Alloy → Mimir | Observability pipeline is part of the DVT cluster definition | +| Node keys deterministic per machine | Stable enode/ENR addresses across restarts; needed for static peer config | --- ## § 3 — Gaps and discrepancies -| # | Area | Ethpandaops | Ours | Priority | -|---|------|-------------|------|----------| -| 1 | Reth metrics port | 6060 | 9001 | Low — upstream ethereum-nix issue | -| 2 | Nethermind metrics port | 6060 | 9091 | Medium — hardcoded in our role | -| 3 | Nimbus REST port default | 5051 | 5052 | Low — intentional; both work | -| 4 | Checkpoint sync URL | `beaconstate.ethstaker.cc` | null | High — production usability | -| 5 | Teku storage mode | PRUNE | not set (archive) | Medium — bounds disk on non-archival nodes | -| 6 | Besu NAT method | NONE | extip: | Low | -| 7 | Reth WebSocket RPC | enabled on 8546 | not exposed | Low | -| 8 | EL maxPeers default | client default | 50 | Low | -| 9 | Systemd stop timeout | 300 s | not set explicitly | Low | +| # | Area | Ethpandaops | Ours | Priority | +| --- | ------------------------ | -------------------------- | ------------------ | ------------------------------------------ | +| 1 | Reth metrics port | 6060 | 9001 | Low — upstream ethereum-nix issue | +| 2 | Nethermind metrics port | 6060 | 9091 | Medium — hardcoded in our role | +| 3 | Nimbus REST port default | 5051 | 5052 | Low — intentional; both work | +| 4 | Checkpoint sync URL | `beaconstate.ethstaker.cc` | null | High — production usability | +| 5 | Teku storage mode | PRUNE | not set (archive) | Medium — bounds disk on non-archival nodes | +| 6 | Besu NAT method | NONE | extip: | Low | +| 7 | Reth WebSocket RPC | enabled on 8546 | not exposed | Low | +| 8 | EL maxPeers default | client default | 50 | Low | +| 9 | Systemd stop timeout | 300 s | not set explicitly | Low | --- diff --git a/clanServices/dvt/roles/ecl/lodestar.nix b/clanServices/dvt/roles/ecl/lodestar.nix index d300b19..cded24b 100644 --- a/clanServices/dvt/roles/ecl/lodestar.nix +++ b/clanServices/dvt/roles/ecl/lodestar.nix @@ -66,9 +66,10 @@ in }) // (lib.optionalAttrs (settings.network != null) { checkpointSyncUrl = - if settings.beacon.checkpointSyncUrl != null - then settings.beacon.checkpointSyncUrl - else "https://beaconstate.ethstaker.cc"; + if settings.beacon.checkpointSyncUrl != null then + settings.beacon.checkpointSyncUrl + else + "https://beaconstate.ethstaker.cc"; }); }; diff --git a/clanServices/dvt/roles/ecl/nimbus.nix b/clanServices/dvt/roles/ecl/nimbus.nix index 8e708dc..bc907b7 100644 --- a/clanServices/dvt/roles/ecl/nimbus.nix +++ b/clanServices/dvt/roles/ecl/nimbus.nix @@ -33,9 +33,12 @@ in # `trustedNodeSync`. Default to the ethpandaops community sync endpoint for # known public networks; devnets (network = null) skip checkpoint sync. checkpointSyncUrl = - if settings.beacon.checkpointSyncUrl != null then settings.beacon.checkpointSyncUrl - else if settings.network != null then "https://beaconstate.ethstaker.cc" - else null; + if settings.beacon.checkpointSyncUrl != null then + settings.beacon.checkpointSyncUrl + else if settings.network != null then + "https://beaconstate.ethstaker.cc" + else + null; settings = { # for custom / private chains the deployer overrides `network` with a diff --git a/clanServices/dvt/roles/ecl/prysm.nix b/clanServices/dvt/roles/ecl/prysm.nix index 11c158d..2a8a900 100644 --- a/clanServices/dvt/roles/ecl/prysm.nix +++ b/clanServices/dvt/roles/ecl/prysm.nix @@ -67,9 +67,10 @@ in }) // (lib.optionalAttrs (settings.network != null) { "checkpoint-sync-url" = - if settings.beacon.checkpointSyncUrl != null - then settings.beacon.checkpointSyncUrl - else "https://beaconstate.ethstaker.cc"; + if settings.beacon.checkpointSyncUrl != null then + settings.beacon.checkpointSyncUrl + else + "https://beaconstate.ethstaker.cc"; }); }; diff --git a/clanServices/dvt/roles/ecl/teku.nix b/clanServices/dvt/roles/ecl/teku.nix index 47bca50..e5e8e2e 100644 --- a/clanServices/dvt/roles/ecl/teku.nix +++ b/clanServices/dvt/roles/ecl/teku.nix @@ -75,9 +75,10 @@ in }) // (lib.optionalAttrs (settings.network != null) { "checkpoint-sync-url" = - if settings.beacon.checkpointSyncUrl != null - then settings.beacon.checkpointSyncUrl - else "https://beaconstate.ethstaker.cc"; + if settings.beacon.checkpointSyncUrl != null then + settings.beacon.checkpointSyncUrl + else + "https://beaconstate.ethstaker.cc"; }); };