Metadata-Version: 2.4
Name: eth-consensus-specs
Version: 1.7.0b0
Summary: Ethereum consensus layer specifications package
Author: ethereum
License-Expression: CC0-1.0
Project-URL: homepage, https://github.com/ethereum/consensus-specs
Requires-Python: <3.15,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: blake3==1.0.9
Requires-Dist: eth-ssz-specs==0.1.0
Requires-Dist: eth-utils==6.0.0
Requires-Dist: frozendict==2.4.7
Requires-Dist: lru-dict==1.4.1
Requires-Dist: marko==2.2.4
Requires-Dist: py_arkworks_bls12381==0.5.0
Requires-Dist: ruamel.yaml==0.19.1
Requires-Dist: setuptools==84.0.0
Provides-Extra: test
Requires-Dist: ckzg==2.1.8; extra == "test"
Requires-Dist: deepdiff==9.1.0; extra == "test"
Requires-Dist: eth-hash[pycryptodome]==0.8.0; extra == "test"
Requires-Dist: minizinc==0.10.0; extra == "test"
Requires-Dist: psutil==7.2.2; extra == "test"
Requires-Dist: pytest-cov==7.1.0; extra == "test"
Requires-Dist: pytest-html==4.2.0; extra == "test"
Requires-Dist: pytest-sugar==1.1.1; extra == "test"
Requires-Dist: pytest-xdist==3.8.0; extra == "test"
Requires-Dist: pytest==9.1.1; extra == "test"
Requires-Dist: python-snappy==0.7.3; extra == "test"
Requires-Dist: trie==4.0.0; extra == "test"
Provides-Extra: lint
Requires-Dist: codespell==2.4.3; extra == "lint"
Requires-Dist: mdformat-frontmatter==2.1.2; extra == "lint"
Requires-Dist: mdformat-gfm-alerts==2.1.0; extra == "lint"
Requires-Dist: mdformat-gfm==1.0.0; extra == "lint"
Requires-Dist: mdformat-toc==0.5.0; extra == "lint"
Requires-Dist: mdformat==1.0.0; extra == "lint"
Requires-Dist: ruff-md==0.16.2; extra == "lint"
Requires-Dist: ty==0.0.78; extra == "lint"
Provides-Extra: docs
Requires-Dist: mdx-truly-sane-lists==1.3; extra == "docs"
Requires-Dist: zensical==0.0.58; extra == "docs"
Dynamic: license-file

# Ethereum Consensus Specifications

[![tests](https://github.com/ethereum/consensus-specs/actions/workflows/tests.yml/badge.svg?branch=master&event=schedule)](https://github.com/ethereum/consensus-specs/actions/workflows/tests.yml)
[![image](https://img.shields.io/pypi/v/eth-consensus-specs.svg)](https://pypi.python.org/pypi/eth-consensus-specs)
[![image](https://img.shields.io/pypi/l/eth-consensus-specs.svg)](https://pypi.python.org/pypi/eth-consensus-specs)
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/qGpsxSA)

This repository hosts the Ethereum
[proof-of-stake](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/)
specifications for consensus-layer clients. Design rationale and proposed
changes are discussed in issues. Agreed-upon changes are made through pull
requests. Specifications can be found in [specs](specs), arranged by upgrade.
Each upgrade builds on the previous, specifying only what it changes. Individual
[features](specs/_features) are developed in parallel and are folded into an
upgrade when ready.

### Stable specifications

| Seq. | Code Name     | Fork Epoch | Link                    |
| ---- | ------------- | ---------- | ----------------------- |
| 0    | **Phase0**    | `0`        | [Spec](specs/phase0)    |
| 1    | **Altair**    | `74240`    | [Spec](specs/altair)    |
| 2    | **Bellatrix** | `144896`   | [Spec](specs/bellatrix) |
| 3    | **Capella**   | `194048`   | [Spec](specs/capella)   |
| 4    | **Deneb**     | `269568`   | [Spec](specs/deneb)     |
| 5    | **Electra**   | `364032`   | [Spec](specs/electra)   |
| 6    | **Fulu**      | `411392`   | [Spec](specs/fulu)      |

### Unstable specifications

| Seq. | Code Name | Fork Epoch | Link                |
| ---- | --------- | ---------- | ------------------- |
| 7    | **Gloas** | TBD        | [Spec](specs/gloas) |
| 8    | **Heze**  | TBD        | [Spec](specs/heze)  |

### Rendered viewers

- https://ethereum.github.io/spec-viewer/
- https://ethereum.github.io/consensus-specs/

### Reference tests

- [Release assets](https://github.com/ethereum/consensus-specs/releases)
- [Nightly artifacts](https://github.com/ethereum/consensus-specs/actions/workflows/tests.yml)

### Design goals

- Minimize complexity, even at the cost of some losses in efficiency.
- Remain live through major network partitions and mass node outages.
- Select components that are quantum-secure or easy to swap out.
- Use crypto and design techniques that support a large validator set.
- Minimize hardware requirements such that a consumer laptop can participate.

### External specifications

- [Beacon APIs](https://github.com/ethereum/beacon-apis)
- [Beacon Metrics](https://github.com/ethereum/beacon-metrics)
- [Builder Specs](https://github.com/ethereum/builder-specs)
- [Cryptography Specs](https://github.com/ethereum/cryptography-specs)
- [Deposit Contract](https://github.com/ethereum/solidity-deposit-contract)
- [Engine APIs](https://github.com/ethereum/execution-apis/tree/main/src/engine)
- [SimpleSerialize Specs](https://github.com/ethereum/ssz-specs)

### Useful resources

- [Design Rationale](https://notes.ethereum.org/s/rkhCgQteN#)
- [Phase0 for Humans](https://notes.ethereum.org/s/Bkn3zpwxB)
- [Combining GHOST and Casper](https://arxiv.org/abs/2003.03052)
- [Vitalik's annotated spec](https://github.com/ethereum/annotated-spec)
- [Upgrading Ethereum](https://eth2book.info)
