Skip to content

Zook: return the final evaluation point from prove - #274

Merged
zkfriendly merged 2 commits into
mainfrom
ys/zook-prover-final-eval-point
Sep 1, 2026
Merged

Zook: return the final evaluation point from prove#274
zkfriendly merged 2 commits into
mainfrom
ys/zook-prover-final-eval-point

Conversation

@BornPsych

@BornPsych BornPsych commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #270 — review that first; this PR's diff is only the last commit.

What

ProtocolConfig::prove currently returns () and discards everything the transcript derived, so a caller that wants to continue reasoning about the proof (e.g. wiring Zook into an outer protocol, or checking prover/verifier agreement in tests) has no way to get at the final evaluation point. This PR returns it.

prove now returns a ProverClaim<F>:

pub struct ProverClaim<F: ark_ff::Field> {
    /// Sumcheck challenges followed by the basecase evaluation points.
    pub evaluation_point: Vec<F>,
    /// Fiat-Shamir RLC coefficients for the input forms.
    pub rlc_coefficients: Vec<F>,
}

These are the prover-side mirror of the FinalClaim fields the verifier already returns.

How

  • ProverRoundState gains all_round_challenges: Vec<M::Target>, accumulating each round's sumcheck challenges in transcript order.
  • After the rounds, the basecase opening's evaluation_points are appended, giving the full point in the same order the verifier reconstructs it.
  • A debug_assert pins evaluation_point.len() == log2(vector_size).
  • The basecase opening was previously bound to let _ =; it is now used.

Tests

  • build_and_prove returns a Proven struct instead of a 4-tuple — the tuple was already 4 fields wide and this adds a 5th.
  • Roundtrip tests assert the prover's evaluation_point and rlc_coefficients match the verifier's FinalClaim, so a divergence between the two sides fails loudly rather than silently.

cargo test zook → 21 passed. cargo fmt --check and cargo clippy --all-targets clean.

@codspeed-hq

codspeed-hq Bot commented Aug 20, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 10 untouched benchmarks
⏩ 22 skipped benchmarks1


Comparing ys/zook-prover-final-eval-point (007c560) with main (c274cd5)

Open in CodSpeed

Footnotes

  1. 22 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Base automatically changed from zkfr/integrate-buffer-abstraction to main August 26, 2026 10:42
@shreyas-londhe
shreyas-londhe force-pushed the ys/zook-prover-final-eval-point branch from bc2aa3f to 78e9460 Compare August 26, 2026 10:42
@BornPsych
BornPsych marked this pull request as ready for review August 27, 2026 09:40
@BornPsych
BornPsych requested a review from zkfriendly August 27, 2026 09:40

@zkfriendly zkfriendly left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! thanks. Only thing is CI is failing due to a Clippy error; it's coming from an unchanged file, but it would be nice to fix it here and then merge with a green CI.

@BornPsych
BornPsych requested a review from zkfriendly September 1, 2026 18:03
@zkfriendly
zkfriendly merged commit c03a4a5 into main Sep 1, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants