diff --git a/README.md b/README.md index 0540340..3655ffd 100644 --- a/README.md +++ b/README.md @@ -59,38 +59,31 @@ The following links, repos, companies and projects have been important in the de 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 +## Current Status -The initial project setup and integration with [lean-quickstart](https://github.com/blockblaz/lean-quickstart) are complete. +The client implements the core features of a Lean Ethereum consensus client: -### Listen for new blocks +- **Networking** — libp2p peer connections, STATUS message handling, gossipsub for blocks and attestations +- **State management** — genesis state generation, state transition function, block processing +- **Fork choice** — 3SF-mini fork choice rule implementation with attestation-based head selection +- **Validator duties** — attestation production and broadcasting, block building -This milestone focuses on connecting to other clients and listening for new blocks through gossipsub. +Additional features: -- Connect to other peers via libp2p ✅ -- Respond to STATUS messages from other peers ✅ -- Listen for new blocks in gossipsub ✅ +- [leanMetrics](docs/metrics.md) support for monitoring and observability +- [lean-quickstart](https://github.com/blockblaz/lean-quickstart) integration for easier devnet running -### Compute current chain state +### pq-devnet-1 -This milestone focuses on computing the chain state from the gossiped by peers received. +We support the [pq-devnet-1 spec](https://github.com/leanEthereum/pm/blob/main/breakout-rooms/leanConsensus/pq-interop/pq-devnet-1.md). A dedicated git branch and docker tag `devnet1` are available for this version. -- Generate initial state from genesis configuration ✅ -- Implement state transition function ✅ -- Transition state on each new block ✅ +## Incoming features -### Apply fork-choice rule +Some features we are looking to implement in the near future, in order of priority: -This milestone focuses on choosing the head of the chain based on gossiped attestations. - -- Listen for attestations in gossipsub ✅ -- Implement fork-choice rule ✅ -- Apply fork-choice rule based on received attestations ✅ - -### Produce blocks and attestations - -This milestone focuses on performing the duties of a validator. - -- Produce and broadcast attestations on each slot ✅ -- Compute current proposer for each slot ✅ -- Build and broadcast new blocks when proposing ✅ +- [pq-devnet-2](https://github.com/leanEthereum/pm/blob/main/breakout-rooms/leanConsensus/pq-interop/pq-devnet-2.md) support: signature aggregation with leanMultisig +- Data persistence: DB-backed Store +- Historical syncing from genesis for existing devnets +- Checkpoint sync for long-lived networks +- Observability: more metrics from leanMetrics and better logs +- RPC endpoints for chain data consumption diff --git a/docs/metrics.md b/docs/metrics.md index a944d82..21b8a5e 100644 --- a/docs/metrics.md +++ b/docs/metrics.md @@ -2,6 +2,8 @@ We collect various metrics and serve them via a Prometheus-compatible HTTP endpoint at `http://:/metrics` (default: `http://127.0.0.1:5054/metrics`). +We provide a ready-to-use Grafana + Prometheus monitoring stack in the [`metrics/`](../metrics/) directory. It includes pre-configured dashboards from the [leanMetrics](https://github.com/leanEthereum/leanMetrics) repository for visualizing the metrics described below. See the [metrics README](../metrics/README.md) for setup instructions. + The exposed metrics follow [the leanMetrics specification](https://github.com/leanEthereum/leanMetrics/blob/3b32b300cca5ed7a7a2b3f142273fae9dbc171bf/metrics.md), with some metrics not yet implemented. We have a full list of implemented metrics below, with a checkbox indicating whether each metric is currently supported or not. ## Node Info Metrics