From a13b30538f19ee9dc6c74a28afd58f5461956850 Mon Sep 17 00:00:00 2001 From: Camembear Date: Tue, 25 Aug 2026 18:09:26 -0400 Subject: [PATCH 1/8] Document official storage v2 snapshots and shrink Quickstart step 6. Point operators at fetch-berachain-snapshot-v2 for Bepolia, keep the v1 script for mainnet and community packs, and record that Reth honors the on-disk layout after a restore. --- docs.json | 1 + nodes/operations/quickstart.mdx | 114 +++----------------------------- nodes/operations/snapshots.mdx | 111 +++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 105 deletions(-) create mode 100644 nodes/operations/snapshots.mdx diff --git a/docs.json b/docs.json index 9331ee1..1946598 100644 --- a/docs.json +++ b/docs.json @@ -289,6 +289,7 @@ "group": "Setup & Deployment", "pages": [ "nodes/operations/quickstart", + "nodes/operations/snapshots", "nodes/operations/bera-geth-to-reth", "nodes/operations/self-hosted-rpc", "nodes/guides/local-devnet-docker", diff --git a/nodes/operations/quickstart.mdx b/nodes/operations/quickstart.mdx index 1a0dc65..4f20726 100644 --- a/nodes/operations/quickstart.mdx +++ b/nodes/operations/quickstart.mdx @@ -71,6 +71,8 @@ ls; # README.md run-reth.sh setup-reth.sh # env.sh run-beacond.sh setup-beacond.sh # fetch-berachain-params.sh +# fetch-berachain-snapshot.js +# fetch-berachain-snapshot-v2.js ``` The file `env.sh` contains environment variables used in the other scripts. @@ -181,119 +183,21 @@ The `setup-reth.sh` script creates the Reth datadir and initializes it with `--c ## Step 6 - Fetch snapshots (optional) -Snapshots are collections of files from a node's backend that represent its state at a specific time. Restoring a snapshot is much faster than syncing from the network, so this step can dramatically speed up your initial sync on a new node. +Restoring a snapshot is much faster than syncing from genesis. Do this **before** Step 7. - - Do this step **before** starting your clients (Step 7). If you've already started syncing, you'll - need to stop the clients, clean the data directories, then restore snapshots. - - -Snapshots can be applied to both the consensus (beacond) and execution clients. Restoring both snapshots simultaneously provides the fastest sync. - -### 6a - Obtain snapshots - -Berachain and the community offer snapshots for Mainnet and Bepolia. You can download snapshots at the following links. - -- [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators) is a community-maintained list; all of them have great download speed. - -- Or, use the `fetch-berachain-snapshot.js` script — already on disk from Step 1 — downloads the latest official Berachain snapshots for both the beacon-kit consensus layer and the execution layer. It reads the snapshot index at `snapshots.berachain.com`, picks the most recent files matching your options, and saves them to a `downloads/` directory. - -```bash -# FROM: ~/beranode (or any directory — use -o to change download folder) - -# Default: mainnet, pruned -node fetch-berachain-snapshot.js - -# Examples: -node fetch-berachain-snapshot.js --network bepolia --type archive -node fetch-berachain-snapshot.js -o /var/snapshots --execution-only - -# [Expected Output]: -# Bera Snapshot Downloader -# ------------------------- -# Network: mainnet -# Client: reth -# Type: pruned -# -# Fetching snapshot index from: -# https://snapshots.berachain.com/index.csv -# [...] -# ✓ All downloads completed! -``` - -Available options: - -- `--network` or `-n`: `mainnet` or `bepolia` (default: `mainnet`) -- `--type` or `-t`: `pruned` or `archive` (default: `pruned`) -- `--output` or `-o`: Download directory (default: `downloads` in the current working directory) -- `--el-client`: Execution snapshot type prefix in the CSV (default: `reth`) -- `--beacon-only`: Beacon-kit snapshot only -- `--execution-only` or `--el-only`: Execution-layer snapshot only -- `--help` or `-h`: Show help message - -### 6b - Stop clients - -If you've already started your clients, shut down `beacond` and your execution client now. Otherwise, skip to 6c. - -### 6c - Clean existing chain data - -To clean the Beacon Kit and reth data store: +Official Berachain snapshots are storage v2 (Bepolia live; mainnet still uses the v1 script). Storage v1 datadirs and community v1 packs remain valid. Full restore commands, Reth layout rules, and the catalog pairing live on [Snapshots](/nodes/operations/snapshots). ```bash # FROM: ~/beranode -source env.sh; -$BEACOND_BIN --home $BEACOND_HOME comet unsafe-reset-all; - -# [Expected Output]: -# Removed all blockchain history dir=var/beacond/data -# Reset private validator file to genesis state key=.. +# Official v2 (Bepolia). Creates downloads/bepolia-pruned-{el,cl} +node fetch-berachain-snapshot-v2.js --network bepolia --type pruned -ls var/reth/data; - -# [Expected Output]: -# (empty or prior db contents) - -rm -r var/reth/data; -mkdir -p var/reth/data; +# Official v1 (Mainnet today), or any v1 index.csv pack +node fetch-berachain-snapshot.js --network mainnet --type pruned ``` -### 6d - Install BeaconKit snapshot - -The snapshots distributed by Berachain are designed to be installed in the beacond home directory, which contains both `config` and `data`: - -```bash -# FROM: ~/beranode - -# Find the beacon-kit snapshot file (filename pattern: snapshot_beacon-kit-*) -BEACON_SNAPSHOT=$(ls downloads/snapshot_beacon-kit-*.tar.lz4 | head -1) -lz4 -d "$BEACON_SNAPSHOT" | tar xv -C var/beacond/; - -# [Expected Output]: -# x data/ -# x data/cs.wal/ -# x data/cs.wal/wal.10416 -# ... -``` - -### 6e - Install execution layer snapshot - -Official Reth snapshot archives list **`db/`**, **`rocksdb/`**, and **`blobstore/`** at the **root** of the tarball (not under a `data/` directory). Your `bera-reth node --datadir` must be the directory that contains those folders. In this layout that is `var/reth/data` (see `setup-reth.sh` / `env.sh`), so pass **`-C var/reth/data`** to `tar`. - -```bash -# FROM: ~/beranode - -# Find the execution layer snapshot -EL_SNAPSHOT=$(ls downloads/snapshot_reth-*.tar.lz4 | head -1) -lz4 -d "$EL_SNAPSHOT" | tar xv -C var/reth/data; - -# [Expected Output] (current official bundles): -# x db/ -# x db/mdbx.dat -# x rocksdb/ -# x blobstore/ -# ... -``` +Community sources: [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). ## Step 7 - Run both clients diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx new file mode 100644 index 0000000..571d6b9 --- /dev/null +++ b/nodes/operations/snapshots.mdx @@ -0,0 +1,111 @@ +--- +title: "Snapshots" +description: "Restore Beacon Kit and Bera-Reth from official storage v2 snapshots, or keep running on storage v1." +--- + +Snapshots skip most of initial sync. Official Berachain-distributed snapshots are **storage v2**: one `catalog.csv` generation, Beacon Kit `.tar.lz4` companions, and execution data via `bera-reth download --manifest-url`. Community snapshot makers may still publish **storage v1** whole-datadir tarballs. Those remain valid to run. + + + Do this **before** starting clients. If you already started syncing, stop both clients, wipe chain + data, then restore. + + +## Storage v1 stays viable + +Nothing requires you to cut over. A v1 datadir keeps working. Community producers listed on [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators) often still ship v1 tarballs with fast download. + +Official Berachain objects are storage v2. The v1 helper `fetch-berachain-snapshot.js` still reads `index.csv` and curls packed datadirs. Use that for **mainnet** today: there is no mainnet v2 catalog on the daily schedule. `fetch-berachain-snapshot-v2.js --network mainnet` fails closed and names the v1 script. + +## What Reth does with storage v2 + +Reth persists the storage layout in the datadir metadata. **`--storage.v2` / `storage.v2` in config applies to a fresh init only.** An existing database keeps the layout it already has, even if you later change the flag. + +Consequence: restoring a storage v2 execution snapshot is the cutover. After `bera-reth download` finishes into that datadir, the node is on storage v2 regardless of the flag you pass on the next start. + +Dry-run the EL plan without writing objects: + +```bash +bera-reth download --chain bepolia --datadir /tmp/el-plan \ + --manifest-url https://bera-snapshots.fsn1.your-objectstorage.com/v2/bepolia/reth/manifest.json \ + --minimal --print-plan-json +``` + +`--print-plan-json` resolves the manifest and exits. It does not extract. Use a throwaway `--datadir`. Pair `--minimal` or `--archive` with the restore you intend; a preset skips the interactive selector. Do not add `-y`. + +## Official v2 restore (Bepolia) + +[guides `fetch-berachain-snapshot-v2.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot-v2.js) is on disk after Quickstart Step 1. It reads + +`https://bera-snapshots.fsn1.your-objectstorage.com/v2//catalog.csv` + +creates **empty** named directories, restores CL with curl + lz4 + tar, and restores EL with `bera-reth download`. If a target directory exists and is not empty, the script exits non-zero. + +```bash +# FROM: ~/beranode +# Default network is mainnet (no v2 catalog). Bepolia is the live official v2 feed. + +node fetch-berachain-snapshot-v2.js --network bepolia --type pruned + +# Print commands only (no dirs, no fetch, no bera-reth): +node fetch-berachain-snapshot-v2.js --network bepolia --type pruned --no-download + +# Archive EL preset, still cl-pruned unless you opt into full CL history: +node fetch-berachain-snapshot-v2.js --network bepolia --type archive +node fetch-berachain-snapshot-v2.js --network bepolia --type archive --full-cl +``` + +Named directories under `--output` (default `downloads`): + +| Path | Role | +| ------------------------------ | ------------------------------------------------------------ | +| `/--el` | Bera-Reth `--datadir` | +| `/--cl` | Beacon Kit **data** directory (not the whole `beacond` home) | + +`--type` selects the EL preset only. `--full-cl` is the only switch that selects `cl-archive` (orders of magnitude larger than pruned). + +| `--type` | EL | CL (default) | +| -------------------- | ---------------- | ------------ | +| `pruned` | `--minimal` | `cl-pruned` | +| `archive` | `--archive` | `cl-pruned` | +| either + `--full-cl` | same as `--type` | `cl-archive` | + +If `bera-reth` is not on `PATH` (and `--reth-bin` / `RETH_BIN` is unset), the script prints the EL command, skips EL, and still restores CL unless you passed `--no-download` or `--el-only`. + +### Place the restore into the Quickstart layout + +The script does not write `var/beacond` or `var/reth/data` directly. After a successful run, stop clients if they are running, reset chain data, then copy: + +```bash +# FROM: ~/beranode +source env.sh +$BEACOND_BIN --home $BEACOND_HOME comet unsafe-reset-all +rm -rf var/reth/data +mkdir -p var/reth/data var/beacond/data + +# CL tarball members sit at the root of the named CL dir (application.db, …). +# That is CometBFT data/, not the parent home that also holds config/. +rsync -a downloads/bepolia-pruned-cl/ var/beacond/data/ + +# EL named dir is already a Reth datadir. +rsync -a downloads/bepolia-pruned-el/ var/reth/data/ +``` + +Adjust the `bepolia-pruned-*` names if you used `--type archive`. + +v1 official tarballs used a `data/` prefix under the Beacon Kit home and packed `db/` / `rocksdb/` at the root of the EL archive. v2 CL has no `data/` prefix; v2 EL is not a tarball. + +## v1 official restore (Mainnet, or v1 community packs) + +```bash +node fetch-berachain-snapshot.js --network mainnet --type pruned +``` + +Then extract as in older Quickstart notes: Beacon Kit tarball into `$BEACOND_HOME` (members include `data/`), EL tarball into `var/reth/data`. See [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators) for other v1 sources. + +## Catalog shape + +One generation, three roles: `el-manifest`, `cl-pruned`, `cl-archive`. Header: + +`type,layer,profile,block_number,size_bytes,created_at,object_key,download_url,role` + +Browse objects at [bepolia.snapshots.berachain.com/v2/](https://bepolia.snapshots.berachain.com/v2/). Restore from catalog URLs, not by picking random keys under `v2/bepolia/reth/`. From 1ffdd8e8c97a788394bdf5939ffc6a72fd502272 Mon Sep 17 00:00:00 2001 From: Camembear Date: Wed, 26 Aug 2026 13:52:50 -0400 Subject: [PATCH 2/8] Rewrite the storage v2 explainer and add a bera-reth download reference. Storage v2 rides both Mainnet and Bepolia; guides' fetch-berachain-snapshot script drops the -v2 suffix. Adds a migrating-from-v1 walkthrough and a plain-prose bera-reth download reference with a link to reth's own pruning docs for --full. --- nodes/operations/quickstart.mdx | 11 +-- nodes/operations/snapshots.mdx | 134 ++++++++++++++++---------------- 2 files changed, 71 insertions(+), 74 deletions(-) diff --git a/nodes/operations/quickstart.mdx b/nodes/operations/quickstart.mdx index 4f20726..57bdd4d 100644 --- a/nodes/operations/quickstart.mdx +++ b/nodes/operations/quickstart.mdx @@ -185,20 +185,15 @@ The `setup-reth.sh` script creates the Reth datadir and initializes it with `--c Restoring a snapshot is much faster than syncing from genesis. Do this **before** Step 7. -Official Berachain snapshots are storage v2 (Bepolia live; mainnet still uses the v1 script). Storage v1 datadirs and community v1 packs remain valid. Full restore commands, Reth layout rules, and the catalog pairing live on [Snapshots](/nodes/operations/snapshots). +Official Berachain snapshots are available for +[Mainnet](https://snapshots.berachain.com) and [Bepolia](https://bepolia.snapshots.berachain.com/). Full restore commands and documentation are available on [Snapshots](/nodes/operations/snapshots). ```bash # FROM: ~/beranode -# Official v2 (Bepolia). Creates downloads/bepolia-pruned-{el,cl} -node fetch-berachain-snapshot-v2.js --network bepolia --type pruned - -# Official v1 (Mainnet today), or any v1 index.csv pack -node fetch-berachain-snapshot.js --network mainnet --type pruned +node fetch-berachain-snapshot.js --network [mainnet|bepolia] --type pruned ``` -Community sources: [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). - ## Step 7 - Run both clients Launch two terminal windows. In the first, run the consensus client: diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index 571d6b9..40a6476 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -1,111 +1,113 @@ --- title: "Snapshots" -description: "Restore Beacon Kit and Bera-Reth from official storage v2 snapshots, or keep running on storage v1." --- -Snapshots skip most of initial sync. Official Berachain-distributed snapshots are **storage v2**: one `catalog.csv` generation, Beacon Kit `.tar.lz4` companions, and execution data via `bera-reth download --manifest-url`. Community snapshot makers may still publish **storage v1** whole-datadir tarballs. Those remain valid to run. +A snapshot lets you set up a new node in hours, not days. Berachain publishes a new snapshot once each day, for Mainnet and for Bepolia. - Do this **before** starting clients. If you already started syncing, stop both clients, wipe chain - data, then restore. + Do this step before you start the clients. If you already started to sync, do these steps first: + stop both clients, delete the chain data, then restore the snapshot. -## Storage v1 stays viable +## Reth storage v1 vs v2 -Nothing requires you to cut over. A v1 datadir keeps working. Community producers listed on [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators) often still ship v1 tarballs with fast download. +Bera-Reth, Berachain's execution client, is built on the upstream Reth project. Reth v2 added storage v2, a new format for the on-disk database. -Official Berachain objects are storage v2. The v1 helper `fetch-berachain-snapshot.js` still reads `index.csv` and curls packed datadirs. Use that for **mainnet** today: there is no mainnet v2 catalog on the daily schedule. `fetch-berachain-snapshot-v2.js --network mainnet` fails closed and names the v1 script. +Storage v2 keeps two kinds of data. The hot layer holds live state. The node reads and writes this data on every block. The cold layer holds history: headers, transactions, receipts, and change data. Bera-Reth stores the cold layer as separate files. -## What Reth does with storage v2 +The snapshot manifest lists a checksum for each file. Bera-Reth verifies this checksum after it extracts a file and before it declares the snapshot complete. If the checksum does not match, Bera-Reth deletes the file and downloads it again. -Reth persists the storage layout in the datadir metadata. **`--storage.v2` / `storage.v2` in config applies to a fresh init only.** An existing database keeps the layout it already has, even if you later change the flag. +Berachain's official snapshots use storage v2, for both Mainnet and Bepolia. -Consequence: restoring a storage v2 execution snapshot is the cutover. After `bera-reth download` finishes into that datadir, the node is on storage v2 regardless of the flag you pass on the next start. +It is not required, but is recommended, to change to storage v2. A storage v1 node still works as usual. Some community node operators still publish storage v1 snapshots; see [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). -Dry-run the EL plan without writing objects: +Bera-Reth sets the storage format when it creates a new datadir, and does not change it later, even if you change a flag. Restoring a storage v2 snapshot into a new datadir **is** how you migrate to storage v2. There is no separate step. -```bash -bera-reth download --chain bepolia --datadir /tmp/el-plan \ - --manifest-url https://bera-snapshots.fsn1.your-objectstorage.com/v2/bepolia/reth/manifest.json \ - --minimal --print-plan-json -``` +## Migrating from storage v1 to v2 -`--print-plan-json` resolves the manifest and exits. It does not extract. Use a throwaway `--datadir`. Pair `--minimal` or `--archive` with the restore you intend; a preset skips the interactive selector. Do not add `-y`. +To use storage v2, you must restore a storage v2 snapshot into a new, empty datadir: the same procedure as a new node setup. -## Official v2 restore (Bepolia) +This procedure only affects the execution layer. Beacon Kit and CometBFT storage formats have not changed. Your consensus-layer data and your validator keys are safe during this procedure. -[guides `fetch-berachain-snapshot-v2.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot-v2.js) is on disk after Quickstart Step 1. It reads +Do these steps to move an existing node to storage v2: -`https://bera-snapshots.fsn1.your-objectstorage.com/v2//catalog.csv` +1. Stop the execution client. Do not stop `beacond`; this procedure does not touch the consensus layer. +2. Delete the old Bera-Reth datadir (example: `var/reth/data`), or move it to a new location. A storage v1 datadir and a storage v2 datadir are not compatible with each other. Keep a copy of the old datadir only if you want a way back to storage v1. +3. Restore a snapshot into the empty datadir; see [Restoring an official snapshot](#restoring-an-official-snapshot), below. +4. Start the execution client. The node now uses storage v2. You do not need to change any configuration or startup options. -creates **empty** named directories, restores CL with curl + lz4 + tar, and restores EL with `bera-reth download`. If a target directory exists and is not empty, the script exits non-zero. +## `bera-reth download` and its options -```bash -# FROM: ~/beranode -# Default network is mainnet (no v2 catalog). Bepolia is the live official v2 feed. +The `bera-reth download` command restores an execution-layer datadir from a storage v2 snapshot manifest. This is faster than a full network sync. -node fetch-berachain-snapshot-v2.js --network bepolia --type pruned +After it extracts each file, `bera-reth download` checks that file against the manifest's checksum. If a file doesn't match, it deletes the file and downloads it again. A damaged or incomplete download can't leave you with a datadir that looks correct but isn't. -# Print commands only (no dirs, no fetch, no bera-reth): -node fetch-berachain-snapshot-v2.js --network bepolia --type pruned --no-download +**Required:** -# Archive EL preset, still cl-pruned unless you opt into full CL history: -node fetch-berachain-snapshot-v2.js --network bepolia --type archive -node fetch-berachain-snapshot-v2.js --network bepolia --type archive --full-cl -``` +- **`--chain `**: chooses the network snapshot to download. +- **`--datadir `**: the target directory. Do not point this at a running node's data or storage v1 data. +- **`--manifest-url `**: the `manifest.json` URL from the [Mainnet](https://snapshots.berachain.com/) or [Bepolia](https://bepolia.snapshots.berachain.com/) snapshot site. -Named directories under `--output` (default `downloads`): +**Pick exactly one preset:** -| Path | Role | -| ------------------------------ | ------------------------------------------------------------ | -| `/--el` | Bera-Reth `--datadir` | -| `/--cl` | Beacon Kit **data** directory (not the whole `beacond` home) | - -`--type` selects the EL preset only. `--full-cl` is the only switch that selects `cl-archive` (orders of magnitude larger than pruned). - -| `--type` | EL | CL (default) | -| -------------------- | ---------------- | ------------ | -| `pruned` | `--minimal` | `cl-pruned` | -| `archive` | `--archive` | `cl-pruned` | -| either + `--full-cl` | same as `--type` | `cl-archive` | +- **`--minimal`**: downloads the smallest working node. It can sync forward from the snapshot's block. Most operators should use this. +- **`--archive`**: downloads everything in the manifest: full transaction, receipt, and state-history data. This needs far more disk space and download time than `--minimal`. +- **`--full`**: downloads data matching a full, non-archive node's [default pruning settings](https://reth.rs/run/storage/pruning/). More than `--minimal` and far less than `--archive`. -If `bera-reth` is not on `PATH` (and `--reth-bin` / `RETH_BIN` is unset), the script prints the EL command, skips EL, and still restores CL unless you passed `--no-download` or `--el-only`. +**Useful flags:** -### Place the restore into the Quickstart layout +- **`--force`**: deletes the existing `db`, `rocksdb`, `static_files`, and `reth.toml` under `--datadir` first. Use this when the target directory already holds different or partial data. +- **`--print-plan-json`**: reads the manifest and prints the download plan, without downloading or writing anything. Safe to run against a real `--datadir`. Use it to check a manifest URL or estimate the download size before you restore. +- **`--download-concurrency `**: how many downloads run at once (default 8). Raise it on a fast connection; lower it if the source throttles or drops connections. -The script does not write `var/beacond` or `var/reth/data` directly. After a successful run, stop clients if they are running, reset chain data, then copy: +You can run this command again on a datadir with a partial or damaged restore. This is safe, and often the fix: every file is checked against the manifest's checksum, and anything missing, wrong-sized, or failing that check is deleted and re-downloaded automatically. This check only covers the files in your chosen preset; restoring with `--minimal` doesn't check files outside it. ```bash -# FROM: ~/beranode -source env.sh -$BEACOND_BIN --home $BEACOND_HOME comet unsafe-reset-all -rm -rf var/reth/data -mkdir -p var/reth/data var/beacond/data - -# CL tarball members sit at the root of the named CL dir (application.db, …). -# That is CometBFT data/, not the parent home that also holds config/. -rsync -a downloads/bepolia-pruned-cl/ var/beacond/data/ +# Restore a pruned Bepolia node +bera-reth download --chain bepolia --datadir var/reth/data \ + --manifest-url https://bera-snapshots.fsn1.your-objectstorage.com/v2/bepolia/reth/manifest.json \ + --minimal -# EL named dir is already a Reth datadir. -rsync -a downloads/bepolia-pruned-el/ var/reth/data/ +# Check a manifest without downloading anything +bera-reth download --chain bepolia --datadir /tmp/plan-check \ + --manifest-url --minimal --print-plan-json ``` -Adjust the `bepolia-pruned-*` names if you used `--type archive`. +## Restoring an official snapshot -v1 official tarballs used a `data/` prefix under the Beacon Kit home and packed `db/` / `rocksdb/` at the root of the EL archive. v2 CL has no `data/` prefix; v2 EL is not a tarball. +The [`fetch-berachain-snapshot.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot.js) script is on disk after Quickstart Step 1. This script reads the catalog at + +`https://bera-snapshots.fsn1.your-objectstorage.com/v2//catalog.csv` -## v1 official restore (Mainnet, or v1 community packs) +then creates two new, empty directories: it restores the consensus layer with `curl`, `lz4`, and `tar`, and restores the execution layer with `bera-reth download`. If a target directory already exists and isn't empty, the script stops and returns an error. ```bash +# FROM: ~/beranode +# --network selects mainnet or bepolia; both are live official v2 feeds. + node fetch-berachain-snapshot.js --network mainnet --type pruned + +# --no-download prints the restore commands, with no directories created, download, or bera-reth run: +node fetch-berachain-snapshot.js --network mainnet --type pruned --no-download + +# Archive execution-layer preset; still cl-pruned unless you opt into full CL history: +node fetch-berachain-snapshot.js --network mainnet --type archive +node fetch-berachain-snapshot.js --network mainnet --type archive --full-cl ``` -Then extract as in older Quickstart notes: Beacon Kit tarball into `$BEACOND_HOME` (members include `data/`), EL tarball into `var/reth/data`. See [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators) for other v1 sources. +Named directories under `--output` (default `downloads`): -## Catalog shape +| Path | Role | +| ------------------------------ | ------------------------------------------------------------ | +| `/--el` | Bera-Reth `--datadir` | +| `/--cl` | Beacon Kit **data** directory (not the whole `beacond` home) | -One generation, three roles: `el-manifest`, `cl-pruned`, `cl-archive`. Header: +The `--type` flag sets the execution-layer preset only. `--full-cl` is the only flag that selects `cl-archive`; a `cl-archive` restore needs far more disk space than `cl-pruned`. -`type,layer,profile,block_number,size_bytes,created_at,object_key,download_url,role` +| `--type` | EL | CL (default) | +| -------------------- | ---------------- | ------------ | +| `pruned` | `--minimal` | `cl-pruned` | +| `archive` | `--archive` | `cl-pruned` | +| either + `--full-cl` | same as `--type` | `cl-archive` | -Browse objects at [bepolia.snapshots.berachain.com/v2/](https://bepolia.snapshots.berachain.com/v2/). Restore from catalog URLs, not by picking random keys under `v2/bepolia/reth/`. +The script looks for `bera-reth` on your `PATH`, or at `--reth-bin` / `RETH_BIN` if you set one. If it can't find `bera-reth`, it prints the execution-layer command and skips that restore, but still restores the consensus layer, unless you passed `--no-download` or `--el-only`. From bd6c231340000b21210ffd5d6d46a34071351422 Mon Sep 17 00:00:00 2001 From: Camembear Date: Wed, 26 Aug 2026 15:20:25 -0400 Subject: [PATCH 3/8] Tighten the storage v1-to-v2 migration steps. --- nodes/operations/snapshots.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index 40a6476..2c4b333 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -31,8 +31,8 @@ This procedure only affects the execution layer. Beacon Kit and CometBFT storage Do these steps to move an existing node to storage v2: -1. Stop the execution client. Do not stop `beacond`; this procedure does not touch the consensus layer. -2. Delete the old Bera-Reth datadir (example: `var/reth/data`), or move it to a new location. A storage v1 datadir and a storage v2 datadir are not compatible with each other. Keep a copy of the old datadir only if you want a way back to storage v1. +1. Stop the execution client. No need to stop `beacond`; this procedure does not touch the consensus layer. +2. Delete or preserve the old Bera-Reth datadir (example: `var/reth/data`). A storage v1 datadir and a storage v2 datadir are not compatible with each other. Keep a copy of the old datadir only if you want a way back to storage v1. 3. Restore a snapshot into the empty datadir; see [Restoring an official snapshot](#restoring-an-official-snapshot), below. 4. Start the execution client. The node now uses storage v2. You do not need to change any configuration or startup options. From 04a9fea7c545d8e989b0000a1edec154520a9610 Mon Sep 17 00:00:00 2001 From: Camembear Date: Thu, 27 Aug 2026 11:51:01 -0400 Subject: [PATCH 4/8] Apply storage v2 snapshot review: public site URLs and split restore commands. --- nodes/operations/quickstart.mdx | 4 ++-- nodes/operations/snapshots.mdx | 31 +++++++++++++++++-------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/nodes/operations/quickstart.mdx b/nodes/operations/quickstart.mdx index 57bdd4d..2f18fa1 100644 --- a/nodes/operations/quickstart.mdx +++ b/nodes/operations/quickstart.mdx @@ -72,7 +72,6 @@ ls; # env.sh run-beacond.sh setup-beacond.sh # fetch-berachain-params.sh # fetch-berachain-snapshot.js -# fetch-berachain-snapshot-v2.js ``` The file `env.sh` contains environment variables used in the other scripts. @@ -191,7 +190,8 @@ Official Berachain snapshots are available for ```bash # FROM: ~/beranode -node fetch-berachain-snapshot.js --network [mainnet|bepolia] --type pruned +node fetch-berachain-snapshot.js --network mainnet --type pruned +node fetch-berachain-snapshot.js --network bepolia --type pruned ``` ## Step 7 - Run both clients diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index 2c4b333..9fa865c 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -13,15 +13,13 @@ A snapshot lets you set up a new node in hours, not days. Berachain publishes a Bera-Reth, Berachain's execution client, is built on the upstream Reth project. Reth v2 added storage v2, a new format for the on-disk database. -Storage v2 keeps two kinds of data. The hot layer holds live state. The node reads and writes this data on every block. The cold layer holds history: headers, transactions, receipts, and change data. Bera-Reth stores the cold layer as separate files. - -The snapshot manifest lists a checksum for each file. Bera-Reth verifies this checksum after it extracts a file and before it declares the snapshot complete. If the checksum does not match, Bera-Reth deletes the file and downloads it again. - Berachain's official snapshots use storage v2, for both Mainnet and Bepolia. It is not required, but is recommended, to change to storage v2. A storage v1 node still works as usual. Some community node operators still publish storage v1 snapshots; see [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). -Bera-Reth sets the storage format when it creates a new datadir, and does not change it later, even if you change a flag. Restoring a storage v2 snapshot into a new datadir **is** how you migrate to storage v2. There is no separate step. + + Bera-Reth sets the storage format when it creates a new datadir, and does not change it later, even if you change a flag. Restoring a storage v2 snapshot into a new datadir **is** how you migrate to storage v2. There is no separate step. + ## Migrating from storage v1 to v2 @@ -46,7 +44,10 @@ After it extracts each file, `bera-reth download` checks that file against the m - **`--chain `**: chooses the network snapshot to download. - **`--datadir `**: the target directory. Do not point this at a running node's data or storage v1 data. -- **`--manifest-url `**: the `manifest.json` URL from the [Mainnet](https://snapshots.berachain.com/) or [Bepolia](https://bepolia.snapshots.berachain.com/) snapshot site. +- **`--manifest-url `**: the `manifest.json` URL from the snapshot site. Official examples: + `https://snapshots.berachain.com/reth/manifest.json` (Mainnet), + `https://bepolia.snapshots.berachain.com/reth/manifest.json` (Bepolia). + Use this flag for a third-party snapshot; copy that provider's `manifest.json` URL. **Pick exactly one preset:** @@ -65,27 +66,29 @@ You can run this command again on a datadir with a partial or damaged restore. T ```bash # Restore a pruned Bepolia node bera-reth download --chain bepolia --datadir var/reth/data \ - --manifest-url https://bera-snapshots.fsn1.your-objectstorage.com/v2/bepolia/reth/manifest.json \ + --manifest-url https://bepolia.snapshots.berachain.com/reth/manifest.json \ + --minimal + +# Restore a pruned Mainnet node +bera-reth download --chain mainnet --datadir var/reth/data \ + --manifest-url https://snapshots.berachain.com/reth/manifest.json \ --minimal # Check a manifest without downloading anything bera-reth download --chain bepolia --datadir /tmp/plan-check \ - --manifest-url --minimal --print-plan-json + --manifest-url https://bepolia.snapshots.berachain.com/reth/manifest.json \ + --minimal --print-plan-json ``` ## Restoring an official snapshot -The [`fetch-berachain-snapshot.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot.js) script is on disk after Quickstart Step 1. This script reads the catalog at - -`https://bera-snapshots.fsn1.your-objectstorage.com/v2//catalog.csv` - -then creates two new, empty directories: it restores the consensus layer with `curl`, `lz4`, and `tar`, and restores the execution layer with `bera-reth download`. If a target directory already exists and isn't empty, the script stops and returns an error. +The [`fetch-berachain-snapshot.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot.js) script is on disk after Quickstart Step 1. This script reads the catalog on the [Mainnet](https://snapshots.berachain.com/) or [Bepolia](https://bepolia.snapshots.berachain.com/) snapshot site, then creates two new, empty directories: it restores the consensus layer with `curl`, `lz4`, and `tar`, and restores the execution layer with `bera-reth download`. If a target directory already exists and isn't empty, the script stops and returns an error. ```bash # FROM: ~/beranode -# --network selects mainnet or bepolia; both are live official v2 feeds. node fetch-berachain-snapshot.js --network mainnet --type pruned +node fetch-berachain-snapshot.js --network bepolia --type pruned # --no-download prints the restore commands, with no directories created, download, or bera-reth run: node fetch-berachain-snapshot.js --network mainnet --type pruned --no-download From 276f861c524deed0ba165161061a28b071c5cd33 Mon Sep 17 00:00:00 2001 From: Camembear Date: Thu, 27 Aug 2026 11:55:27 -0400 Subject: [PATCH 5/8] Stop documenting a literal manifest.json URL. The paths were constructed, not verified. Operators copy the URL from the snapshot site instead, and the examples use a placeholder. --- nodes/operations/snapshots.mdx | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index 9fa865c..95e7214 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -44,10 +44,7 @@ After it extracts each file, `bera-reth download` checks that file against the m - **`--chain `**: chooses the network snapshot to download. - **`--datadir `**: the target directory. Do not point this at a running node's data or storage v1 data. -- **`--manifest-url `**: the `manifest.json` URL from the snapshot site. Official examples: - `https://snapshots.berachain.com/reth/manifest.json` (Mainnet), - `https://bepolia.snapshots.berachain.com/reth/manifest.json` (Bepolia). - Use this flag for a third-party snapshot; copy that provider's `manifest.json` URL. +- **`--manifest-url `**: the `manifest.json` URL for the snapshot you want. Copy it from the [Mainnet](https://snapshots.berachain.com/) or [Bepolia](https://bepolia.snapshots.berachain.com/) snapshot site. For a third-party snapshot, copy the URL that provider publishes. **Pick exactly one preset:** @@ -63,26 +60,25 @@ After it extracts each file, `bera-reth download` checks that file against the m You can run this command again on a datadir with a partial or damaged restore. This is safe, and often the fix: every file is checked against the manifest's checksum, and anything missing, wrong-sized, or failing that check is deleted and re-downloaded automatically. This check only covers the files in your chosen preset; restoring with `--minimal` doesn't check files outside it. +Copy `` from the snapshot site for your network before you run these. + ```bash # Restore a pruned Bepolia node bera-reth download --chain bepolia --datadir var/reth/data \ - --manifest-url https://bepolia.snapshots.berachain.com/reth/manifest.json \ - --minimal + --manifest-url --minimal # Restore a pruned Mainnet node bera-reth download --chain mainnet --datadir var/reth/data \ - --manifest-url https://snapshots.berachain.com/reth/manifest.json \ - --minimal + --manifest-url --minimal # Check a manifest without downloading anything bera-reth download --chain bepolia --datadir /tmp/plan-check \ - --manifest-url https://bepolia.snapshots.berachain.com/reth/manifest.json \ - --minimal --print-plan-json + --manifest-url --minimal --print-plan-json ``` ## Restoring an official snapshot -The [`fetch-berachain-snapshot.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot.js) script is on disk after Quickstart Step 1. This script reads the catalog on the [Mainnet](https://snapshots.berachain.com/) or [Bepolia](https://bepolia.snapshots.berachain.com/) snapshot site, then creates two new, empty directories: it restores the consensus layer with `curl`, `lz4`, and `tar`, and restores the execution layer with `bera-reth download`. If a target directory already exists and isn't empty, the script stops and returns an error. +The [`fetch-berachain-snapshot.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot.js) script is on disk after Quickstart Step 1. This script resolves the current official snapshot for your network on its own, so you do not need to copy a URL. It then creates two new, empty directories: it restores the consensus layer with `curl`, `lz4`, and `tar`, and restores the execution layer with `bera-reth download`. If a target directory already exists and isn't empty, the script stops and returns an error. ```bash # FROM: ~/beranode From dfdfdfedad38925a960210b93f91dec76fcf8013 Mon Sep 17 00:00:00 2001 From: Camembear Date: Thu, 27 Aug 2026 12:23:25 -0400 Subject: [PATCH 6/8] Restore the storage v2 rationale with sourced figures. Explain why an operator would move to storage v2 without the layout internals: upstream Reth's measured disk savings per node preset, faster persistence, and the announced removal of storage v1 support. Reth 2.0 committed to dropping storage v1 but stated the deprecation date would be communicated separately, so avoid claiming a date exists. Note the in-place bera-reth db migrate-v2 converter rather than asserting a snapshot restore is the only path. Also run prettier over both pages, which earlier commits missed. --- nodes/operations/quickstart.mdx | 2 +- nodes/operations/snapshots.mdx | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/nodes/operations/quickstart.mdx b/nodes/operations/quickstart.mdx index 2f18fa1..7194dbb 100644 --- a/nodes/operations/quickstart.mdx +++ b/nodes/operations/quickstart.mdx @@ -185,7 +185,7 @@ The `setup-reth.sh` script creates the Reth datadir and initializes it with `--c Restoring a snapshot is much faster than syncing from genesis. Do this **before** Step 7. Official Berachain snapshots are available for -[Mainnet](https://snapshots.berachain.com) and [Bepolia](https://bepolia.snapshots.berachain.com/). Full restore commands and documentation are available on [Snapshots](/nodes/operations/snapshots). +[Mainnet](https://snapshots.berachain.com) and [Bepolia](https://bepolia.snapshots.berachain.com/). Full restore commands and documentation are available on [Snapshots](/nodes/operations/snapshots). ```bash # FROM: ~/beranode diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index 95e7214..d1f591c 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -11,19 +11,35 @@ A snapshot lets you set up a new node in hours, not days. Berachain publishes a ## Reth storage v1 vs v2 -Bera-Reth, Berachain's execution client, is built on the upstream Reth project. Reth v2 added storage v2, a new format for the on-disk database. +Bera-Reth, Berachain's execution client, is built on the upstream Reth project. Reth v2 added storage v2, a new on-disk layout that splits data by how the node uses it instead of holding everything in one database. -Berachain's official snapshots use storage v2, for both Mainnet and Bepolia. +Storage v2 uses less disk. Upstream Reth measured these savings on Ethereum mainnet at block 24,396,823. No Berachain figures are published yet, so read them as indicative: -It is not required, but is recommended, to change to storage v2. A storage v1 node still works as usual. Some community node operators still publish storage v1 snapshots; see [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). +| Node type | Storage v1 | Storage v2 | Savings | +| ----------- | ---------- | ---------- | ------- | +| `--minimal` | 449 GB | 224 GB | -50% | +| `--full` | 1.46 TB | 1.02 TB | -30% | +| `--archive` | 2.99 TB | 2.31 TB | -23% | + +Storage v2 also writes finalized blocks to disk faster. + +It is also the direction Reth is moving. Reth 2.0 made storage v2 the default for new databases, and announced that storage v1 support will be removed in a future version, with the exact deprecation date to be communicated separately. A storage v1 node runs normally today, so treat this as a migration to plan rather than an emergency. + +For the layout itself, see [Reth's storage documentation](https://reth.rs/run/storage/). + +Berachain's official snapshots use storage v2, for both Mainnet and Bepolia. Some community node operators still publish storage v1 snapshots; see [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). + +To check which layout a datadir already uses, run `bera-reth db --datadir settings`. - Bera-Reth sets the storage format when it creates a new datadir, and does not change it later, even if you change a flag. Restoring a storage v2 snapshot into a new datadir **is** how you migrate to storage v2. There is no separate step. + Bera-Reth records the storage layout when it creates a datadir, and **does not change it later**. + Setting or clearing a flag on an existing datadir does not convert it. To move an existing node to + storage v2, restore a storage v2 snapshot into a new datadir. ## Migrating from storage v1 to v2 -To use storage v2, you must restore a storage v2 snapshot into a new, empty datadir: the same procedure as a new node setup. +Restore a storage v2 snapshot into a new, empty datadir: the same procedure as a new node setup. This is the recommended path, and the steps below cover it. Bera-Reth also ships an in-place converter, `bera-reth db migrate-v2`, documented in the Bera-Reth repository; it is the option for operators who cannot re-download a snapshot. This procedure only affects the execution layer. Beacon Kit and CometBFT storage formats have not changed. Your consensus-layer data and your validator keys are safe during this procedure. From 70e8e2fc7163554a3c2741d0f8749cca2d2df9e5 Mon Sep 17 00:00:00 2001 From: Camembear Date: Thu, 27 Aug 2026 13:04:26 -0400 Subject: [PATCH 7/8] update snapshots docs, final cleanup --- nodes/operations/snapshots.mdx | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index d1f591c..d5c6b02 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -13,19 +13,8 @@ A snapshot lets you set up a new node in hours, not days. Berachain publishes a Bera-Reth, Berachain's execution client, is built on the upstream Reth project. Reth v2 added storage v2, a new on-disk layout that splits data by how the node uses it instead of holding everything in one database. -Storage v2 uses less disk. Upstream Reth measured these savings on Ethereum mainnet at block 24,396,823. No Berachain figures are published yet, so read them as indicative: - -| Node type | Storage v1 | Storage v2 | Savings | -| ----------- | ---------- | ---------- | ------- | -| `--minimal` | 449 GB | 224 GB | -50% | -| `--full` | 1.46 TB | 1.02 TB | -30% | -| `--archive` | 2.99 TB | 2.31 TB | -23% | - -Storage v2 also writes finalized blocks to disk faster. - -It is also the direction Reth is moving. Reth 2.0 made storage v2 the default for new databases, and announced that storage v1 support will be removed in a future version, with the exact deprecation date to be communicated separately. A storage v1 node runs normally today, so treat this as a migration to plan rather than an emergency. - -For the layout itself, see [Reth's storage documentation](https://reth.rs/run/storage/). +Storage v2 uses less disk (~20%), performs faster, and is the default for new installations. +See [Reth's storage documentation](https://reth.rs/run/storage/). Berachain's official snapshots use storage v2, for both Mainnet and Bepolia. Some community node operators still publish storage v1 snapshots; see [Awesome Berachain Validators](https://github.com/chuck-bear/awesome-berachain-validators). @@ -39,16 +28,16 @@ To check which layout a datadir already uses, run `bera-reth db --datadir ## Migrating from storage v1 to v2 -Restore a storage v2 snapshot into a new, empty datadir: the same procedure as a new node setup. This is the recommended path, and the steps below cover it. Bera-Reth also ships an in-place converter, `bera-reth db migrate-v2`, documented in the Bera-Reth repository; it is the option for operators who cannot re-download a snapshot. +Restore a storage v2 snapshot into a new, empty datadir: the same procedure as a new node setup. This is the recommended path, and the steps below cover it. -This procedure only affects the execution layer. Beacon Kit and CometBFT storage formats have not changed. Your consensus-layer data and your validator keys are safe during this procedure. +This procedure only affects the execution layer. Beacon Kit storage format has not changed. Your consensus-layer data and your validator keys are safe during this procedure. Do these steps to move an existing node to storage v2: -1. Stop the execution client. No need to stop `beacond`; this procedure does not touch the consensus layer. +1. Stop the execution client and Beacon-Kit. 2. Delete or preserve the old Bera-Reth datadir (example: `var/reth/data`). A storage v1 datadir and a storage v2 datadir are not compatible with each other. Keep a copy of the old datadir only if you want a way back to storage v1. 3. Restore a snapshot into the empty datadir; see [Restoring an official snapshot](#restoring-an-official-snapshot), below. -4. Start the execution client. The node now uses storage v2. You do not need to change any configuration or startup options. +4. You do not need to change any configuration or startup options. Restart the Bera-Reth and Beacon-Kit. ## `bera-reth download` and its options From b4c87e8941a4320e64a3b9bf67d13781f80efcdf Mon Sep 17 00:00:00 2001 From: Camembear Date: Thu, 27 Aug 2026 13:11:42 -0400 Subject: [PATCH 8/8] remove misguided section --- nodes/operations/snapshots.mdx | 39 ++++------------------------------ 1 file changed, 4 insertions(+), 35 deletions(-) diff --git a/nodes/operations/snapshots.mdx b/nodes/operations/snapshots.mdx index d5c6b02..5c21369 100644 --- a/nodes/operations/snapshots.mdx +++ b/nodes/operations/snapshots.mdx @@ -67,6 +67,8 @@ You can run this command again on a datadir with a partial or damaged restore. T Copy `` from the snapshot site for your network before you run these. +## Restoring an official snapshot + ```bash # Restore a pruned Bepolia node bera-reth download --chain bepolia --datadir var/reth/data \ @@ -76,42 +78,9 @@ bera-reth download --chain bepolia --datadir var/reth/data \ bera-reth download --chain mainnet --datadir var/reth/data \ --manifest-url --minimal -# Check a manifest without downloading anything -bera-reth download --chain bepolia --datadir /tmp/plan-check \ +# Dry run - verifies snapshot files on disk +bera-reth download --chain bepolia --datadir var/reth/data \ --manifest-url --minimal --print-plan-json ``` -## Restoring an official snapshot - -The [`fetch-berachain-snapshot.js`](https://github.com/berachain/guides/blob/main/apps/node-scripts/fetch-berachain-snapshot.js) script is on disk after Quickstart Step 1. This script resolves the current official snapshot for your network on its own, so you do not need to copy a URL. It then creates two new, empty directories: it restores the consensus layer with `curl`, `lz4`, and `tar`, and restores the execution layer with `bera-reth download`. If a target directory already exists and isn't empty, the script stops and returns an error. - -```bash -# FROM: ~/beranode - -node fetch-berachain-snapshot.js --network mainnet --type pruned -node fetch-berachain-snapshot.js --network bepolia --type pruned - -# --no-download prints the restore commands, with no directories created, download, or bera-reth run: -node fetch-berachain-snapshot.js --network mainnet --type pruned --no-download - -# Archive execution-layer preset; still cl-pruned unless you opt into full CL history: -node fetch-berachain-snapshot.js --network mainnet --type archive -node fetch-berachain-snapshot.js --network mainnet --type archive --full-cl -``` - -Named directories under `--output` (default `downloads`): - -| Path | Role | -| ------------------------------ | ------------------------------------------------------------ | -| `/--el` | Bera-Reth `--datadir` | -| `/--cl` | Beacon Kit **data** directory (not the whole `beacond` home) | - -The `--type` flag sets the execution-layer preset only. `--full-cl` is the only flag that selects `cl-archive`; a `cl-archive` restore needs far more disk space than `cl-pruned`. - -| `--type` | EL | CL (default) | -| -------------------- | ---------------- | ------------ | -| `pruned` | `--minimal` | `cl-pruned` | -| `archive` | `--archive` | `cl-pruned` | -| either + `--full-cl` | same as `--type` | `cl-archive` | -The script looks for `bera-reth` on your `PATH`, or at `--reth-bin` / `RETH_BIN` if you set one. If it can't find `bera-reth`, it prints the execution-layer command and skips that restore, but still restores the consensus layer, unless you passed `--no-download` or `--el-only`.