Skip to content

ethereum/execution-specs

Ethereum Execution Layer Specifications

latest version PyPI version License Python Specification codecov Python Versions ruff uv GitPOAP Badge

The Ethereum Execution Layer Specifications (EELS) are an executable Python reference implementation of Ethereum's execution layer, along with the test cases that verify it. It provides a shared, runnable description of consensus-critical behaviour, and the accompanying tests generate fixtures that can be used to validate execution client implementations.

Quick Start

execution-specs uses uv to manage the Python environment and dependencies, and just as a task runner for common commands (linting, building docs, generating fixtures). The commands below install both and set up the repo from scratch.

Requires a Unix-like shell. All platforms:

git clone https://github.com/ethereum/execution-specs
cd execution-specs
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.12
uv python pin 3.12
uv sync
uv tool install --exclude-newer "10 days" rust-just
just shell-completions

Python 3.11–3.14 are supported; 3.12 tends to be the smoothest for local setup (pre-built wheels are available across the dependency set). For alternative just installation paths, macOS-specific installation notes, and troubleshooting, see Installation.

Documentation

Contributing

Earnest contributions are welcome; drive-by contributions are not. See CONTRIBUTING.md for how to raise issues and pull requests. Further reading:

  • Code Standards: Python coding preferences enforced in CI.
  • Verifying Changes: Which local checks to run before opening a PR.
  • Writing Specs: Style rules and ethereum_spec_tools utilities for changes under src/ethereum/.
  • Writing Tests: For guidance on adding consensus tests under ./tests/.

This repository is maintained by the STEEL Team at the Ethereum Foundation.

Community and Support

Discussion around the initial specification of protocol changes happens on Ethereum Magicians, in pull requests on ethereum/EIPs, on the Ethereum R&D Discord (one of the channels in the Execution R&D category; for testing use #el-testing), and in the AllCoreDevs calls.

For tracking the status of upcoming Ethereum upgrades, see Forkcast: EIP inclusion, client implementation progress, and ACD call summaries.

For other help, see the Documentation section above, or reach out to one of the STEEL team members in the Ethereum R&D Discord.

Related projects

Production execution clients that implement the spec include besu, erigon, ethrex, geth, nethermind, and reth.

Responsible Disclosure of Vulnerabilities

Caution

Care is required when filing issues or PRs for functionality that is live on Ethereum mainnet. Please report vulnerabilities and verify bounty eligibility via the bug bounty program; see SECURITY.md for details.

  • Please do not create a PR with a vulnerability visible.
  • Please do not file a public ticket mentioning the vulnerability.

License

The Ethereum Execution Layer Specification is licensed under the Creative Commons Zero v1.0 Universal.

About

Specification for the Execution Layer. Tracking network upgrades.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors