Skip to main content

Releases and assets

This page tells you what each Zilkworm release ships, which verification key goes with which guest, and how a release is cut.

Releases are on the GitHub releases page, and so far all of them are pre-releases. Each release body opens with the matching section of CHANGELOG.md.

This is the only page on the site with performance numbers. Each one comes from the CHANGELOG section of the tag on its line.

Current status​

The latest release is v0.1.0-alpha.7, published 25 October 2026, and the EEST pin is tests@v21.0.1. Airbender is live on Ethproofs, and the v0.1.0-alpha.5 result below has Ethproofs provenance. There is no Hypercube cluster on Ethproofs.

The overview's status strip reads src/data/status.json in the docs repository, so update that file and this page together on each release.

Release history​

TagTitleHighlights
v0.1.0-alpha.1First Public AlphaThe C++ guest runs on SP1 Hypercube, with precompiles on SP1 syscalls.
v0.1.0-alpha.2More performance more testing and more stabilityThe notes report "Close to 10% improved proving time", and the EEST suite runs inside the Hypercube prover.
v0.1.0-alpha.2-ereERE zkEVM benchmark integrationThis is alpha.2 plus the ERE benchmark integration, and it has no CHANGELOG section.
v0.1.0-alpha.3MFBD witness format, pre-trie validation and AmsterdamIt adds the MFBD bundle and pre-state checks against the parent root.
v0.1.0-alpha.4ERE stateless input, stateless new-payload checks and SepoliaOn tests-zkevm v21.0.1, 33,635 of 33,637 fixtures report output_matched. On Sepolia, the estimated prover cost is 0.500x Reth 0.1.0-rc.4's.
v0.1.0-alpha.5Real-time proving with Airbender v3Airbender proves 200 consecutive mainnet blocks at a 3.4 s median on 2x RTX 5090, with the slowest at 6.1 s. That run has Ethproofs provenance from 15 October 2026. On 4x RTX 5090 the median is 2.58 s.
v0.1.0-alpha.6Native statelessInputBytes with the HashState backendIn the CI 200-block benchmark, Hypercube guest cycles fall from 23.21B at alpha.5 to 17.44B (-24.9%), and Airbender's from 27.86B to 27.65B (-0.8%). The HashState ERE guest is at Z/R 0.477 against Reth 0.1.0-rc.4.
v0.1.0-alpha.7SP1 v6.9.0 and a leaner HashState guestThe ERE estimated cost changes by −1.70% on Sepolia 11982400..11982499, and the SP1 bump leaves guest cycles as they were on alpha.6.

Assets in v0.1.0-alpha.7​

AssetWhat it iszkVMInput
z6m_prover_hypercubeThe Hypercube host z6m_prover for x86_64 Linux, with the MFBD guest embeddedSP1 Hypercube v6.9.0.mfbd, or EEST JSON with --is-test
z6m_guest_hypercube_mfbd.elfDirectState guest, rv64im, built USE_HASH_KEY=OFFSP1MFBD, EJSN
z6m_guest_hypercube_mfbd.vkIts SP1 verifying key, from derive_vkSP1none
stateless-validator-zilkworm-sp1-v6.9.0.elfHashState guest, rv64im; the ERE guestSP1 v6.9.0Raw statelessInputBytes, EJSN
stateless-validator-zilkworm-sp1-v6.9.0.vkIts SP1 verifying key, named as the ere-guests handbook asksSP1none
state_transition_linux_x86_64Native runner, DirectStatenone.mfbd, .json or a directory
z6m_guest_airbender.binrv32 guest image, copied out of the release image, built USE_HASH_KEY=ONAirbender v3MFBD, EJSN
z6m_guest_airbender.textText section of the same guestAirbender v3none
z6m_guest_airbender.vkEVKEY001 v2 verification key, computed on CPU by the image's proverAirbender v3none
SHA256SUMS.txtsha256 of every file abovenonenone

The release also tags the image ghcr.io/erigontech/zilkworm-airbender:<tag>, and its notes give the image digest and the sha256 of z6m_guest_airbender.vk. If you run an Ethproofs cluster, upload that key to it so its proofs show as verified.

Verification keys​

A key belongs to one guest build. The Hypercube MFBD guest is built with USE_HASH_KEY=OFF, and the Airbender guest with USE_HASH_KEY=ON. Since the key depends on that flag, your local build reproduces a published key only if you use the same setting.

Keys can also change when the guest code does not. Keys published for v0.1.0-alpha.6 do not verify v0.1.0-alpha.7 proofs, and part of the reason is the SP1 bump. SP1 v6.9.0 loads a guest's initial memory correctly, where v6.6.0 zeroed up to four bytes of it (sp1#2981). On top of that, #141 changed the MFBD and Airbender guests and their keys in v0.1.0-alpha.7. Always check a proof against the key from its own release.

Older asset names​

Two earlier releases used other names. v0.1.0-alpha.5 shipped the Hypercube guest as z6m_guest_hypercube.{elf,vk}. The v0.1.0-alpha.6 release notes call the ERE guest z6m_guest_hypercube_slib, while its assets are stateless-validator-zilkworm-sp1-v6.6.0.{elf,vk}.

Release procedure​

To cut a release, you work through five steps:

  1. Create a branch, usually release/X.Y.Z.
  2. Bump PROJECT_VERSION in CMakeLists.txt to X.Y.Z.
  3. Add a ## vX.Y.Z - <title> section to CHANGELOG.md. It becomes the release body.
  4. Commit and push the branch.
  5. Tag the release commit vX.Y.Z and push the tag. The tag must equal PROJECT_VERSION, or the workflow fails.

From there the Release workflow takes over. It tags the Airbender image, builds the assets, writes SHA256SUMS.txt and publishes the release, then ends with an ERE benchmark run on the published guest.

If you tag a commit on main, wait until its Airbender Prover Image run has finished. Otherwise the image is built twice, and its commit and release tags can name two different builds.

Further reading​