Prior-art survey
Before zkmcu started I spent a week looking for existing no_std Rust ZK verifiers on Cortex-M, RISC-V, and similar 32-bit microcontrollers. The honest finding: none for Groth16 on no_std Rust at the time of writing, a couple for STARKs in non-Rust languages, lot’s of academic prototypes that never got open-sourced.
What’s in scope
Section titled “What’s in scope”- ZK verifiers (not provers) running on resource-constrained hardware (typically < 256 KB RAM, < 1 MB flash)
- Open-source, reproducible builds preferred, closed-source vendors mentioned but lower-weight
- Both classical (Groth16, PlonK) and post-quantum (STARKs, lattice-based) covered
- Embedded means embedded, not “we ran it on a Raspberry Pi 4 with 4 GB RAM”
Out of scope
Section titled “Out of scope”- Cloud-side or phone-side verifiers. There’s already a lot of work there.
- Synthetic benchmarks without actual silicon measurements
- Marketing pages with no code
Source
Section titled “Source”The full survey, with citations, comparisons against zkmcu’s measured numbers, and table of MCU classes / RAM tiers / proof systems, lives in the repo as a Typst document. Compiled PDF goes here when published.
Headline finding
Section titled “Headline finding”For no_std Rust Groth16 verifiers on Cortex-M33 specifically, the niche was open when zkmcu’s first benchmark landed in April 2026. zkmcu’s BN254 verifier at 988 ms baseline (later 551 ms after UMAAL asm + LTO placement gains) was the first published number I could find. If you know of an earlier one, tell me and I’ll update the survey.
For STARK verifiers, winterfell-based work existed on host but no no_std port targeting microcontroller-class memory was published. zkmcu’s 75 ms STARK verify was, as far as I can find, the first.
For BLS12-381 verifiers on embedded, Filecoin and Ethereum sync-committee proofs run on phones / servers but no MCU-class implementation existed in no_std Rust.
Related work worth citing
Section titled “Related work worth citing”These are the closest neighbours I found, none of them directly competing:
- Filecoin’s Forest has BLS12-381 verifiers but targets servers, not embedded
- Aleo’s snarkOS is general-purpose, runs on desktops and up
- Risc0 has STARK provers but the verifiers are also desktop-class
- Plonky3 (vendored as a reference in the audit) is library-tier infrastructure, not deployed-on-hardware
Working on something in this niche? Ping the contact page.