Skip to content

Installation

Quick Start

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
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
brew install just
just shell-completions

Further explanation, troubleshooting, and alternative installation paths are below.

Prerequisites

The tools provided by execution-specs use uv (docs.astral.sh/uv) to manage dependencies and the virtual environment.

It's recommended to use the latest version of uv, which can be installed via curl (recommended; can self-update via uv self update) or pip (requires Python, can't self-update):

curl -LsSf https://astral.sh/uv/install.sh | sh
pip install uv

When installed via curl, uv can also download Python for your platform if a required version (Python 3.11–3.14) is not already installed.

Installing Python and Python Dependencies

Clone ethereum/execution-specs and install the project dependencies. Python 3.11–3.14 are supported; Python 3.12 tends to be the smoothest for local setup because pre-built wheels are available across the dependency set.

The following commands use uv to install Python 3.12 and pin it for all commands run within the execution-specs directory:

git clone https://github.com/ethereum/execution-specs
cd execution-specs
uv python install 3.12
uv python pin 3.12
uv sync

Testing Your Python Environment

The following command can be used to verify that the environment is set up correctly. By targeting a single test subdirectory, it generates only a small subset of test vectors:

uv run fill tests/istanbul/eip1344_chainid/

Installing the just Task Runner

The ethereum/execution-specs repository uses just to run common tasks locally and in CI. Tasks range from static code checks to generating test vectors from the spec.

ethereum/execution-specs requires just 1.43+. Note that the version currently distributed in Ubuntu 24.04 is too old; many other methods are available in the installation docs.

just can be installed directly with uv from the rust-just package.

uv tool install --exclude-newer "10 days" rust-just    

Using --exclude-newer adds a cool-down window that can help reduce exposure to supply-chain attacks.

brew install just

Testing Your just Installation

To explore which tasks (recipes) are available, simply run just within the execution-specs directory:

just

Then try running the available static code checks:

just static

Configuring Shell Completion

just supports tab completion for recipes. Run the following command for help on how to enable this feature for your shell:

just shell-completions

More background is available in the just documentation.

Installation Troubleshooting

If you run into problems, see Installation Troubleshooting.