treefmt-check
x86_64-linux.treefmt
· build #5
· raw
1treefmt v2.5.0traversed 65 files2emitted 62 files for processing3formatted 62 files (5 changed) in 396ms4 M DEFAULT_CONFIGS.md5 M clanServices/dvt/roles/ecl/lodestar.nix6 M clanServices/dvt/roles/ecl/nimbus.nix7 M clanServices/dvt/roles/ecl/prysm.nix8 M clanServices/dvt/roles/ecl/teku.nix9diff --git a/DEFAULT_CONFIGS.md b/DEFAULT_CONFIGS.md10index e995885..522b7d5 10064411--- a/DEFAULT_CONFIGS.md12+++ b/DEFAULT_CONFIGS.md13@@ -12,35 +12,35 @@ reference for client configuration in research and testing environments.14 15 ### Universal settings16 17-| Setting | Value |18-|---------|-------|19-| Systemd stop timeout | 300 s |20-| EL P2P port | 30303 |21-| EL HTTP-RPC port | 8545 (localhost only) |22-| EL Engine API port | 8551 (localhost only) |23-| CL P2P port | 9000 |24-| Checkpoint sync URL | `https://beaconstate.ethstaker.cc` |25-| IPv6 | disabled |26-| MEV-Boost | disabled |27+| Setting | Value |28+| -------------------- | ---------------------------------- |29+| Systemd stop timeout | 300 s |30+| EL P2P port | 30303 |31+| EL HTTP-RPC port | 8545 (localhost only) |32+| EL Engine API port | 8551 (localhost only) |33+| CL P2P port | 9000 |34+| Checkpoint sync URL | `https://beaconstate.ethstaker.cc` |35+| IPv6 | disabled |36+| MEV-Boost | disabled |37 38 ### EL metrics ports39 40-| Client | Port |41-|--------|------|42-| Geth | 6060 |43-| Reth | 6060 |44-| Erigon | 6060 |45-| Besu | 9545 |46+| Client | Port |47+| ---------- | ---- |48+| Geth | 6060 |49+| Reth | 6060 |50+| Erigon | 6060 |51+| Besu | 9545 |52 | Nethermind | 6060 |53 54 ### CL REST and metrics ports55 56-| Client | REST port | Metrics port | P2P ports |57-|--------|-----------|-------------|-----------|58-| Nimbus | 5051 | 8008 | 9000 TCP+UDP |59-| Prysm | 3500 | 8080 | 13000 TCP / 12000 UDP |60-| Teku | 5051 | 8008 | 9000 TCP+UDP |61-| Lodestar | 9596 | 8008 | 9000 TCP+UDP |62+| Client | REST port | Metrics port | P2P ports |63+| -------- | --------- | ------------ | --------------------- |64+| Nimbus | 5051 | 8008 | 9000 TCP+UDP |65+| Prysm | 3500 | 8080 | 13000 TCP / 12000 UDP |66+| Teku | 5051 | 8008 | 9000 TCP+UDP |67+| Lodestar | 9596 | 8008 | 9000 TCP+UDP |68 69 ### Notable client-specific defaults70 71@@ -56,66 +56,66 @@ reference for client configuration in research and testing environments.72 73 ### Role-level options (`clanServices/dvt/roles/ecl.nix`)74 75-| Option | Default | Notes |76-|--------|---------|-------|77-| `executor.p2p.host` | `0.0.0.0` | all interfaces |78-| `executor.p2p.port` | 30303 | |79-| `executor.p2p.maxPeers` | 50 | ethpandaops leaves this at client default |80-| `executor.p2p.nat` | null | set to `extip:<IP>` for public nodes |81-| `beacon.p2p.host` | `0.0.0.0` | all interfaces |82-| `beacon.p2p.port` | 9000 | |83-| `beacon.p2p.maxPeers` | null | use client default |84-| `beacon.p2p.nat` | null | set to `extip:<IP>` for public nodes |85-| `beacon.rest.host` | `127.0.0.1` | overridden to `::` in DVT role for WireGuard access |86-| `beacon.rest.port` | 5052 | per-client default used in DVT role |87-| `beacon.checkpointSyncUrl` | null | no sane default set yet |88+| Option | Default | Notes |89+| -------------------------- | ----------- | --------------------------------------------------- |90+| `executor.p2p.host` | `0.0.0.0` | all interfaces |91+| `executor.p2p.port` | 30303 | |92+| `executor.p2p.maxPeers` | 50 | ethpandaops leaves this at client default |93+| `executor.p2p.nat` | null | set to `extip:<IP>` for public nodes |94+| `beacon.p2p.host` | `0.0.0.0` | all interfaces |95+| `beacon.p2p.port` | 9000 | |96+| `beacon.p2p.maxPeers` | null | use client default |97+| `beacon.p2p.nat` | null | set to `extip:<IP>` for public nodes |98+| `beacon.rest.host` | `127.0.0.1` | overridden to `::` in DVT role for WireGuard access |99+| `beacon.rest.port` | 5052 | per-client default used in DVT role |100+| `beacon.checkpointSyncUrl` | null | no sane default set yet |101 102 ### EL metrics ports103 104-| Client | Our port | Ethpandaops | Match? |105-|--------|----------|-------------|--------|106-| Geth | 6060 | 6060 | ✓ |107-| Reth | 9001 | 6060 | ✗ — inherits ethereum-nix upstream default |108-| Erigon | 6060 | 6060 | ✓ |109-| Besu | 9545 | 9545 | ✓ |110-| Nethermind | 9091 | 6060 | ✗ — hardcoded in our role |111+| Client | Our port | Ethpandaops | Match? |112+| ---------- | -------- | ----------- | ------------------------------------------ |113+| Geth | 6060 | 6060 | ✓ |114+| Reth | 9001 | 6060 | ✗ — inherits ethereum-nix upstream default |115+| Erigon | 6060 | 6060 | ✓ |116+| Besu | 9545 | 9545 | ✓ |117+| Nethermind | 9091 | 6060 | ✗ — hardcoded in our role |118 119 ### CL REST ports120 121-| Client | Our port | Ethpandaops | Notes |122-|--------|----------|-------------|-------|123-| Nimbus | 5052 | 5051 | intentional — set via `beacon.rest.port`; both work |124-| Prysm | 3500 | 3500 | ✓ |125-| Teku | 5051 | 5051 | ✓ |126-| Lodestar | 9596 | 9596 | ✓ |127+| Client | Our port | Ethpandaops | Notes |128+| -------- | -------- | ----------- | --------------------------------------------------- |129+| Nimbus | 5052 | 5051 | intentional — set via `beacon.rest.port`; both work |130+| Prysm | 3500 | 3500 | ✓ |131+| Teku | 5051 | 5051 | ✓ |132+| Lodestar | 9596 | 9596 | ✓ |133 134 ### Hardcoded DVT-specific behaviours (intentional — not targets for change)135 136 These are baked in because DVT correctness requires them:137 138-| Behaviour | Reason |139-|-----------|--------|140-| `subscribe-all-subnets = true` on all CLs | DVT attestation aggregation requires nodes to aggregate all subnets |141-| Engine API at `http://127.0.0.1:8551` via JWT | EL/CL co-location on same machine; localhost keeps the JWT channel short |142-| CL REST bound to `::` (all interfaces) | Validators reach beacon nodes over WireGuard overlay; localhost-only would break this |143-| Metrics always enabled, scraped by Alloy → Mimir | Observability pipeline is part of the DVT cluster definition |144-| Node keys deterministic per machine | Stable enode/ENR addresses across restarts; needed for static peer config |145+| Behaviour | Reason |146+| ------------------------------------------------ | ------------------------------------------------------------------------------------- |147+| `subscribe-all-subnets = true` on all CLs | DVT attestation aggregation requires nodes to aggregate all subnets |148+| Engine API at `http://127.0.0.1:8551` via JWT | EL/CL co-location on same machine; localhost keeps the JWT channel short |149+| CL REST bound to `::` (all interfaces) | Validators reach beacon nodes over WireGuard overlay; localhost-only would break this |150+| Metrics always enabled, scraped by Alloy → Mimir | Observability pipeline is part of the DVT cluster definition |151+| Node keys deterministic per machine | Stable enode/ENR addresses across restarts; needed for static peer config |152 153 ---154 155 ## § 3 — Gaps and discrepancies156 157-| # | Area | Ethpandaops | Ours | Priority |158-|---|------|-------------|------|----------|159-| 1 | Reth metrics port | 6060 | 9001 | Low — upstream ethereum-nix issue |160-| 2 | Nethermind metrics port | 6060 | 9091 | Medium — hardcoded in our role |161-| 3 | Nimbus REST port default | 5051 | 5052 | Low — intentional; both work |162-| 4 | Checkpoint sync URL | `beaconstate.ethstaker.cc` | null | High — production usability |163-| 5 | Teku storage mode | PRUNE | not set (archive) | Medium — bounds disk on non-archival nodes |164-| 6 | Besu NAT method | NONE | extip: | Low |165-| 7 | Reth WebSocket RPC | enabled on 8546 | not exposed | Low |166-| 8 | EL maxPeers default | client default | 50 | Low |167-| 9 | Systemd stop timeout | 300 s | not set explicitly | Low |168+| # | Area | Ethpandaops | Ours | Priority |169+| --- | ------------------------ | -------------------------- | ------------------ | ------------------------------------------ |170+| 1 | Reth metrics port | 6060 | 9001 | Low — upstream ethereum-nix issue |171+| 2 | Nethermind metrics port | 6060 | 9091 | Medium — hardcoded in our role |172+| 3 | Nimbus REST port default | 5051 | 5052 | Low — intentional; both work |173+| 4 | Checkpoint sync URL | `beaconstate.ethstaker.cc` | null | High — production usability |174+| 5 | Teku storage mode | PRUNE | not set (archive) | Medium — bounds disk on non-archival nodes |175+| 6 | Besu NAT method | NONE | extip: | Low |176+| 7 | Reth WebSocket RPC | enabled on 8546 | not exposed | Low |177+| 8 | EL maxPeers default | client default | 50 | Low |178+| 9 | Systemd stop timeout | 300 s | not set explicitly | Low |179 180 ---181 182diff --git a/clanServices/dvt/roles/ecl/lodestar.nix b/clanServices/dvt/roles/ecl/lodestar.nix183index d300b19..cded24b 100644184--- a/clanServices/dvt/roles/ecl/lodestar.nix185+++ b/clanServices/dvt/roles/ecl/lodestar.nix186@@ -66,9 +66,10 @@ in187 })188 // (lib.optionalAttrs (settings.network != null) {189 checkpointSyncUrl =190- if settings.beacon.checkpointSyncUrl != null191- then settings.beacon.checkpointSyncUrl192- else "https://beaconstate.ethstaker.cc";193+ if settings.beacon.checkpointSyncUrl != null then194+ settings.beacon.checkpointSyncUrl195+ else196+ "https://beaconstate.ethstaker.cc";197 });198 };199 200diff --git a/clanServices/dvt/roles/ecl/nimbus.nix b/clanServices/dvt/roles/ecl/nimbus.nix201index 8e708dc..bc907b7 100644202--- a/clanServices/dvt/roles/ecl/nimbus.nix203+++ b/clanServices/dvt/roles/ecl/nimbus.nix204@@ -33,9 +33,12 @@ in205 # `trustedNodeSync`. Default to the ethpandaops community sync endpoint for206 # known public networks; devnets (network = null) skip checkpoint sync.207 checkpointSyncUrl =208- if settings.beacon.checkpointSyncUrl != null then settings.beacon.checkpointSyncUrl209- else if settings.network != null then "https://beaconstate.ethstaker.cc"210- else null;211+ if settings.beacon.checkpointSyncUrl != null then212+ settings.beacon.checkpointSyncUrl213+ else if settings.network != null then214+ "https://beaconstate.ethstaker.cc"215+ else216+ null;217 218 settings = {219 # for custom / private chains the deployer overrides `network` with a220diff --git a/clanServices/dvt/roles/ecl/prysm.nix b/clanServices/dvt/roles/ecl/prysm.nix221index 11c158d..2a8a900 100644222--- a/clanServices/dvt/roles/ecl/prysm.nix223+++ b/clanServices/dvt/roles/ecl/prysm.nix224@@ -67,9 +67,10 @@ in225 })226 // (lib.optionalAttrs (settings.network != null) {227 "checkpoint-sync-url" =228- if settings.beacon.checkpointSyncUrl != null229- then settings.beacon.checkpointSyncUrl230- else "https://beaconstate.ethstaker.cc";231+ if settings.beacon.checkpointSyncUrl != null then232+ settings.beacon.checkpointSyncUrl233+ else234+ "https://beaconstate.ethstaker.cc";235 });236 };237 238diff --git a/clanServices/dvt/roles/ecl/teku.nix b/clanServices/dvt/roles/ecl/teku.nix239index 47bca50..e5e8e2e 100644240--- a/clanServices/dvt/roles/ecl/teku.nix241+++ b/clanServices/dvt/roles/ecl/teku.nix242@@ -75,9 +75,10 @@ in243 })244 // (lib.optionalAttrs (settings.network != null) {245 "checkpoint-sync-url" =246- if settings.beacon.checkpointSyncUrl != null247- then settings.beacon.checkpointSyncUrl248- else "https://beaconstate.ethstaker.cc";249+ if settings.beacon.checkpointSyncUrl != null then250+ settings.beacon.checkpointSyncUrl251+ else252+ "https://beaconstate.ethstaker.cc";253 });254 };255