Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

erigontech/erigon

Finance

A Go implementation of an Ethereum execution node with an embedded consensus layer, built for efficient synchronization and large-scale node operation.

3,631
1,580
Go
LGPL-3.0
7 years old

What Erigon Is

Erigon is an Ethereum execution-layer client with an embeddable consensus layer (Caplin), written in Go. Its design centers on bulk block processing and an immutable-file storage model rather than a traditional key-value store. This affects what operators get: Erigon3 syncs by downloading roughly 99% of the LatestState and history instead of re-executing from genesis, keeps per-transaction history granularity, and stores most data in segment/snapshot files. Most of chaindata can be deleted and regenerated, and state can be symlinked or mounted on a fast drive while history lives on cheaper storage (README lines 38-54).

The repository README addresses people working on the codebase; everything about actually operating a node — installation, flags, pruning modes, ports, staking — lives on the documentation site and the installation guide.

Who It Is For

  • Node operators who need an Ethereum execution layer for mainnet or Gnosis Chain, with either the embedded Caplin consensus layer or an external CL client (JWT and external CL setup).
  • Validators: block production is supported, and --internalcl is enabled by default (README lines 67-76).
  • Developers building against Erigon's JSON-RPC, GraphQL, or gRPC namespaces (interacting with Erigon), or running the RPC daemon as a separate process (RPC daemon docs).
  • Contributors who need to compile, test, and modify the client itself.

Build and Run

Building requires Go >= 1.26, GCC 11+ or Clang 13+, a 64-bit architecture, and Linux kernel > v4. On x86-64 the build targets the x86-64-v2 baseline (SSE4.2, POPCNT); older CPUs are not supported (README lines 93-114).

git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon

The binary lands in ./build/bin. Use -j<n> to parallelize, and make all to build the full suite. make help lists every target. For a released version rather than main, check out its tag. Packaged binaries, Docker images, and per-platform instructions are on the installation page; Windows users can build natively or under WSL2 (native, WSL2).

Other executables include rpcdaemon, sentry, txpool, downloader, integration, evm, and an MCP server; make all also builds caplin, capcli, snapshots, rpctest, and pics (README lines 115-131). Running from build/bin as a separate user requires installing first, e.g. make DIST=/opt/erigon install (README lines 181-189).

Testing targets: make test-short, make test-all, make test-fixtures-cl (plus EEST and zkevm fixture suites), and make lint (README lines 132-143). Release-time incremental-sync verification is separate and covered in docs/TESTING.md.

Operational Constraints

  • Sync and storage behavior is version-specific: Erigon3 changed history granularity, stopped storing logs/receipts (historical transactions are re-executed), and changed --prune semantics. See pruning modes archive, full, blocks, minimal (pruning modes) and the CLI reference.
  • Caplin is enabled by default; set --externalcl to use an external consensus client instead.
  • Logging is split: the downloader's torrent client always writes logs/torrent.log at WARN or --torrent.verbosity, whichever is more verbose (README lines 60-66).
  • Firewall and port configuration matter in production, especially on Hetzner, which expects strict rules (firewall note).
  • To use Erigon as a library, pin a branch name or commit hash, not a tag: go get github.com/erigontech/erigon@main (README lines 144-150).
  • Licensed under LGPL-3.0 (COPYING).

HotRepo's take

Erigon's value is architectural rather than cosmetic: per-transaction history, snapshot-based sync, and an embedded consensus layer are deliberate trade-offs that favor large-scale node operation over a minimal footprint. The repo has 3,629 stars and 1,580 forks, with 3 stars gained in the 2026-11-15 daily Go snapshot, where it ranked 10th on that language list. That is a single day's record, not a trend; the lack of a broader time series makes it unwise to read much into momentum. What does stand out is the long tail of operational documentation and the split-process design (rpcdaemon, sentry, txpool, downloader), which suggests the project is meant for operators who want to separate concerns and tune components individually.

Written by AI from the project's README, updated . The project's own docs are the source of truth.

Hacker News

LMDB freelist (and B-tree) Illustrated Guide
▲ 2 · 0 comments · January 4, 2026

You might also like

  1. argotorg/solidityA compiler and language for writing smart contracts that run on the Ethereum Virtual Machine.C++25,761
  2. foundry-rs/foundryA Rust-based toolkit for building, testing, fuzzing, debugging, and deploying Ethereum smart contracts.Rust10,761
  3. ethereum-optimism/optimismCore OP Stack components for running and extending Optimism rollups on Ethereum.Go6,491