An experimental Ethereum execution client built for the ZisK zkVM.
This project enables stateless block validation to run, verifying Ethereum blocks without maintaining full blockchain state by using execution witnesses. The validation runs inside the ZisK zkVM, allowing blocks to be proven in real-time.
zisk-eth-client/
├── bin/
│ ├── guests/ # zkVM guest programs
│ │ └── stateless-validator-reth/ # Reth-based stateless validator
│ ├── host/ # Benchmark runner for guest programs
│ └── input-gen/ # Input file generator
└── crates/
├── guest-reth/ # Core validation library for reth
└── input/ # RPC data fetching utilities
- Rust (latest stable)
- zisk
- Ethereum RPC endpoint (Infura, Alchemy, or your own node) for input generation
To build the Reth stateless validator guest program:
cd bin/guests/stateless-validator-reth
cargo-zisk build --releaseThe ELF binary will be located at:
target/riscv64ima-zisk-zkvm-elf/release/zec-reth
Some input files are available in the bin/guests/stateless-validator-reth/inputs/ folder for testing.
Run the block validation:
cd bin/guests/stateless-validator-reth
ziskemu -e target/riscv64ima-zisk-zkvm-elf/release/zec-reth \
-i inputs/<input_file>.binYou can also generate your own inputs using the input-gen tool.
Generate an input file for a specific block:
cargo run --release --bin input-gen -- rpc -u <RPC_URL>This command will fetch the latest block from the specified RPC endpoint and create a serialized input file <chain>_<block_number>_<txs>_<mgas>_zec_reth.bin in the reth-inputs/ folder.
You can specify options to target specific blocks or ranges as needed. Refer to the input-gen README for detailed usage instructions.
The standard cargo-zisk installation fetches the latest published version. If you need to test unreleased features or patches, build ZisK locally from source:
# Clone and build ZisK
git clone https://github.com/0xPolygonHermez/zisk
cd zisk && cargo build --releaseThen use the local binaries instead of the installed ones:
# Build guest with local cargo-zisk
/path/to/zisk/target/release/cargo-zisk build --release
# Execute with local ziskemu
/path/to/zisk/target/release/ziskemu -e <elf> -i <input>| Component | Description |
|---|---|
| stateless-validator-reth | zkVM guest program that validates Ethereum blocks statelessly |
| host | Benchmark runner for executing/proving guest programs |
| input-gen | Generate inputs from RPC endpoints or EEST test fixtures |
| guest-reth | Core library: crypto, validation logic, input types |
| input | RPC data fetching with FromRpc trait |
- Ethereum Mainnet
- Sepolia
- Holesky
- Hoodi
Licensed under either of Apache License, Version 2.0 or MIT License at your option.