feat: add HyperKZG zero-knowledge openings - #1600
Conversation
cfa79a0 to
131c07b
Compare
289808a to
627edbd
Compare
|
Stack maintenance — rebased onto #1599 ( 📚 Stack A: #1596 → #1597 → #1598 → #1599 → #1600 (this PR) → #1601 → #1602 → #1603 #1596 and #1597 are shared by both stacks; each PR targets the one before it. Conflict resolution
|
|
Claude code review session started: https://claude.ai/code/session_01SSHUghHhaiXRDU1SxBgbvK |
moodlezoup
left a comment
There was a problem hiding this comment.
Reviewed the HyperKZG ZK opening protocol with a focus on soundness. The Fiat-Shamir ordering is consistent between prover and verifier across all three challenge derivations (r after appending point/y_out/com; alpha/q after appending the hidden eval-commitment rows; d after appending the witnesses), so no challenge depends on a value committed later. The verifier-side length checks (com.len()+1 == ell, eval-row widths) gate all indexing before the transcript is touched, so a malformed proof can't trigger an out-of-bounds panic. I also re-derived solve_v2_fold_randomizers against the gemini blinding relations and the two-point linear system solves out exactly, and the batched pairing check expands (by powers of d) into the expected per-point KZG opening identities. No soundness or correctness issues found. One minor simplification noted inline.
Generated by Claude Code
| Self::open_with_mode::<Transparent, T>(setup, evals, point, transcript) | ||
| } | ||
|
|
||
| fn open_with_mode<M, T>( |
There was a problem hiding this comment.
open_with_mode is only ever instantiated with Transparent — the ZK path goes through open_zk_inner, not here — and the body immediately debug_asserts M::PROOF_KIND == Clear. The M parameter buys nothing; folding this back into a plain open would drop the dead generality. (commit_with_mode's M is fine since it has both Transparent and Zk callers.)
Generated by Claude Code
131c07b to
ab30576
Compare
6d77405 to
fd2a7a3
Compare
|
Closing the prover-stack/03–08 recursion/wrapper chain (#1598–#1603) as stale: dormant since June 17, and the cheap-verification goal moved to the Akita lattice PCS line (#1655/#1675/#1676, ports in #1718/#1732), with the ZK need served by BlindFold in the modular prover (#1690). The stack's merge-base predates ~7 weeks of main (incl. #1632 jolt-core→jolt-prover-legacy, #1654, #1665), so merging as-is would silently revert shared files. The recursion content itself never landed elsewhere — branches left in place in case the wrapper direction revives. |
Part of the draft Jolt prover stack.
Base:
prover-stack/04-hyraxHead:
prover-stack/05-hyperkzg-zkAdds HyperKZG ZK setup/opening support, tests, and protocol spec.
Validation before submission:
cargo fmt -q -- --checkcargo metadata --no-deps --format-version 1gh stack pushsimulation against a temporary bare remotehandoffs/, oldSTACK.md,stack/, and old stack workflow