This repository contains various specification related to the Ethereum 1.0 chain, specifically the specifications for network upgrades and (soon) the JSON RPC API.
Version and Code Name | Block No. | Released | Incl EIPs | Specs | Blog |
---|---|---|---|---|---|
London | TBD | - | EIP-1559 EIP-3238 EIP-3198 EIP-3529 EIP-3554 |
Specification | - |
Berlin | 12244000 | 04/15/2021 | EIP-2565 EIP-2929 EIP-2718 EIP-2930 |
Specification |
Blog |
Muir Glacier | 9200000 | 01/02/2020 | EIP-2384 | HFM-2387 | Blog |
Istanbul | 9069000 | 12/07/2019 | EIP-152 EIP-1108 EIP-1344 EIP-1884 EIP-2028 EIP-2200 |
HFM-1679 | Blog |
St. Petersburg | 7280000 | 02/28/2019 | EIP-145 EIP-1014 EIP-1052 EIP-1234 |
HFM-1716 | Blog |
Constantinople | 7280000 | 02/28/2019 | EIP-145 EIP-1014 EIP-1052 EIP-1234 EIP-1283 |
HFM-1013 | Blog |
Byzantium | 4370000 | 10/16/2017 | EIP-140 EIP-658 EIP-196 EIP-197 EIP-198 EIP-211 EIP-214 EIP-100 EIP-649 |
HFM-609 | Blog |
Spurious Dragon | 2675000 | 11/22/2016 | EIP-155 EIP-160 EIP-161 EIP-170 |
HFM-607 | Blog |
Tangerine Whistle | 2463000 | 10/18/2016 | EIP-150 | HFM-608 | Blog |
DAO Fork | 1920000 | 07/20/2016 | HFM-779 | Blog | |
DAO Wars | aborted | aborted | Blog | ||
Homestead | 1150000 | 03/14/2016 | EIP-2 EIP-7 EIP-8 |
HFM-606 | Blog |
Frontier Thawing | 200000 | 09/07/2015 | Blog | ||
Frontier | 1 | 07/30/2015 | Blog |
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.
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/quilt/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.
- Usable - 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
.