# Ethproof Killers Test Suite – Overview & Format Guide
*Latest version available [here](https://drive.google.com/file/d/1UaAk498vh0pLZy27zo1uziOOUxAkLstG/view?usp=sharing). The suite will soon be published under the official [execution-spec-tests releases](https://github.com/ethereum/execution-spec-tests/releases).*
## Goal
Ethproof Killers tests provide standardized, self-contained fixtures describing worst-case Ethereum execution scenarios for zk-VMs.
Because each scenario is captured in a single JSON file, we can:
- allow each zkVM to run each test at their own pace and without live long-running devnets
- be certain every other zkVM is exercising the same scenario
- integrate the fixtures directly into CI pipelines or zk-proof circuits.
Future releases will also include a **stateless client guest program**, giving RISCV-based zk-VMs a turnkey runner for the tests.
## File Structure
Each JSON file represents **one test scenario** and may list **one or more configurations** (the current version ships one configuration per file).
Below is a walk-through using `test_keccak.json`.
| Key | Purpose |
| --- | --- |
| **`test_worst_keccak[fork_Cancun-blockchain_test-gas_limit_36000000]`** | Full pytest-style name. Useful as a human-readable label; you do *not* need to parse it. |
| **`network`** | Target fork—e.g. `"Cancun"`. |
| **`genesisBlockHeader`** | Canonical header for the genesis block used in the scenario. Fields match standard EL genesis fields. The RLP-encoded form is duplicated under **`genesisRLP`** for convenience. |
| **`pre`** | Account/storage state that yields the `stateRoot` in the genesis header. |
| **`blocks`** | Ordered list of blocks to execute **after** genesis. *All* current scenarios include just **one** block, but future suites may chain several. Non-final blocks are “setup” blocks; only the **last** block triggers the worst-case computation. Each item contains a **`blockHeader`** and a list of **`transactions`** to be executed. |
## Running the Tests
The format is identical to the Ethereum Execution-Layer (EL) tests, so every EL client already has implemented how to:
1. load the JSON fixture,
2. instantiate a chain from the supplied genesis data, and
3. execute the block sequence.
For hands-on instructions, see the docs page [Executing Tests on Local Networks or Hive](https://eest.ethereum.org/main/executing_tests/#running-tests-on-a-hive-single-client-local-network). You’re also free to create your own infrastructure, but it shouldn’t be needed apart from wirings.
A forthcoming release will bundle a **guest program** that consumes the JSON directly, so zk-VM teams can focus solely on proving that guest.