LightClientBootstrap
Introduces a new `LightClientBootstrap` structure to allow setting up a `LightClientStore` with the initial sync committee and block header from a user-configured trusted block root. This leads to new cases where the `LightClientStore` is only aware of the current but not the next sync committee. As a side effect of these new cases, the store's `finalized_header` may now advance into the next sync committee period before a corresponding `LightClientUpdate` with the new sync committee is obtained, improving responsiveness. Note that so far, `LightClientUpdate.attested_header.slot` needed to be newer than `LightClientStore.finalized_header.slot`. However, it is now necessary to also consider certain older updates to try and backfill the `next_sync_committee`. The `is_better_update` helper is also updated to improve `best_valid_update` tracking.
Ethereum Proof-of-Stake Consensus Specifications
To learn more about proof-of-stake and sharding, see the PoS FAQ, sharding FAQ and the research compendium.
This repository hosts the current Ethereum proof-of-stake specifications. Discussions about design rationale and proposed changes can be brought up and discussed as issues. Solidified, agreed-upon changes to the spec can be made through pull requests.
Specs
Core specifications for Ethereum proof-of-stake clients can be found in specs. These are divided into features. Features are researched and developed in parallel, and then consolidated into sequential upgrades when ready.
Stable Specifications
| Seq. | Code Name | Fork Epoch | Specs |
|---|---|---|---|
| 0 | Phase0 | 0 |
|
| 1 | Altair | 74240 |
|
| 2 | Bellatrix ("The Merge") |
TBD |
In-development Specifications
| Code Name or Topic | Specs | Notes |
|---|---|---|
| Capella (tentative) |
|
|
| EIP4844 (tentative) | ||
| Sharding (outdated) |
|
|
| Custody Game (outdated) |
|
Dependent on sharding |
| Data Availability Sampling (outdated) |
|
Accompanying documents can be found in specs and include:
Additional specifications for client implementers
Additional specifications and standards outside of requisite client functionality can be found in the following repos:
Design goals
The following are the broad design goals for the Ethereum proof-of-stake consensus specifications:
- to minimize complexity, even at the cost of some losses in efficiency
- to remain live through major network partitions and when very large portions of nodes go offline
- to select all components such that they are either quantum secure or can be easily swapped out for quantum secure counterparts when available
- to utilize crypto and design techniques that allow for a large participation of validators in total and per unit time
- to allow for a typical consumer laptop with
O(C)resources to process/validateO(1)shards (including any system level validation such as the beacon chain)
Useful external resources
For spec contributors
Documentation on the different components used during spec writing can be found here:
Consensus spec tests
Conformance tests built from the executable python spec are available in the Ethereum Proof-of-Stake Consensus Spec Tests repo. Compressed tarballs are available in releases.