This is a fork of https://github.com/ethereum/execution-spec-tests
The Goal of forking Ethereum's Execution Spec tests was to verify that Arbitrum is working as expected well reusing existing tests and infrastructure.
- EIP-3651: Warm COINBASE
- EIP-4895: Beacon chain push withdrawals as operations
- EIP-4788: Beacon block root in the EVM
- EIP-7516: BLOBBASEFEE instruction
Arbitrum can post/retrieve EIP-4844 from L1, but doesn't support the mechanics on Arbitrum. Only the precompile tests appear to pass
- EIP-4844: Shard Blob Transactions
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost
- EIP-7685: General purpose execution layer requests
- EIP-7594: PeerDAS - Peer Data Availability Sampling
- EIP-7918: Blob base fee bounded by execution cost
- EIP-7892: Blob Parameter Only Hardforks
- EIP-7917: Deterministic proposer lookahead
- EIP-7934: RLP Execution Block Size Limit
- EIP-7907: Meter Contract Code Size And Increase Limit
- EIP-7935: Set default gas limit to XX0M
I believe these EIP's weren't implemented/enabled in Arbitrum Nitro, so I removed them from the tests.
- Install and run https://github.com/OffchainLabs/nitro-devnode in terminal 1:
git clone https://github.com/OffchainLabs/nitro-devnode.git
cd nitro-devnode
./run-dev-node.sh- Install the execution spec tests dependencies in terminal 2:
Follow the Prerequisites and Installation sections below to install the required dependencies.
- Run the execution spec tests in terminal 2 against Arbitrum Nitro:
uv run execute remote --fork=Osaka --rpc-endpoint=http://127.0.0.1:8547 --rpc-seed-key 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659 --rpc-chain-id 412346 ./tests/ --verbose============================================================================= 4057 passed, 140 skipped in 5736.42s (1:35:36) =============================================================================
This repository contains the specifications related to the Ethereum execution client, specifically the pyspec and specifications for network upgrades. The JSON-RPC API specification can be found in a separate repository.
| Version and Code Name | Block No. | Released | Incl EIPs | Specs | Blog |
|---|---|---|---|---|---|
| Prague | 22431084 | 2025-05-07 | EIP-2537 EIP-2935 EIP-6110 EIP-7002 EIP-7251 EIP-7549 EIP-7623 EIP-7685 EIP-7691 EIP-7702 |
Specs | Blog |
| Cancun | 19426587 | 2024-03-13 (1710338135) |
EIP-1153 EIP-4788 EIP-4844 EIP-5656 EIP-6780 EIP-7044 EIP-7045 EIP-7514 EIP-7516 |
Specification | Blog |
| Shanghai | 17034870 | 2023-04-12 (1681338455) |
EIP-3651 EIP-3855 EIP-3860 EIP-4895 |
Specification | Blog |
| Paris | 15537394 | 2022-09-15 | EIP-3675 EIP-4399 |
Specification | Blog |
| Gray Glacier | 15050000 | 2022-06-30 | EIP-5133 | Specification | Blog |
| Arrow Glacier | 13773000 | 2021-12-09 | EIP-4345 | Specification | Blog |
| London | 12965000 | 2021-08-05 | 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 |
| 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-100 EIP-140 EIP-196 EIP-197 EIP-198 EIP-211 EIP-214 EIP-649 EIP-658 |
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 |
Note: Starting with Paris, updates are no longer rolled out based on block numbers. Paris was enabled once proof-of-work Total Difficulty reached 58750000000000000000000. As of Shanghai (at 1681338455), upgrade activation is based on timestamps.
Some clarifications were enabled without protocol releases:
| EIP | Block No. |
|---|---|
| EIP-2681 | 0 |
| EIP-3607 | 0 |
| EIP-7523 | 15537394 |
| EIP-7610 | 0 |
The execution specification is a python implementation of Ethereum that prioritizes readability and simplicity. It will be accompanied by both narrative and API level documentation of the various components written in markdown and rendered using docc...
The Ethereum specification is maintained as a Python library, for better integration with tooling and testing.
Requires Python 3.11+
Building the spec documentation is most easily done through tox:
uvx --with=tox-uv tox -e spec-docsThe path to the generated HTML will be printed to the console.
To view the updated local documentation, run:
uv run mkdocs servethen connect to localhost:8000 in a browser
The Ethereum Execution Layer Specification code is licensed under the Creative Commons Zero v1.0 Universal.