Skip to content

Commit 111764c

Browse files
committed
fix: decompress panic
1 parent 767a098 commit 111764c

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

plonky2/src/plonk/get_challenges.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#[cfg(not(feature = "std"))]
22
use alloc::{vec, vec::Vec};
33

4+
use anyhow::anyhow;
45
use hashbrown::HashSet;
56

67
use super::circuit_builder::NUM_COINS_LOOKUP;
@@ -187,7 +188,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
187188
&self,
188189
challenges: &ProofChallenges<F, D>,
189190
common_data: &CommonCircuitData<F, D>,
190-
) -> FriInferredElements<F, D> {
191+
) -> anyhow::Result<FriInferredElements<F, D>> {
191192
let ProofChallenges {
192193
plonk_zeta,
193194
fri_challenges:
@@ -215,11 +216,12 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
215216
* F::primitive_root_of_unity(log_n).exp_u64(reverse_bits(x_index, log_n) as u64);
216217
let mut old_eval = fri_combine_initial::<F, C, D>(
217218
&common_data.get_fri_instance(*plonk_zeta),
218-
&self
219-
.proof
219+
self.proof
220220
.opening_proof
221221
.query_round_proofs
222-
.initial_trees_proofs[&x_index],
222+
.initial_trees_proofs
223+
.get(&x_index)
224+
.ok_or_else(|| anyhow!("fri_query_index missing from initial_trees_proofs"))?,
223225
*fri_alpha,
224226
subgroup_x,
225227
&precomputed_reduced_evals,
@@ -254,7 +256,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
254256
x_index = coset_index;
255257
}
256258
}
257-
FriInferredElements(fri_inferred_elements)
259+
Ok(FriInferredElements(fri_inferred_elements))
258260
}
259261
}
260262

plonky2/src/plonk/proof.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
192192
) -> anyhow::Result<ProofWithPublicInputs<F, C, D>> {
193193
let challenges =
194194
self.get_challenges(self.get_public_inputs_hash(), circuit_digest, common_data)?;
195-
let fri_inferred_elements = self.get_inferred_elements(&challenges, common_data);
195+
let fri_inferred_elements = self.get_inferred_elements(&challenges, common_data)?;
196196
let decompressed_proof =
197197
self.proof
198198
.decompress(&challenges, fri_inferred_elements, &common_data.fri_params);
@@ -217,7 +217,7 @@ impl<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>
217217
&verifier_data.circuit_digest,
218218
common_data,
219219
)?;
220-
let fri_inferred_elements = self.get_inferred_elements(&challenges, common_data);
220+
let fri_inferred_elements = self.get_inferred_elements(&challenges, common_data)?;
221221
let decompressed_proof =
222222
self.proof
223223
.decompress(&challenges, fri_inferred_elements, &common_data.fri_params);

0 commit comments

Comments
 (0)