Grant Application: Reusable Halo2 Verifier Security Testing Infrastructure
I have submitted a full grant application on GitHub and am posting here as required for community review.
The Problem
Every new Halo2-based project in this ecosystem has to independently figure out how to systematically test its verifier. There is no shared library of “here is how you test a Halo2 verifier for malformed-proof rejection, replay protection, and cross-implementation equivalence.” Projects rediscover this methodology from scratch every time, which means security gaps in new Halo2 deployments go undiscovered longer than they should.
This is a gap that affects ZKCG directly, and the Zcash/Halo2 ecosystem broadly.
What This Grant Builds
ZKCG (Zero-Knowledge Compute Gateway) is an open-source Halo2-based ZK proof system for compliance enforcement decisions, using Halo2 over BN254 (k=6), roughly 76ms prove / 4ms verify. Published Rust crates: zkcg-verifier, zkcg-common, zkcg-halo2-prover v0.2.0 on crates.io. Apache-2.0. GitHub - MRSKYWAY/zkcg-public: ZK-Verified Computation Gateway - Trustless verification of off-chain computation using Rust + Zero Knowledge · GitHub
This grant funds two tiers of output using ZKCG as the reference implementation:
Tier 1 — ZKCG production security tests:
- cargo-fuzz fuzzing harness with three targets: proof deserialization, field element parsing, pairing check inputs
- 50+ malformed-proof rejection test cases covering truncated proofs, corrupted commitments, wrong curve points, out-of-range scalars
- Replay and domain-separation tests confirming a valid proof for one context cannot be reused in another
- Differential verification framework: 100 categorized inputs run through both Halo2 and RISC0 paths, outputs compared, zero divergence asserted
- CI integration running the full suite on every pull request
Tier 2 — A reusable public good for the Halo2 ecosystem:
halo2-verifier-security-patterns/— a standalone module containing extracted, documented, reusable test patterns any Halo2-based project can adopt without starting from scratchTHREAT_MODEL.md— verifier trust boundary, security assumptions, proof scope, out-of-scope items, responsible disclosure — structured as a template for other Halo2 projects
Why This Matters for Zcash
Zcash components use halo2_proofs. ZKCG uses halo2_proofs. The security testing methodology, fuzzing corpus, malformed-proof test vectors, and differential verification framework built here are directly applicable to any Halo2-based system in the ecosystem.
If the halo2-verifier-security-patterns/ module produces patterns relevant to Zcash’s own Halo2 tooling (PSE repository, Zebra’s proof verification paths), I will open a discussion with maintainers about contributing upstream. This is not a commitment — it is a realistic bonus outcome given the shared dependency.
A clean fuzzing campaign is itself a publishable result that increases confidence in Halo2 verifiers across the ecosystem. A finding would be responsibly disclosed. Either outcome is a win.
About Me
Solo founder. Built ZKCG from scratch including Halo2 circuit design in Rust, published verifier crates, and live proof flows running for Centrifuge, Maple Finance, Ondo Finance, and Securitize use cases.
GitHub: MRSKYWAY (Sujyot Kamble) · GitHub
Happy to answer technical questions. Feedback welcome.