Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Base Node

Base is a secure, low-cost, developer-friendly Ethereum L2 built on Optimism's [OP Stack](https://docs.optimism.io/). This repository contains a Docker build for running a Base node with `base-reth-node` and `base-consensus`.
Base is a secure, low-cost, developer-friendly Ethereum L2 running on the [Base stack](https://github.com/base/base). This repository contains a Docker build for running a Base node with `base-reth-node` and `base-consensus`.

[![Website base.org](https://img.shields.io/website-up-down-green-red/https/base.org.svg)](https://base.org)
[![Docs](https://img.shields.io/badge/docs-up-green)](https://docs.base.org/)
Expand Down Expand Up @@ -109,6 +109,30 @@ Snapshots are available to help you sync your node more quickly. See [docs.base.

For support please join our [Discord](https://discord.gg/buildonbase) and post in `🛠|node-operators`. You can alternatively open a new GitHub issue.

### Missing L1InfoDeposit error when using pruned snapshots

If you see an error like `EngineReset(SyncStart(FromBlock(MissingL1InfoDeposit(...))))` in the consensus logs after syncing with a pruned snapshot, it means the snapshot does not contain enough historical data for the consensus client to verify the L1 deposit contract initialization.

**Solution:** Use an unpruned (archive) snapshot or a pruned snapshot that includes at least the first ~40 days of history (approximately block 45,000,000 as of mid‑2026). Alternatively, sync from scratch without a snapshot, or use an archive node for the execution client.

**Steps to resolve:**

1. Verify the snapshot age: check the block number associated with the snapshot (provided in the snapshot name or description).

2. If the snapshot is older than ~40 days, download a newer snapshot from the official snapshots page: https://docs.base.org/chain/run-a-base-node#snapshots

3. If you prefer not to use snapshots, remove the snapshot data directory and let the node sync from genesis (this will take longer but guarantees completeness).

4. Ensure that both execution and consensus clients are using the same snapshot data directory (they share `/data` in the default compose setup).

```
# Example: remove old data and restart
rm -rf ./reth-data/*
docker compose up --build
```

**Note:** This issue is not a bug in the node software but a limitation of pruned snapshots that discard historic state needed for deposit contract verification.

## Disclaimer

THE NODE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. We make no guarantees about asset protection or security. Usage is subject to applicable laws and regulations.
Expand Down
2 changes: 1 addition & 1 deletion execution-entrypoint
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ exec "$BINARY" node \
--authrpc.port="$AUTHRPC_PORT" \
--authrpc.jwtsecret="$BASE_NODE_L2_ENGINE_AUTH" \
--metrics=0.0.0.0:"$METRICS_PORT" \
--max-outbound-peers=100 \
--max-outbound-peers=${RETH_MAX_OUTBOUND_PEERS:-100} \
--chain "$RETH_CHAIN" \
--rollup.sequencer-http="$RETH_SEQUENCER_HTTP" \
--rollup.disable-tx-pool-gossip \
Expand Down
4 changes: 3 additions & 1 deletion supervisord.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ logfile_maxbytes=0

[program:base-consensus]
command=/app/consensus-entrypoint
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
stopwaitsecs=300

[program:execution]
command=/app/execution-entrypoint
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
stopwaitsecs=300
stopwaitsecs=300