Dispatch 003

Edge verification, measured at 8.6 ms

Dispatch 003 · Published · Updated

Grideōs measured its edge verifier checking a Groth16 proof in 8.6 milliseconds. What that makes possible, and what it does not.

Ironwall's verifier runs at edge.grideos.com. A #![no_std] Rust module compiled to WebAssembly checks Groth16 zero-knowledge proofs over the BN254 curve inside a single Cloudflare Workers isolate. A valid proof receives a signed JWT; an invalid one is rejected.

The numbers

These are Grideōs' own measurements, first published in the ironwall-edge-bench repository on 8 April 2026, which also lists a cold-start round trip of about 298 ms and invalid-proof rejection in about 76 ms. No third party has validated them yet.

How a request is checked

A request carries 256 bytes: a 128-byte compressed Groth16 proof followed by four 32-byte BN254 scalars: nonce, timestamp, attestation_hash and y. Proofs outside a 500 ms window are rejected, and so are nonces the verifier has already seen, which limits replay of a captured proof. In the current version that nonce check is kept in memory.

What it makes possible

Verification fast enough to sit in the request path means a system can check a proof on every call, at the edge, instead of trusting a token issued somewhere else. That is the property Grideōs systems are designed to rely on when a record has to be checked by someone who cannot see the private data behind it.

What it does not do

Fast verification is one part of a trust layer, not the whole of it. The figures describe the verifier, not a complete product, and they are not a service-level commitment. The source is public: ironwall-verifier on GitHub.


All dispatches · Facts ledger · Markdown

Bring us a problem.

Tell us about the work, where it gets stuck, and who has to trust the record afterwards. Grideōs reads every brief and replies by email within two business days. You can also write to info@grideos.com. How we handle what you send: privacy notice.