Consensus built
for clarity
A Go consensus client for Lean Ethereum, built around the idea that protocol simplicity is a security property.
$ make build
$ ./bin/gean \
--genesis config.yaml \
--bootnodes nodes.yaml \
--validator-keys keys \
--node-id node0
gean started. listening on :9000
Capabilities
Built for security,
designed for developers
Post-Quantum Ready
XMSS signature integration provides cryptographic security against quantum computing threats, future-proofing the consensus layer.
Fast Finality
A complete redesign of Ethereum's consensus layer delivers finality in seconds, not epochs. Security without the wait.
Readable by Design
Code written so anyone can follow it. Explicit naming, linear control flow, and no premature abstraction.
Minimal Dependencies
Fewer imports means fewer things that can break, fewer things to audit, and fewer things to understand.
P2P Networking
Full ENR and Discovery v5 implementation for peer discovery, built on libp2p with production-grade reliability.
Verifiable End-to-End
If you can't inspect it end-to-end, it's not fully yours. Every path is traceable, every decision auditable.
Philosophy
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.
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 and keep the core logic sequential and deterministic.
Roadmap
Current status
pq-devnet-0
leanSpec@4b750f2
All milestones complete
pq-devnet-1
leanSpec@050fa4a, leanSig@f10dcbe
Consensus envelope pipeline
SignedAttestation, SignedBlockWithAttestation, proposer-attestation ordering, signed storage/sync path
XMSS/leanSig integration
CGo bindings, key management, signing, verification
Cross-client interop
Multi-client devnet compatibility testing
pq-devnet-2
leanSpec@4edcf7b, leanSig@73bedc2, leanMultisig@e447413
Consensus envelope pipeline
SignedAttestation, SignedBlockWithAttestation, proposer-attestation ordering, signed storage/sync path
XMSS/leanSig/leanMultisig integration
CGo bindings, key management, signing, verification, signature aggregation
Cross-client interop
Multi-client devnet compatibility testing
Persitent Storage
Implement persistent storage
pq-devnet-3
leanSpec@TBD, leanSig@TBD, leanMultisig@TBD
Aggregator role decoupling
Separate aggregator role from block production, new is_aggregator ENR field, validator-config.yaml updates
Attestation subnet networking
attestation_{subnet_id} gossipsub topic, aggregation gossipsub topic, subnet assignment by validator_id % subnets_count
Aggregated signature propagation
Aggregators collect and aggregate attestations, propagate to aggregation topic, proposer includes aggregates in blocks
Slot interval restructuring
5 intervals × 800ms (build & propagate, attest, aggregate, update safe target, accept attestations)
Cross-client interop
Multi-client devnet with 5 initial validators (1 per client), north star target of 128 validators
Validation Network
Protocol Consensus
gean is MIT-licensed and maintained by a growing network of independent node operators and contributors.
Go
Language
MIT
License
76+
Stars
10
Contributors