* multi: - Remove shift_polynomial_coeff - Remove recover_shifted_data - Remove recover_original_data - Move `zero_poly_eval_brp ` under sanity check comment as its only used for sanity checking * chore: remove sanity check -- this was doing a wasteful `compute_root_of_unity` operation * chore: add previous sanity check as a unit test * chore: copy values python was taking a reference, so it passes in our regular codepaths but not in isolated test * chore: add coset_fft test * Update specs/_features/eip7594/polynomial-commitments-sampling.md Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com> * Update specs/_features/eip7594/polynomial-commitments-sampling.md Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com> * chore: linter * chore: asn (switch to bls_modular_inverse) * chore: (ben) rename func to test_construct_vanishing_polynomial * chore: (ben) rename `extended_evaluations_coeffs` to `extended_evaluation_times_zero_coeffs` * chore: compute `roots_of_unity_extended` in recover_data method * chore: add more comments explaining whats happening in recover_data * chore: compute_zero_poly_coeff in recover_data * chore: make lint * chore: add doc comment to coset_fft_field * chore: (ben) add code to generate the vanishing polynomial when all cells are missing * chore: remove handling of edge case when constructing a vanishing polynomial * chore: rename H(x) to Q_3(x) * chore: remove trailing whitespace * chore: add whitespace between comments * chore: (asn) add assert that num missing cells is not 0 * chore: (justin) address comments * chore: merge resolution * chore: fixup remaining IDs -> indices * chore: use indice nomenclature in tests --------- Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com>
Ethereum Proof-of-Stake Consensus Specifications
To learn more about proof-of-stake and sharding, see the PoS documentation, sharding documentation 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") |
144896 |
|
3 | Capella | 194048 |
|
4 | Deneb | 269568 |
In-development Specifications
Code Name or Topic | Specs | Notes |
---|---|---|
Electra | ||
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:
Online viewer of the latest release (latest master
branch)
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.