Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions provekit/prover/src/whir_r1cs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,9 @@ fn prove_from_alphas(
let (mut weights, evals) =
create_weights_and_evaluations::<3>(scheme.m, &commitment.polynomial, alphas);

merlin.prover_hint_ark(&evals);
for eval in &evals {
merlin.prover_message(eval);
}

if !public_inputs.is_empty() {
let public_eval = compute_public_weight_evaluation(
Expand Down Expand Up @@ -323,8 +325,12 @@ fn prove_from_alphas(

let evals_1 = compute_alpha_evals(&c1.polynomial, &alphas_1);
let evals_2 = compute_alpha_evals(&c2.polynomial, &alphas_2);
merlin.prover_hint_ark(&evals_1);
merlin.prover_hint_ark(&evals_2);
for eval in &evals_1 {
merlin.prover_message(eval);
}
for eval in &evals_2 {
merlin.prover_message(eval);
}

let public_1 = if !public_inputs.is_empty() {
let p1 = compute_public_eval(x, public_inputs.len(), &c1.polynomial);
Expand Down
51 changes: 33 additions & 18 deletions provekit/verifier/src/whir_r1cs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,18 +118,28 @@ impl WhirR1CSVerifier for WhirR1CSScheme {
.try_into()
.map_err(|_| anyhow::anyhow!("Expected 3 alpha vectors for commitment 2"))?;

let evals_1: Vec<FieldElement> = arthur
.prover_hint_ark()
.map_err(|_| anyhow::anyhow!("Failed to read evals_1 hint"))?;
let evals_2: Vec<FieldElement> = arthur
.prover_hint_ark()
.map_err(|_| anyhow::anyhow!("Failed to read evals_2 hint"))?;
let evals_1: [FieldElement; 3] = evals_1
.try_into()
.map_err(|_| anyhow::anyhow!("Expected 3 evaluation values for commitment 1"))?;
let evals_2: [FieldElement; 3] = evals_2
.try_into()
.map_err(|_| anyhow::anyhow!("Expected 3 evaluation values for commitment 2"))?;
let evals_1: [FieldElement; 3] = [
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals_1[0]"))?,
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals_1[1]"))?,
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals_1[2]"))?,
];
let evals_2: [FieldElement; 3] = [
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals_2[0]"))?,
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals_2[1]"))?,
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals_2[2]"))?,
];

let mut weights_1 = build_prefix_covectors(self.m, alphas_1);
let weights_2 = build_prefix_covectors(self.m, alphas_2);
Expand Down Expand Up @@ -171,12 +181,17 @@ impl WhirR1CSVerifier for WhirR1CSScheme {
evals_1[2] + evals_2[2],
)
} else {
let evals: Vec<FieldElement> = arthur
.prover_hint_ark()
.map_err(|_| anyhow::anyhow!("Failed to read evals hint"))?;
let evals: [FieldElement; 3] = evals
.try_into()
.map_err(|_| anyhow::anyhow!("Expected 3 evaluation values"))?;
let evals: [FieldElement; 3] = [
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals[0]"))?,
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals[1]"))?,
arthur
.prover_message()
.map_err(|_| anyhow::anyhow!("Failed to read evals[2]"))?,
];

let mut weights = build_prefix_covectors(self.m, alphas);

Expand Down
Loading