This repository contains various specification related to the Ethereum 1.0 chain, specifically the pyspec, specifications for network upgrades, and the (deprecated) JSON-RPC API.
Version and Code Name | Block No. | Released | Incl EIPs | Specs | Blog |
---|---|---|---|---|---|
London | 12965000 | - | EIP-1559 EIP-3198 EIP-3529 EIP-3541 EIP-3554 |
Specification | Blog |
Berlin | 12244000 | 2021-04-15 | EIP-2565 EIP-2929 EIP-2718 EIP-2930 |
Specification |
Blog |
Muir Glacier | 9200000 | 2020-01-02 | EIP-2384 | HFM-2387 | Blog |
Istanbul | 9069000 | 2019-12-07 | EIP-152 EIP-1108 EIP-1344 EIP-1884 EIP-2028 EIP-2200 |
HFM-1679 | Blog |
St. Petersburg | 7280000 | 2019-02-28 | EIP-145 EIP-1014 EIP-1052 EIP-1234 |
HFM-1716 | Blog |
Constantinople | 7280000 | 2019-02-28 | EIP-145 EIP-1014 EIP-1052 EIP-1234 EIP-1283 |
HFM-1013 | Blog |
Byzantium | 4370000 | 2017-10-16 | EIP-140 EIP-658 EIP-196 EIP-197 EIP-198 EIP-211 EIP-214 EIP-100 EIP-649 |
HFM-609 | Blog |
Spurious Dragon | 2675000 | 2016-11-22 | EIP-155 EIP-160 EIP-161 EIP-170 |
HFM-607 | Blog |
Tangerine Whistle | 2463000 | 2016-10-18 | EIP-150 | HFM-608 | Blog |
DAO Fork | 1920000 | 2016-07-20 | HFM-779 | Blog | |
DAO Wars | aborted | aborted | Blog | ||
Homestead | 1150000 | 2016-03-14 | EIP-2 EIP-7 EIP-8 |
HFM-606 | Blog |
Frontier Thawing | 200000 | 2015-09-07 | Blog | ||
Frontier | 1 | 2015-07-30 | Blog |
The consensus specification is a python implementation of Ethereum that prioritizes readability and simplicity. It [will] accompanied by both narrative and API level documentation of the various components written in restructured text and rendered using Sphinx....
The Ethereum specification is maintained as a Python library, for better integration with tooling and testing.
Requires Python 3.7+
Building the documentation is most easily done through tox
:
$ tox -e doc
The path to the generated HTML will be printed to the console.
A live preview of the documentation can be viewed locally on port 8000
with the following command:
$ tox -e doc-autobuild
Running the tests necessary to merge into the repository requires:
- Python 3.7.x (not 3.8 or later), and
- PyPy 7.3.x.
These version ranges are necessary because, at the time of writing, PyPy is only compatible with Python 3.7.
eth1.0-specs
depends on a submodule that contains common tests that are run across all clients, so we need to clone the repo with the --recursive flag. Example:
$ git clone --recursive https://github.com/ethereum/eth1.0-specs.git
Or, if you've already cloned the repository, you can fetch the submodules with:
$ git submodule update --init --recursive
The tests can be run with:
$ tox
The development tools can also be run outside of tox
, and can automatically reformat the code:
$ pip install -e .[doc,lint,test] # Installs eth1spec, and development tools.
$ isort src # Organizes imports.
$ black src # Formats code.
$ flake8 # Reports style/spelling/documentation errors.
$ mypy src # Verifies type annotations.
$ pytest # Runs tests.
It is recommended to use a virtual environment to keep your system Python installation clean.
This specification aims to be:
- Correct - Describe the intended behavior of the Ethereum blockchain, and any deviation from that is a bug.
- Complete - Capture the entirety of consensus critical parts of Ethereum.
- Accessible - Prioritize readability, clarity, and plain language over performance and brevity.
Attempt to use descriptive English words (or very common abbreviations) in documentation and identifiers. If necessary, there is a custom dictionary whitelist.txt
.