Skip to content

Latest commit

 

History

History
102 lines (67 loc) · 5.56 KB

README.md

File metadata and controls

102 lines (67 loc) · 5.56 KB

Reth

CI status
cargo-deny status

A modular, contributor-friendly, and blazing-fast implementation of the Ethereum protocol

Quick Links:

What is Reth?

Reth (short for Rust Ethereum, pronunciation) is a modern Ethereum full-node implementation designed to be user-friendly, highly modular, and performance-driven. It serves as an Execution Layer (EL) node, fully compatible with all Ethereum Consensus Layer (CL) implementations that support the Engine API.

Developed and maintained by Paradigm, Reth is distributed under the permissive Apache and MIT licenses.

Goals

Reth enables users to connect to the Ethereum network, send/receive transactions, access blockchain data, and interact with smart contracts. Its primary objectives include:

  1. Modularity: Every component of Reth is designed as a reusable library—thoroughly tested, well-documented, and benchmarked. Developers can import its crates, customize functionalities, and build unique use cases. Examples include creating standalone P2P networks, interacting directly with the node database, or unbundling specific features.
  2. Performance: Reth is engineered for speed using Rust and the Erigon staged-sync architecture. Its components, like Alloy and revm, are optimized through extensive testing.
  3. Open and Free: Licensed under Apache/MIT, Reth encourages unrestricted usage without concerns over restrictive business or GPL-like licenses.
  4. Client Diversity: A diverse Ethereum ecosystem is more resilient to bugs and vulnerabilities. By introducing Reth, we aim to enhance the network's robustness.
  5. Multi-Chain Support: Reth aspires to support not only Ethereum but also EVM-compatible chains such as Optimism, Polygon, and Binance Smart Chain.
  6. Configurability: Reth caters to a variety of users, from hobbyists with limited hardware to professionals seeking optimal performance. Configurable profiles allow flexibility for different trade-offs, including full sync and fast sync modes.

Current Status

Reth is production-ready and recommended for mission-critical applications like staking, high-uptime services, RPC, MEV, indexing, and simulations.

Milestones

  • June 2024: Released Reth 1.0, labeled “production-ready.”
  • Iterative updates through beta and alpha phases, starting with alpha.1 in June 2023.

Database Compatibility

No database-breaking changes have occurred since beta.1. However, users with pre-beta databases must drop and resync using the latest commands.

User Resources

Developer Resources

Using Reth as a Library

Reth’s crates are modular and can be used independently in projects. See the Crate Documentation for details.

Contributing

Contributions are welcome! Join discussions on Telegram, or check out:

Building and Testing

The Minimum Supported Rust Version (MSRV) is 1.82.0.

  1. Clone the repository:
    git clone https://github.com/paradigmxyz/reth
    cd reth
  2. Run tests:
    • Without Geth: cargo test --workspace
    • With Geth: cargo test --workspace --features geth-tests

For faster tests, use cargo nextest.

Need Help?

Security

Refer to SECURITY.md.

Acknowledgments

Special thanks to:

  • Geth for years of foundational work.
  • Erigon for pioneering the "Staged Sync" architecture.
  • Akula for their Apache-licensed libraries, which accelerated Reth's development.

This version emphasizes clarity and professional tone while maintaining the structure and technical details.