Erigon¶
Introduction¶
Erigon (formerly Turbo-Geth) is a high-efficiency implementation of an Ethereum execution layer client, developed in Go, with a focus on performance optimization and storage efficiency. Developed by the Ledgerwatch team, Erigon's design goal is to provide the fastest sync speed and minimal disk usage, making it more economically feasible to run Ethereum full nodes and archive nodes.
Erigon achieves performance improvements several times greater than traditional clients (such as Geth) by redesigning the database architecture, optimizing state storage, and improving sync algorithms. It is particularly well-suited for scenarios requiring fast synchronization, running archive nodes, or operating in disk-constrained environments. Erigon has become the preferred client for Ethereum infrastructure providers, block explorers, and data analytics platforms.
Core Features¶
Efficient Storage Architecture¶
Erigon's core innovation lies in its unique database design: - Flat storage model: Abandons the traditional Merkle Patricia Trie storage in favor of flat key-value storage, significantly reducing disk usage - MDBX database: Uses the high-performance MDBX (based on LMDB) as its storage engine, providing excellent read/write performance - Historical data compression: Intelligently compresses historical state data; archive node disk usage can be reduced by over 70% compared to Geth - Incremental snapshots: Stores only state changes, avoiding redundant storage of identical data
These optimizations reduce the disk requirements for running an Ethereum archive node from several TB to 1-2 TB.
Ultra-Fast Sync¶
Erigon's sync speed ranks among the top Ethereum clients: - Parallel downloads: Fully utilizes multi-core CPUs and network bandwidth to download and process blocks in parallel - Staged sync: Divides synchronization into multiple optimized stages (Headers, Bodies, Execution, etc.), each independently optimized - Incremental verification: Verifies while downloading, reducing wait time - Fast recovery: Can quickly resume sync after interruption without starting over
Full node sync time can be shortened to 1-2 days, and archive nodes can also complete sync within a reasonable timeframe.
Modular Staged Architecture¶
Erigon adopts a unique Staged Sync architecture: 1. Headers stage: Downloads block headers 2. Block Hashes stage: Downloads block hashes 3. Bodies stage: Downloads block bodies 4. Senders stage: Recovers transaction senders 5. Execution stage: Executes transactions and updates state 6. HashState stage: Computes state hashes 7. Intermediate Hashes stage: Computes intermediate hashes 8. Account Hashing stage: Computes account hashes 9. Storage Hashing stage: Computes storage hashes
Each stage can be independently optimized and parallelized for optimal performance.
Comprehensive Archive Node Support¶
Erigon is deeply optimized for archive nodes: - Efficient historical queries: Fast queries of state at any block height - trace and debug API: Full support for Ethereum's trace and debug RPC methods - Historical data indexing: Builds indexes for historical data to accelerate queries - Reasonable resource usage: Even archive nodes can run on standard hardware
RPC and API¶
Erigon provides comprehensive API support: - Standard JSON-RPC: Compatible with the Ethereum standard API - Extended API: Additional trace and debug methods - Multi-protocol support: HTTP, WebSocket, IPC - High concurrency handling: Optimized RPC server supporting a large number of concurrent requests
Client Characteristics¶
Leading Storage Efficiency: Through innovative storage architecture, Erigon leads in disk usage: - Full node: ~400-600 GB (Geth requires 800+ GB) - Archive node: ~1-2 TB (Geth requires 10+ TB)
Fastest Sync Speed: Staged sync and parallelized design make Erigon one of the fastest-syncing Ethereum clients.
Open Source and Community-Driven: Fully open source under the LGPL-3.0 license. Active developer community with rapid iteration and improvement.
Modular Design: Clean modular architecture that is easy to understand, maintain, and extend. Developers can easily contribute code or customize features.
Performance Monitoring: Built-in detailed performance metrics and diagnostic tools for optimization and troubleshooting.
Backward Compatible: Fully compatible with the Ethereum protocol and existing toolchain, serving as a seamless replacement for other clients.
Development History¶
2019: Project launched under the name Turbo-Geth, with the goal of optimizing Geth's performance.
2020: Introduced the innovative Staged Sync architecture, significantly improving sync speed. Began gaining attention from the Ethereum community.
March 2021: Turbo-Geth was renamed to Erigon, marking the project's maturity and independent identity. Received funding from the Ethereum Foundation and other organizations.
2021-2022: Continued optimization of storage and sync algorithms, supporting Ethereum mainnet hard forks. Increasingly adopted by infrastructure providers.
September 2022: Successfully supported The Merge, providing stable execution layer client services.
2023: Supported Shanghai/Capella and Cancun/Deneb upgrades. Further optimized archive node performance, becoming the preferred choice for running archive nodes.
2024 to present: Continues pushing performance boundaries and exploring new optimization techniques. Expanding ecosystem support, including Layer 2 and other EVM chains.
Use Cases¶
- Archive node service providers: Providing historical data query services, block explorers, analytics platforms
- DApp infrastructure: Providing fast and reliable RPC services for DApps
- Data analytics: On-chain data analysis, research, auditing
- MEV searchers: Requiring fast access to on-chain data and historical state
- Developers: Local development environments requiring fast testnet or mainnet sync
- Staking providers: Paired with consensus layer clients to run validators
- Resource-constrained environments: VPS or servers with limited disk space
Related Links¶
- GitHub: https://github.com/ledgerwatch/erigon
- Documentation: https://github.com/ledgerwatch/erigon#documentation
- Discord: https://github.com/ledgerwatch/erigon#getting-in-touch
- Telegram: https://t.me/ErigonClient
- Twitter: https://twitter.com/ErigonEth