Home

Awesome

Ethereum Proof-of-Stake Consensus Specifications

Join the chat at https://discord.gg/qGpsxSA

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

GitHub release PyPI version testgen

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 NameFork EpochSpecs
0Phase00<ul><li>Core</li><ul><li>The beacon chain</li><li>Deposit contract</li><li>Beacon chain fork choice</li></ul><li>Additions</li><ul><li>Honest validator guide</li><li>P2P networking</li><li>Weak subjectivity</li></ul></ul>
1Altair74240<ul><li>Core</li><ul><li>Beacon chain changes</li><li>Altair fork</li></ul><li>Additions</li><ul><li>Light client sync protocol (full node, light client, networking)</li><li>Honest validator guide changes</li><li>P2P networking</li></ul></ul>
2Bellatrix <br/> ("The Merge")144896<ul><li>Core</li><ul><li>Beacon Chain changes</li><li>Bellatrix fork</li><li>Fork choice changes</li></ul><li>Additions</li><ul><li>Honest validator guide changes</li><li>P2P networking</li></ul></ul>
3Capella194048<ul><li>Core</li><ul><li>Beacon chain changes</li><li>Capella fork</li></ul><li>Additions</li><ul><li>Light client sync protocol changes (fork, full node, networking)</li><li>Validator additions</li><li>P2P networking</li></ul></ul>
4Deneb269568<ul><li>Core</li><ul><li>Beacon Chain changes</li><li>Deneb fork</li><li>Polynomial commitments</li><li>Fork choice changes</li></ul><li>Additions</li><ul><li>Light client sync protocol changes (fork, full node, networking)</li><li>Honest validator guide changes</li><li>P2P networking</li></ul></ul>

In-development Specifications

Seq.Code NameFork EpochSpecs
5ElectraTBD<ul><li>Core</li><ul><li>Beacon Chain changes</li><li>Electra fork</li></ul><li>Additions</li><ul><li>Light client sync protocol changes (fork, networking)</li><li>Honest validator guide changes</li><li>P2P networking</li></ul></ul>
6FuluTBD<ul><li>Core</li><ul><li>Beacon Chain changes</li><li>Fulu fork</li><li>Data availability sampling core</li><li>Polynomial commitments sampling</li><li>Fork choice changes</li></ul><li>Additions</li><ul><li>P2P networking</li><li>Peer sampling</li></ul></ul>

Outdated Specifications

Code Name or TopicSpecsNotes
Sharding<ul><li>Core</li><ul><li>Beacon Chain changes</li></ul><li>Additions</li><ul><li>P2P networking</li></ul></ul>
Custody Game<ul><li>Core</li><ul><li>Beacon Chain changes</li></ul><li>Additions</li><ul><li>Honest validator guide changes</li></ul></ul>Dependent on sharding
Data Availability Sampling<ul><li>Core</li><ul><li>Core types and functions</li><li>Fork choice changes</li></ul><li>Additions</li><ul><li>P2P Networking</li><li>Sampling process</li></ul></ul><ul><li> Dependent on sharding</li><li>Technical explainer</li></ul>

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:

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)

Ethereum Consensus Specs

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.

Installation and Usage

The consensus-specs repo can be used by running the tests locally or inside a docker container.

To run the tests locally:

To run the tests inside a docker container: