Awesome
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 | <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> |
1 | Altair | 74240 | <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> |
2 | Bellatrix <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> |
3 | Capella | 194048 | <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> |
4 | Deneb | 269568 | <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 Name | Fork Epoch | Specs |
---|---|---|---|
5 | Electra | TBD | <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> |
6 | Fulu | TBD | <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 Topic | Specs | Notes |
---|---|---|
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:
- 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.
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:
- Clone the repository with
git clone https://github.com/ethereum/consensus-specs.git
- Switch to the directory
cd consensus-specs
- Run the tests with
make test
To run the tests inside a docker container:
- Switch to the directory with
cd scripts
- Run the script
./build_run_docker_tests.sh
- Find the results in a folder called
./testResults
- Find more ways to customize the script with
./build_run_docker_tests.sh --h