A Go consensus client for Lean Ethereum, built around the idea that protocol simplicity is a security property.
A consensus client should be something a developer can read, understand, and verify without needing to trust a small class of experts. If you can't inspect it end-to-end, it's not fully yours.
A complete redesign of Ethereum's consensus layer, hardened for security, decentralization, and finality in seconds.
- Readable over clever. Code is written so that someone unfamiliar with the codebase can follow it. Naming is explicit. Control flow is linear where possible.
- Minimal dependencies. Fewer imports means fewer things that can break, fewer things to audit, and fewer things to understand.
- No premature abstraction. Interfaces and generics are introduced when the duplication is real, not when it's hypothetical. Concrete types until proven otherwise.
- Flat and direct. Avoid deep package hierarchies and layers of indirection. A function should do what its name says, and you should be able to find it quickly.
- Concurrency only where necessary. Go makes concurrency easy to write and hard to reason about. We use it at the boundaries (networking, event loops) and keep the core logic sequential and deterministic.
| Devnet | Status | Spec pin |
|---|---|---|
| pq-devnet-0 | Complete | leanSpec@4b750f2 |
| pq-devnet-1 | In progress | leanSpec@050fa4a, leanSig@f10dcbe |
devnet-1 progress:
- Done: consensus envelope pipeline (
SignedAttestation,SignedBlockWithAttestation, proposer-attestation ordering, signed storage/sync path) - Next: XMSS/leanSig integration (CGo bindings, key management, signing, verification), then cross-client interop
# Build
make build
# Run tests
make test
# Lint
make lint
# Generate keys
./bin/keygen -validators 5 -keys-dir keys -print-yaml
# Run
make rungean is part of the lean-quickstart multi-client devnet tooling (integration in progress for devnet-1).
MIT