Ethereum implementation on the efficiency frontier
3,584
stars
30,607
commits
Go
primary language
Sep 11, 2026
updated
Erigon is an implementation of Ethereum (execution layer with embeddable consensus layer), on the efficiency frontier.
Download | Documentation | Blog
This README is for people working on the repository. Everything about operating a node — install methods, flags, pruning modes, ports, monitoring, staking — is on the documentation site.
The Erigon documentation answers most questions. Useful starting points:
archive, full, blocks, minimalIn-depth links are marked by the microscope sign (🔬)
debug_getModifiedAccountsByNumber return
it--internalcl is enabled by default. to disable use --externalcl.chaindata is tens of gb (22gb on an archive mainnet node). It's ok to rm -rf chaindata. (to prevent grow: recommend --batchSize <= 1G)--prune flags changed: see --prune.mode (default: full, archive: archive, EIP-4444: minimal)--sync.loop.block.limit=5_000 enabled by defaultLog flags, log levels and log files: Logs and the CLI reference.
The torrent client in the Downloader keeps its own file, logs/torrent.log. It is written at whichever is more
verbose of --torrent.verbosity and WARN, so warnings and errors always reach it even at the default verbosity.
Messages at --torrent.verbosity or above are additionally forwarded to Erigon's own file and console loggers, which
emit them only if --log.dir.verbosity and --verbosity are themselves verbose enough.
Block production is fully supported for Ethereum & Gnosis Chain.
Erigon can be used as an Execution Layer for external Consensus Layer clients. See JWT secret and Ethereum with an external CL.
Caplin is Erigon's embedded Consensus Layer, enabled by default. Flags, archival modes and Beacon API configuration: Caplin and Caplin for staking.
Why a new Consensus Layer rather than the Engine API: the Engine API delivers blocks one at a time, which does not suit Erigon's bulk model — Erigon is built to handle many blocks simultaneously and to sort and process data in batches. Owning the consensus layer lets Erigon drive block handling on its own terms instead of being paced by the Engine API.
🔬 Detailed explanation is DEV_CHAIN.
Toolchain: Go >= 1.25, GCC 10+ or Clang, 64-bit architecture. On Linux, kernel > v4.
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
Binaries land in ./build/bin. Use -j<n> to parallelise the build. Packaged binaries, Docker images and the
per-platform install steps are on the
installation page; to build a specific release rather than main,
check out its tag.
On Windows, build natively (Chocolatey, MinGW, and the MinGW anti-virus false-positive workaround) or under WSL2: Native compilation and WSL.
make erigon builds the node; make all builds the full suite into ./build/bin. make help lists every target.
| Command | Description |
|---|---|
erigon | The node: execution layer with the embedded consensus layer (Caplin) |
rpcdaemon | JSON-RPC server; runs in-process or standalone against a local or remote Erigon |
sentry | The p2p layer as an independent process |
txpool | The transaction pool as an independent process |
downloader | Snapshot downloader, and verification of webseed metainfos against the preverified set |
integration | Sync-stage and datadir maintenance tool — see cmd/integration/Readme.md |
evm | Standalone EVM for running bytecode, disassembling and full trace logs |
mcp | Standalone MCP server for Erigon |
caplin, capcli, snapshots, rpctest and pics are also built by make all.
make test-short # fast unit tests
make test-all # full test suite
make test-fixtures-cl # consensus-spec fixtures (also: test-fixtures-eest, test-fixtures-zkevm)
make lint # run before opening or updating a PR
docs/TESTING.md covers the release-time incremental-sync verification, which is a separate exercise from the test suite above.
# please use git branch name (or commit hash). don't use git tags
go get github.com/erigontech/erigon@main
go mod tidy
Most of Erigon's components (txpool, rpcdaemon, snapshots downloader, sentry, ...) can run inside Erigon or as independent processes. Deployment modes, flags and remote (Remote DB) setup: RPC Daemon and cmd/rpcdaemon/README.md.
Every default port, the flags that change them, and firewalling guidance: Default ports and Security.
Ports to open and the reserved IPv4 ranges to block: Hetzner firewall note.
systemd exampleRunning erigon from build/bin as a separate user requires the binaries to be installed using make DIST=<path> install. You could use $HOME/erigon
or /opt/erigon as the installation path, for example:
make DIST=/opt/erigon install
kill -SIGUSR1 <pid>, get trace and stop: kill -6 <pid>--pprof flag and rungo tool pprof -png http://127.0.0.1:6060/debug/pprof/profile\?seconds\=20 > cpu.png--pprof flag and rungo tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png 🔬 Detailed explanation is here.
Report vulnerabilities privately via Security → Report a vulnerability. Please don't open a public issue for one — see SECURITY.md.
Erigon is licensed under the GNU Lesser General Public License v3.0.
(top 30 of 390)
Go
98.9%
Ethereum implementation on the efficiency frontier
3,584
stars
30,607
commits
Go
primary language
Sep 11, 2026
updated
Erigon is an implementation of Ethereum (execution layer with embeddable consensus layer), on the efficiency frontier.
Download | Documentation | Blog
This README is for people working on the repository. Everything about operating a node — install methods, flags, pruning modes, ports, monitoring, staking — is on the documentation site.
The Erigon documentation answers most questions. Useful starting points:
archive, full, blocks, minimalIn-depth links are marked by the microscope sign (🔬)
debug_getModifiedAccountsByNumber return
it--internalcl is enabled by default. to disable use --externalcl.chaindata is tens of gb (22gb on an archive mainnet node). It's ok to rm -rf chaindata. (to prevent grow: recommend --batchSize <= 1G)--prune flags changed: see --prune.mode (default: full, archive: archive, EIP-4444: minimal)--sync.loop.block.limit=5_000 enabled by defaultLog flags, log levels and log files: Logs and the CLI reference.
The torrent client in the Downloader keeps its own file, logs/torrent.log. It is written at whichever is more
verbose of --torrent.verbosity and WARN, so warnings and errors always reach it even at the default verbosity.
Messages at --torrent.verbosity or above are additionally forwarded to Erigon's own file and console loggers, which
emit them only if --log.dir.verbosity and --verbosity are themselves verbose enough.
Block production is fully supported for Ethereum & Gnosis Chain.
Erigon can be used as an Execution Layer for external Consensus Layer clients. See JWT secret and Ethereum with an external CL.
Caplin is Erigon's embedded Consensus Layer, enabled by default. Flags, archival modes and Beacon API configuration: Caplin and Caplin for staking.
Why a new Consensus Layer rather than the Engine API: the Engine API delivers blocks one at a time, which does not suit Erigon's bulk model — Erigon is built to handle many blocks simultaneously and to sort and process data in batches. Owning the consensus layer lets Erigon drive block handling on its own terms instead of being paced by the Engine API.
🔬 Detailed explanation is DEV_CHAIN.
Toolchain: Go >= 1.25, GCC 10+ or Clang, 64-bit architecture. On Linux, kernel > v4.
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
Binaries land in ./build/bin. Use -j<n> to parallelise the build. Packaged binaries, Docker images and the
per-platform install steps are on the
installation page; to build a specific release rather than main,
check out its tag.
On Windows, build natively (Chocolatey, MinGW, and the MinGW anti-virus false-positive workaround) or under WSL2: Native compilation and WSL.
make erigon builds the node; make all builds the full suite into ./build/bin. make help lists every target.
| Command | Description |
|---|---|
erigon | The node: execution layer with the embedded consensus layer (Caplin) |
rpcdaemon | JSON-RPC server; runs in-process or standalone against a local or remote Erigon |
sentry | The p2p layer as an independent process |
txpool | The transaction pool as an independent process |
downloader | Snapshot downloader, and verification of webseed metainfos against the preverified set |
integration | Sync-stage and datadir maintenance tool — see cmd/integration/Readme.md |
evm | Standalone EVM for running bytecode, disassembling and full trace logs |
mcp | Standalone MCP server for Erigon |
caplin, capcli, snapshots, rpctest and pics are also built by make all.
make test-short # fast unit tests
make test-all # full test suite
make test-fixtures-cl # consensus-spec fixtures (also: test-fixtures-eest, test-fixtures-zkevm)
make lint # run before opening or updating a PR
docs/TESTING.md covers the release-time incremental-sync verification, which is a separate exercise from the test suite above.
# please use git branch name (or commit hash). don't use git tags
go get github.com/erigontech/erigon@main
go mod tidy
Most of Erigon's components (txpool, rpcdaemon, snapshots downloader, sentry, ...) can run inside Erigon or as independent processes. Deployment modes, flags and remote (Remote DB) setup: RPC Daemon and cmd/rpcdaemon/README.md.
Every default port, the flags that change them, and firewalling guidance: Default ports and Security.
Ports to open and the reserved IPv4 ranges to block: Hetzner firewall note.
systemd exampleRunning erigon from build/bin as a separate user requires the binaries to be installed using make DIST=<path> install. You could use $HOME/erigon
or /opt/erigon as the installation path, for example:
make DIST=/opt/erigon install
kill -SIGUSR1 <pid>, get trace and stop: kill -6 <pid>--pprof flag and rungo tool pprof -png http://127.0.0.1:6060/debug/pprof/profile\?seconds\=20 > cpu.png--pprof flag and rungo tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png 🔬 Detailed explanation is here.
Report vulnerabilities privately via Security → Report a vulnerability. Please don't open a public issue for one — see SECURITY.md.
Erigon is licensed under the GNU Lesser General Public License v3.0.
(top 30 of 390)
Go
98.9%