A catalog, downloader, and execution harness for release-backed stateless validator guests used with Ere.
The current MSRV (minimum supported Rust version) is 1.93.
This repository republishes checksum-verified guest ELFs and program verification keys from upstream releases. The active guest and zkVM combinations are defined in artifact-registry.json.
Located in crates/, these provide reusable functionality for guest programs and host:
stateless-validator-catalog- Catalog of active validator kinds and registry-derived versionsstateless-validator-common- Canonicalno_stdtests-zkevm v21.0.1 input and output schemasstateless-validator-downloader- Downloads republished ELFs and VKs from releases and workflow artifactsstateless-validator-test- Runs EEST and rolling devnet inputs against registry artifacts in dockerized zkVMs
Ethrex 29.0.0-rc.2 is registered on OpenVM v2.1.0-preview, SP1 v6.6.0, and ZisK v1.2.0-alpha. Its catalog ID is 0. Nimbus v0.2.1-alpha is registered on ZisK v1.2.0-alpha. Its catalog ID is 3. Both target tests-zkevm v21.0.1 and Ere v0.18.1. Reth and Zesu keep their catalog IDs 1 and 2, but have no registered artifacts until each publishes a v21 release.
Devnet runs are paused until Sepolia blocks exist in the engine format. The glamsterdam-devnet-8 blocks use the tests-zkevm v0.8.4 input layout, which v21 guests reject. Until then, the pinned 10-block pull request test is ignored, and the devnet workflow, which runs the latest 100 blocks from the rolling catalog, runs only on manual dispatch.
The benchmark is paused, like the devnet runs, until Sepolia blocks exist in the engine format.
When active, a pull request that changes an elf_sha256 in artifact-registry.json triggers the Cost estimation benchmark workflow. The workflow measures the old ELF and the new ELF over the same 100 glamsterdam-devnet-8 blocks. It writes the difference to the job summary and, for a branch of this repository, to a pull request comment. The report is advisory and never fails the pull request. Cost units differ per zkVM.
To measure one ELF locally, pick a batchEndBlock from the batch index and run:
ERE_IMAGE_REGISTRY=ghcr.io/eth-act/ere \
cargo run --release --package stateless-validator-test --bin zkvm_cost_estimation -- \
--stateless-validator ethrex --zkvm zisk --zkvm-version v1.2.0-alpha \
--elf-url <url> --elf-sha256 <sha256> \
--batch-end-block <block> --blocks 100 --output cost.jsonFormatting the workspace:
.github/scripts/cargo-fmt-all.shLicensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.