Skip to content

Commit e513157

Browse files
committed
Reth as recommended client
1 parent 913d703 commit e513157

File tree

4 files changed

+44
-40
lines changed

4 files changed

+44
-40
lines changed

docs/base-chain/node-operators/performance-tuning.mdx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ If utilizing Amazon Elastic Block Store (EBS), io2 Block Express volumes are rec
2828

2929
The following are the hardware specifications used for Base production nodes:
3030

31-
- **Geth Full Node:**
32-
- Instance: AWS `i4i.12xlarge`
31+
- **Reth Archive Node (recommended):**
32+
- Instance: AWS `i4ie.6xlarge`
3333
- Storage: RAID 0 of all local NVMe drives (`/dev/nvme*`)
3434
- Filesystem: ext4
3535

36-
- **Reth Archive Node:**
37-
- Instance: AWS `i4ie.6xlarge`
36+
- **Geth Full Node:**
37+
- Instance: AWS `i4i.12xlarge`
3838
- Storage: RAID 0 of all local NVMe drives (`/dev/nvme*`)
3939
- Filesystem: ext4
4040

@@ -57,6 +57,11 @@ Reth is currently the most performant client for running Base nodes. Future opti
5757

5858
### Geth Performance Tuning
5959

60+
<Warning>
61+
Geth is no longer supported and Reth is the recommended client. We recommend migrating Geth nodes to Reth.
62+
</Warning>
63+
64+
6065
#### Geth Cache Settings
6166

6267
For Geth nodes, tuning cache allocation via environment variables can improve performance. These settings are used in the standard Docker configuration:

docs/base-chain/node-operators/run-a-base-node.mdx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ If you're just getting started and need an RPC URL, you can use our free endpoin
2323

2424
**Note:** Our RPCs are rate-limited, they are not suitable for production apps.
2525

26-
If you're looking to harden your app and avoid rate-limiting for your users, please check out one of our [partners](/base-chain/tools/node-providers).
26+
If you're looking to harden your app and avoid rate-limiting for your users, please consider using an endpoint from one of our [partners](/base-chain/tools/node-providers).
2727
</Warning>
2828

2929

@@ -77,16 +77,16 @@ If you're a prospective or current Base Node operator and would like to restore
7777

7878
#### Restoring from snapshot
7979

80-
In the home directory of your Base Node, create a folder named `geth-data` or `reth-data`. If you already have this folder, remove it to clear the existing state and then recreate it. Next, run the following code and wait for the operation to complete.
80+
In the home directory of your Base Node, create a folder named `reth-data` or `geth-data`. If you already have this folder, remove it to clear the existing state and then recreate it. Next, run the following code and wait for the operation to complete.
8181

82-
| Network | Client | Snapshot Type | Command |
83-
| ------- | ------ | ------------- | --------------------------------------------------------------------------------------------------------------------- |
84-
| Testnet | Geth | Full | `wget https://sepolia-full-snapshots.base.org/$(curl https://sepolia-full-snapshots.base.org/latest)` |
85-
| Testnet | Reth | Archive | `wget https://sepolia-reth-archive-snapshots.base.org/$(curl https://sepolia-reth-archive-snapshots.base.org/latest)` |
86-
| Mainnet | Geth | Full | `wget https://mainnet-full-snapshots.base.org/$(curl https://mainnet-full-snapshots.base.org/latest)` |
87-
| Mainnet | Reth | Archive | `wget https://mainnet-reth-archive-snapshots.base.org/$(curl https://mainnet-reth-archive-snapshots.base.org/latest)` |
82+
| Network | Client | Snapshot Type | Command |
83+
| ------- | ------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------- |
84+
| Testnet | Reth (recommended) | Archive | `wget https://sepolia-reth-archive-snapshots.base.org/$(curl https://sepolia-reth-archive-snapshots.base.org/latest)` |
85+
| Testnet | Geth | Full | `wget https://sepolia-full-snapshots.base.org/$(curl https://sepolia-full-snapshots.base.org/latest)` |
86+
| Mainnet | Reth (recommended) | Archive | `wget https://mainnet-reth-archive-snapshots.base.org/$(curl https://mainnet-reth-archive-snapshots.base.org/latest)` |
87+
| Mainnet | Geth | Full | `wget https://mainnet-full-snapshots.base.org/$(curl https://mainnet-full-snapshots.base.org/latest)` |
8888

89-
You'll then need to untar the downloaded snapshot and place the `geth` subfolder inside of it in the `geth-data` folder you created (unless you changed the location of your data directory).
89+
You'll then need to untar the downloaded snapshot and place the `reth` subfolder inside of it in the `reth-data` folder you created (unless you changed the location of your data directory).
9090

9191
Return to the root of your Base node folder and start your node.
9292

docs/base-chain/node-operators/snapshots.mdx

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,24 @@ These steps assume you are in the cloned `node` directory (the one containing `d
1717

1818
1. **Prepare Data Directory**:
1919
- **Before running Docker for the first time**, create the data directory on your host machine that will be mapped into the Docker container. This directory must match the `volumes` mapping in the `docker-compose.yml` file for the client you intend to use.
20-
- For Geth:
20+
- For Reth (recommended):
2121
```bash
22-
mkdir ./geth-data
22+
mkdir ./reth-data
2323
```
24-
- For Reth:
24+
- For Geth:
2525
```bash
26-
mkdir ./reth-data
26+
mkdir ./geth-data
2727
```
28-
- If you have previously run the node and have an existing data directory, **stop the node** (`docker compose down`), remove the _contents_ of the existing directory (e.g. `rm -rf ./geth-data/*`), and proceed.
28+
- If you have previously run the node and have an existing data directory, **stop the node** (`docker compose down`), remove the _contents_ of the existing directory (e.g. `rm -rf ./reth-data/*`), and proceed.
2929

3030
2. **Download Snapshot**: Choose the appropriate snapshot for your network and client from the table below. Use `wget` (or similar) to download it into the `node` directory.
3131

3232
| Network | Client | Snapshot Type | Download Command (`wget …`) |
3333
| -------- | ------ | ------------- | ----------------------------------------------------------------------------------------------------------------- |
34-
| Testnet | Geth | Full | `wget https://sepolia-full-snapshots.base.org/$(curl https://sepolia-full-snapshots.base.org/latest)` |
3534
| Testnet | Reth | Archive | `wget https://sepolia-reth-archive-snapshots.base.org/$(curl https://sepolia-reth-archive-snapshots.base.org/latest)` |
36-
| Mainnet | Geth | Full | `wget https://mainnet-full-snapshots.base.org/$(curl https://mainnet-full-snapshots.base.org/latest)` |
35+
| Testnet | Geth | Full | `wget https://sepolia-full-snapshots.base.org/$(curl https://sepolia-full-snapshots.base.org/latest)` |
3736
| Mainnet | Reth | Archive | `wget https://mainnet-reth-archive-snapshots.base.org/$(curl https://mainnet-reth-archive-snapshots.base.org/latest)` |
37+
| Mainnet | Geth | Full | `wget https://mainnet-full-snapshots.base.org/$(curl https://mainnet-full-snapshots.base.org/latest)` |
3838

3939
<Note>
4040
Ensure you have enough free disk space to download the snapshot archive (`.tar.gz` file) _and_ extract its contents. The extracted data will be significantly larger than the archive.
@@ -46,9 +46,16 @@ These steps assume you are in the cloned `node` directory (the one containing `d
4646
tar -xzvf <snapshot-filename.tar.gz>
4747
```
4848

49-
4. **Move Data**: The extraction process will likely create a directory (e.g., `geth` or `reth`).
49+
4. **Move Data**: The extraction process will likely create a directory (e.g., `reth` or `geth`).
5050

5151
* Move the *contents* of that directory into the data directory you created in Step 1.
52+
* Example (if archive extracted to a reth folder - **verify actual folder name**):
53+
54+
```bash
55+
# For Reth
56+
mv ./reth/* ./reth-data/
57+
rm -rf ./reth # Clean up empty extracted folder
58+
```
5259

5360
* Example (if archive extracted to a geth folder):
5461

@@ -58,20 +65,12 @@ These steps assume you are in the cloned `node` directory (the one containing `d
5865
rm -rf ./geth # Clean up empty extracted folder
5966
```
6067

61-
* Example (if archive extracted to a reth folder - **verify actual folder name**):
62-
63-
```bash
64-
# For Reth
65-
mv ./reth/* ./reth-data/
66-
rm -rf ./reth # Clean up empty extracted folder
67-
```
68-
69-
* The goal is to have the chain data directories (e.g., `chaindata`, `nodes`, `segments`, etc.) directly inside `./geth-data` or `./reth-data`, not nested within another subfolder.
68+
* The goal is to have the chain data directories (e.g., `chaindata`, `nodes`, `segments`, etc.) directly inside `./reth-data` or `./geth-data`, not nested within another subfolder.
7069

7170
5. **Start the Node**: Now that the snapshot data is in place, start the node using the appropriate command (see the [Running a Base Node](/base-chain/node-operators/run-a-base-node#setting-up-and-running-the-node) guide):
7271

7372
```bash
74-
# Example for Mainnet Geth
73+
# Example for Mainnet Reth
7574
docker compose up --build -d
7675
```
7776

docs/base-chain/node-operators/troubleshooting.mdx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ This guide covers common issues encountered when setting up and running a Base n
1010
Before diving into specific issues, here are some general steps that often help:
1111

1212
1. **Check Container Logs**: This is usually the most informative step. Use `docker compose logs -f <service_name>` to view the real-time logs for a specific container.
13-
- L2 Client (Geth): `docker compose logs -f op-geth`
1413
- L2 Client (Reth): `docker compose logs -f op-reth`
14+
- L2 Client (Geth): `docker compose logs -f op-geth`
1515
- Rollup Node: `docker compose logs -f op-node`. Look for errors, warnings, or repeated messages.
1616

1717
2. **Check Container Status**: Ensure the relevant Docker containers are running: `docker compose ps`. If a container is restarting frequently or exited, check its logs.
@@ -42,14 +42,14 @@ Before diving into specific issues, here are some general steps that often help:
4242
- **Issue**: Errors related to JWT secret or authentication between `op-node` and L2 client.
4343
- **Check**: Ensure you haven't manually modified the `OP_NODE_L2_ENGINE_AUTH` variable or the JWT file path (`$OP_NODE_L2_ENGINE_AUTH`) unless you know what you're doing. The `docker-compose` setup usually handles this automatically.
4444

45-
- **Issue**: Permission errors related to data volumes (`./geth-data`, `./reth-data`).
46-
- **Check**: Ensure the user running `docker compose` has write permissions to the directory where the `node` repository was cloned. Docker needs to be able to write to `./geth-data` or `./reth-data`. Sometimes running Docker commands with `sudo` can cause permission issues later; try running as a non-root user added to the `docker` group.
45+
- **Issue**: Permission errors related to data volumes (`./reth-data`, `./geth-data`).
46+
- **Check**: Ensure the user running `docker compose` has write permissions to the directory where the `node` repository was cloned. Docker needs to be able to write to `./reth-data` or `./geth-data`. Sometimes running Docker commands with `sudo` can cause permission issues later; try running as a non-root user added to the `docker` group.
4747

4848
### Syncing Problems
4949

5050
- **Issue**: Node doesn't start syncing or appears stuck (block height not increasing).
5151
- **Check**: `op-node` logs. Look for errors connecting to L1 endpoints or the L2 client.
52-
- **Check**: L2 client (`op-geth`/`op-reth`) logs. Look for errors connecting to `op-node` via the Engine API (port `8551`) or P2P issues.
52+
- **Check**: L2 client (`op-reth`/`op-geth`) logs. Look for errors connecting to `op-node` via the Engine API (port `8551`) or P2P issues.
5353
- **Check**: L1 node health and sync status. Is the L1 node accessible and fully synced?
5454
- **Check**: System time. Ensure the server’s clock is accurately synchronized (use `ntp` or `chrony`). Significant time drift can cause P2P issues.
5555

@@ -60,7 +60,7 @@ Before diving into specific issues, here are some general steps that often help:
6060
- **Check**: `op-node` and L2 client logs for any performance warnings or errors.
6161

6262
- **Issue**: `optimism_syncStatus` (port `7545` on `op-node`) shows a large time difference or errors.
63-
- **Action**: Check the logs for both `op-node` and the L2 client (`op-geth`/`op-reth`) around the time the status was checked to identify the root cause (e.g., L1 connection issues, L2 client issues).
63+
- **Action**: Check the logs for both `op-node` and the L2 client (`op-reth`/`op-geth`) around the time the status was checked to identify the root cause (e.g., L1 connection issues, L2 client issues).
6464

6565
- **Issue**: `Error: nonce has already been used` when trying to send transactions.
6666
- **Cause**: The node is not yet fully synced to the head of the chain.
@@ -69,10 +69,10 @@ Before diving into specific issues, here are some general steps that often help:
6969
### Performance Issues
7070

7171
- **Issue**: High CPU, RAM, or Disk I/O usage.
72+
- **Action**: If running Geth, we highly recommend migrating to Reth, as it’s the recommended client and generally more performant for Base.
7273
- **Check**: Hardware specifications against recommendations in the [Node Performance](/base-chain/node-operators/performance-tuning). Upgrade if necessary. Local NVMe SSDs are critical.
7374
- **Check**: (Geth) Review Geth cache settings and LevelDB tuning options mentioned in [Node Performance – Geth Performance Tuning](/base-chain/node-operators/performance-tuning#geth-performance-tuning) and [Advanced Configuration](/base-chain/node-operators/run-a-base-node#geth-configuration-via-environment-variables).
7475
- **Check**: Review client logs for specific errors or bottlenecks.
75-
- **Action**: Consider using Reth if running Geth, as it’s generally more performant for Base.
7676

7777
### Snapshot Restoration Problems
7878

@@ -90,8 +90,8 @@ Refer to the [Snapshots](/base-chain/node-operators/snapshots) guide for the cor
9090

9191
- **Issue**: Node fails to start after restoring snapshot; logs show database errors or missing files.
9292
- **Check**: Did you stop the node (`docker compose down`) _before_ modifying the data directory?
93-
- **Check**: Did you remove the _contents_ of the old data directory (`./geth-data/*` or `./reth-data/*`) before extracting/moving the snapshot data?
94-
- **Check**: Was the snapshot data moved correctly? The chain data needs to be directly inside `./geth-data` or `./reth-data`, not in a nested subfolder (e.g., `./geth-data/geth/...`). Verify the folder structure.
93+
- **Check**: Did you remove the _contents_ of the old data directory (`./reth-data/*` or `./geth-data/*`) before extracting/moving the snapshot data?
94+
- **Check**: Was the snapshot data moved correctly? The chain data needs to be directly inside `./reth-data` or `./geth-data`, not in a nested subfolder (e.g., `./reth-data/reth/...`). Verify the folder structure.
9595

9696
- **Issue**: Ran out of disk space during download or extraction.
9797
- **Action**: Free up disk space or provision a larger volume. Remember the storage formula:
@@ -102,7 +102,7 @@ Refer to the [Snapshots](/base-chain/node-operators/snapshots) guide for the cor
102102
### Networking / Connectivity Issues
103103

104104
- **Issue**: RPC/WS connection refused (e.g., `curl` to `localhost:8545` fails).
105-
- **Check**: Is the L2 client container (`op-geth`/`op-reth`) running (`docker compose ps`)?
105+
- **Check**: Is the L2 client container (`op-reth`/`op-geth`) running (`docker compose ps`)?
106106
- **Check**: Are you using the correct port (`8545` for HTTP, `8546` for WS by default)?
107107
- **Check**: L2 client logs. Did it fail to start the RPC server?
108108
- **Check**: Are the `--http.addr` and `--ws.addr` flags set to `0.0.0.0` in the client config/entrypoint to allow external connections (within the Docker network)?

0 commit comments

Comments
 (0)