Consensus
written to be read.
gean is a Go consensus client for Lean Ethereum, built around the idea that protocol simplicity is a security property — readable, auditable, verifiable end-to-end.
$ make build $ ./bin/gean \ --genesis config.yaml \ --bootnodes nodes.yaml \ --validator-keys keys \ --node-id node0 [info] gean started. listening on :9000 [info] ENR · 0xa4f…b2c · peers 12 [ok] finalized slot 2,418,021 in 3.2s▍
Built for security, designed for developers.
Commitments expressed in the codebase you can read today — not a roadmap of intentions. Each is a constraint we hold ourselves to.
- 01
Post-Quantum Signatures
Post-quantum signature scheme — cryptographic security against quantum threats.
- 02
Sub-Second Finality
3SF-mini for finality and LMD GHOST as fork-choice algorithm — finality in seconds.
- 03
Checkpoint Sync
Checkpoint sync, attestation subnets, and an optional aggregator role.
- 04
Persistent Storage
Pebble DB for fast, durable state persistence.
- 05
Cross-Client Interop
Tested against zeam, ream, lantern, and ethlambda via lean-quickstart.
Protocol simplicity is a security property.
A consensus client should be something a developer can read, understand, and verify without trusting a small class of experts. If you can’t inspect it end-to-end, it’s not fully yours.
Read the source- 01
Readable over clever
Code is written so someone unfamiliar with the codebase can follow it. Naming is explicit. Control flow is linear where possible.
- 02
Minimal dependencies
Fewer imports means fewer things to break, audit, and understand.
- 03
No premature abstraction
Interfaces and generics are introduced when the duplication is real, not when it is hypothetical. Concrete types until proven otherwise.
- 04
Flat and direct
Avoid deep package hierarchies and layers of indirection. A function should do what its name says, and you should find it quickly.
- 05
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.
PQ Interop · devnet progress
pq-devnet-4Active
- Recursive PQ signature aggregationEnable recursive PQ signature aggregation using leanVm for efficient proof composition
- Aggregate coalescingCoalesce multiple aggregates for the same message into one final aggregate
- Single aggregate per message in blocksEnsure blocks contain a single aggregate per message instead of multiple aggregates
pq-devnet-5Planned
- Block-level proof aggregationAggregate all block proofs — including the block signature — into a single block-level proof to reduce overall block size
- Goldfish underlay fork-choiceReplace 3SF-mini with Goldfish as the underlay fork-choice protocol, including Goldfish vote production and propagation
- Multi-message aggregation (Type 1 & Type 2)Type 1 — single-message, single-slot recursive aggregation; Type 2 — aggregation across distinct (message, slot) pairs
- Deterministic committee selectioncommittee(slot) = proposer_validator(slot) + next N validators, derived from the proposer index per slot
- Delayed Goldfish vote inclusionSlot s — committee signs votes; s+1 — votes drive fork choice; s+2 — aggregates included in the block
- Depth-based placeholder finalityShip a naïve depth-based finality rule as a temporary placeholder, then iterate toward a proper overlay finality gadget
Protocol consensus, human consensus.
gean is MIT-licensed and maintained by an open network of independent node operators, researchers, and contributors.