* Rough structure * Most of the KZG checks in * Fixes suggested by Vitalik * Add low degree check for commitments * Remove -1 check from degree proof (not needed) * Require block builders to be validators to simplify things * remove verify_intermediate_block_bid_commitment * Rename back to process_block * Degree check formula corrections * Updated TOC, bid processing corrections * Link to latest sharding doc * Add shard samples + P2P * Add validator guide for attestations and reconstruction * Update specs/sharding/beacon-chain.md Co-authored-by: terence tsao <terence@prysmaticlabs.com> * Update specs/sharding/beacon-chain.md Co-authored-by: vbuterin <v@buterin.com> * Update specs/sharding/beacon-chain.md Co-authored-by: vbuterin <v@buterin.com> * Refactor polynomial operations into separate file * Add missing polynomial functions * Fix polynomial commitment file toc levels * Refactor the payload to make better use of unions * Add reverse bit order convention * Correct inequality in verify_degree_proof * Small fix * Fix polynomial evaluation * Update specs/sharding/beacon-chain.md Co-authored-by: George Kadianakis <desnacked@riseup.net> * MAX_BEACON_BLOCKS_BETWEEN_INTERMEDIATE_BLOCKS definition added * Sample reconstruction estimate * Update specs/sharding/beacon-chain.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Fix return value of roots_of_unity() * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/beacon-chain.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/beacon-chain.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/beacon-chain.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Intermediate block -> Builder block * Some small omissions in intermediate -> builder * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: George Kadianakis <desnacked@riseup.net> * Update specs/sharding/polynomial-commitments.md Co-authored-by: George Kadianakis <desnacked@riseup.net> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Update specs/sharding/polynomial-commitments.md Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> * Z1 -> inf_G1 * Fix degree proof bound * SignedShardSample -> ShardSample * Typo * Don't allow 0 for `next_power_of_two` * Remove unused `ROOT_OF_UNITY` constant * Throwaway variable name * Fix function documentation of `bls_modular_inverse` * Builder block bid increase by at least 1%, no RANDAO processing in builder blocks * Fix tocs * Fix tocs * Fix typo * Update specs/sharding/polynomial-commitments.md Co-authored-by: George Kadianakis <desnacked@riseup.net> Co-authored-by: Danny Ryan <dannyjryan@gmail.com> Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com> Co-authored-by: terence tsao <terence@prysmaticlabs.com> Co-authored-by: vbuterin <v@buterin.com> Co-authored-by: George Kadianakis <desnacked@riseup.net>
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.