Skip to content

lambdaclass/ethlambda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ethlambda

Minimalist, fast and modular implementation of the Lean Ethereum client written in Rust.

Getting started

We use cargo as our build system. To build and run the client, simply run:

cargo run

Run make help or take a look at our Makefile for other useful commands.

Running in a devnet

To quickly spin up a devnet, see lean-quickstart. We have a WIP integration with it in our fork.

Philosophy

Many long-established clients accumulate bloat over time. This often occurs due to the need to support legacy features for existing users or through attempts to implement overly ambitious software. The result is often complex, difficult-to-maintain, and error-prone systems.

In contrast, our philosophy is rooted in simplicity. We strive to write minimal code, prioritize clarity, and embrace simplicity in design. We believe this approach is the best way to build a client that is both fast and resilient. By adhering to these principles, we will be able to iterate fast and explore next-generation features early.

Read more about our engineering philosophy in this post of our blog.

Design Principles

  • Ensure effortless setup and execution across all target environments.
  • Be vertically integrated. Have the minimal amount of dependencies.
  • Be structured in a way that makes it easy to build on top of it.
  • Have a simple type system. Avoid having generics leaking all over the codebase.
  • Have few abstractions. Do not generalize until you absolutely need it. Repeating code two or three times can be fine.
  • Prioritize code readability and maintainability over premature optimizations.
  • Avoid concurrency split all over the codebase. Concurrency adds complexity. Only use where strictly necessary.

📚 References and acknowledgements

The following links, repos, companies and projects have been important in the development of this repo, we have learned a lot from them and want to thank and acknowledge them.

If we forgot to include anyone, please file an issue so we can add you. We always strive to reference the inspirations and code we use, but as an organization with multiple people, mistakes can happen, and someone might forget to include a reference.

Roadmap

  1. Initial project setup and integration with lean-quickstart
  2. Load network configuration and genesis block
  3. Connect to P2P layer and listen for new blocks
  4. Compute next chain state from received blocks
  5. Receive attestations from peers and apply fork-choice rule
  6. Produce and broadcast attestations for the head of the chain
  7. Build new blocks and broadcast them to peers

About

Minimalist, fast and modular implementation of the Lean Ethereum client written in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •