You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two-stage templating: `values.yaml.gotmpl` with `@enum/@default/@description` annotations → CLI flags → rendered `values.yaml` (Stage 1), then `helmfile sync --state-values-file values.yaml --state-values-set id=<id>` (Stage 2). Unique namespaces: `<network>-<id>` where ID is petname or `--id <name>`. Local Ethereum nodes auto-registered as priority upstream in eRPC via `RegisterERPCUpstream()` (write methods blocked on local → routed to remote).
178
178
179
+
**Ethereum `--mode full|archive`** (default `full`): controls whether reth runs as a pruned full node (~500 GB mainnet / ~100 GB testnet) or an archive node retaining all historical state (~4 TB+ mainnet / ~300 GB testnet). Archive mode is for state replay (block explorers, historical `eth_call`, indexers); full mode is the right default for everything else. The mode flows through to (a) the reth `--full` arg in `internal/embed/networks/ethereum/helmfile.yaml.gotmpl`, (b) PVC sizing in `templates/pvc.yaml`, and (c) the `helmfile``persistence.size` request. `obol network install ethereum` runs a disk-space preflight via `internal/network/preflight.go` — it warns when `cfg.DataDir` has less free disk than `(network, mode)` is expected to need, prompts the user, and auto-continues in non-interactive mode (no TTY / JSON output) so scripted installs don't deadlock. Other execution clients (geth, nethermind, besu, erigon) ignore the mode flag for now.
180
+
181
+
**Ethereum `--since` (partial archive)**: when `--mode=archive` would otherwise mean genesis-to-tip, `--since` bounds the archive at a known historical point and translates to reth's `--prune.account-history.{before,distance}` + `--prune.storage-history.{before,distance}` flags (plus `--prune.receipts.pre-merge` / `--prune.bodies.pre-merge` when the cutoff is at or before the merge). Accepted forms: EL hardfork names (`merge`, `shanghai`, `cancun`, `prague`, `osaka` — mainnet only, verified block numbers in `internal/network/hardforks.go`); durations (`365d`, `1y`, `6mo` — resolved against the post-merge 12s slot rate as a `--prune.*.distance` value); raw block numbers (`22500000`); or `genesis`/`all` (no extra args). Resolution happens in `resolveEthereumArchiveScope` in `internal/network/picker.go`: `--since` wins outright; if `--mode` is unset and a TTY is attached, a `full vs archive` picker runs; if `--mode=archive` is set without `--since` on a TTY, an `Archive scope` picker offers the hardfork presets + custom block + 365 days + genesis. Non-TTY defaults to `mode=full` (mode unset) or `since=genesis` (mode=archive). Resolved scope is appended to `values.yaml` as `pruneKind` / `pruneBlock` / `pruneDistance` and consumed by the helmfile. Partial archive is wired only for reth; geth/besu/erigon/nethermind emit a warning and run with chart defaults. Hardfork-name presets are rejected on testnets (mainnet block numbers don't apply).
# @description Node mode. 'full' prunes historical state (~500GB mainnet); 'archive' keeps all state for history replay (~4TB+ mainnet)
22
+
mode: {{.Mode}}
23
+
24
+
# @default
25
+
# @description Archive scope (only used with --mode=archive). Accepts: 'merge', 'shanghai', 'cancun', 'prague', 'osaka' (EL fork name); duration like '365d', '1y', '6mo'; raw block number; or 'genesis' for all history. Prompts interactively on TTY if omitted.
0 commit comments