WizardOfMenlo
whir
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
zkWHIR 3.0 : Updated protocols for whir round integration and added mask proximity protocol (part 2) (#251) * feat : updated sumcheck according to construction 6.3 in paper * feat : updated sumcheck and code switch for integration in main whir orchestrator * feat : added mask proximity protocol * refactor : cleanup and added few tests * tiny change * feat : added assert for interleaving depth == 1 in mask proximity protocol * resolved comments * feat : added some tests in code switch * feat : updated code switch protocol for parameter selection logic * feat : added support for interleaving depth > 1 for code switch * fix : tests in runner * nits: comment and type * feat : comments resolved, added asserts, fixed test coverage * added security comment for verifier * fix: rust nits
main
5 days ago
chore(whir_zk): clippy + signature cleanup post-pruned-NTT Reviewer flagged that `f_hat_witness: &mut` in `ood_stir_and_rounds`, `gamma_check`, and `prove_blinded_polynomial` is no longer accurate — the partial-encode path never mutates the witness. Switch to `&` and drop the now-redundant `&*` reborrows. Misleading `&mut` could mask future bugs where the witness is unintentionally mutated. Also applies the smaller clippy/fmt nits the reviewer surfaced: - ntt_partial: allow(dead_code) (kept pub for external callers; the hot path uses ntt_partial_with_plan_into) - PartialNttPlan::size: const fn - ntt_partial_with_plan_into: allow(significant_drop_tightening); the roots-table RwLockReadGuard is intentionally held across all DIT stages, mirroring ntt_dispatch - assertion comparison form: `> n` instead of `>= n + 1` - cargo fmt `cargo clippy -- -D warnings` is now clean; 155 lib tests still pass.
shreyas-londhe:perf/drop-linear-forms
16 days ago
perf(whir_zk): hold IRS coefficients, re-encode codeword on demand The initial IRS commit witnesses (f_hat and blinding_poly) previously held their full Reed-Solomon encoded codewords resident from commit through the entire whir_zk::prove. The codeword is only consumed at open time (Merkle path generation + queried row extraction); the coefficients are smaller by the blowup factor (e.g. 4x at rate 1/4) and already retained for other protocol uses. Drop matrix immediately after commit. Re-encode transiently around each open and drop again after. Three encodes per whir_zk::prove call: one for each of f_hat's two opens (ood_stir_and_rounds, gamma_check) and one for blinding_poly's open in prove_blinding_polynomial. Measured on complete_age_check (m=20, N=5 interleaved): - peak: 805 -> 706 MB (-99 MB / -12.3%) - wall (median): 3500 -> 4220 ms (+20.6%, +720 ms) - allocs: 3.56M -> 3.61M (+50k) Combined with linear_forms drop (c183108) versus unoptimised v1: - peak: 880 -> 706 MB (-174 MB / -19.8%) Protocol-equivalent. Prove + verify roundtrip passes byte-identically. Re-encoded codeword matches the original since interleaved_rs_encode is deterministic.
shreyas-londhe:perf/drop-linear-forms
16 days ago
perf(whir_zk): drop linear_forms after covector build Take linear_forms by value in prepare_and_sumcheck / prove_blinded_polynomial and drop it as soon as the combined covector has been built. Each Covector in linear_forms holds num_witnesses field elements; for R1CS circuits with 3 matrices (A, B, C) and millions of witnesses this is ~100 MB freed before the WHIR commit phase, where peak memory is hit. Measured peak reduction on provekit (m=20 circuits): - complete_age_check: 880 -> 805 MB (-8.5%) - t_add_dsc_1850: 533 -> 497 MB (-6.8%) - t_add_id_data_1850: 222 -> 203 MB (-8.6%) - poseidon-rounds: 467 -> 467 MB (no change, small linear forms) Protocol-equivalent. Transcript byte-identical. E2E prove+verify passes.
shreyas-londhe:perf/drop-linear-forms
18 days ago
Merge pull request #8 from ocdbytes/aj/opt/proof-size-v1-LA-T Fix: Added verify! macros for panic prone variables [LA-T]
ocdbytes:aj/opt/proof-size-v1
21 days ago
Merge pull request #7 from ocdbytes/aj/opt/proof-size-v1-LA-Q Fix: Added weights linear form bindings to the transcript [LA-Q]
ocdbytes:aj/opt/proof-size-v1
21 days ago
Merge pull request #6 from ocdbytes/aj/opt/proof-size-v1-LA-O Fix: Added weights linear form bindings to the transcript (in zkWHIR) [LA-O]
ocdbytes:aj/opt/proof-size-v1
21 days ago
Merge pull request #5 from ocdbytes/aj/opt/proof-size-v1-LA-L-LA-M-LA-N-LA-P-LA-R Fix: Added evaluation bindings to the transcript [LA-L, LA-M, LA-N, LA-P, LA-R]
ocdbytes:aj/opt/proof-size-v1
21 days ago
Latest Branches
CodSpeed Performance Gauge
-19%
perf(whir_zk): IRS-coeff residency + output-pruned NTT for f̂ opens
#252
16 days ago
c39ce01
shreyas-londhe:perf/drop-linear-forms
CodSpeed Performance Gauge
-24%
Opt : smaller proof size by using alternate randomness sampling approach (audit branch : v1)
#239
21 days ago
6c9848d
ocdbytes:aj/opt/proof-size-v1
CodSpeed Performance Gauge
0%
zkWHIR 3.0 : Updated protocols for whir round integration and added mask proximity protocol (part 2)
#251
25 days ago
a1190bd
ocdbytes:aj/zk-whir-3-2
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs