From 669e7a352cbbe866720d2674a65377d22313064f Mon Sep 17 00:00:00 2001 From: jotabulacios Date: Mon, 24 Feb 2025 18:33:43 -0300 Subject: [PATCH] handle division by zero error --- provers/plonk/src/prover.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/provers/plonk/src/prover.rs b/provers/plonk/src/prover.rs index c98539ed5..b8742cc57 100644 --- a/provers/plonk/src/prover.rs +++ b/provers/plonk/src/prover.rs @@ -15,6 +15,10 @@ use lambdaworks_math::{ }; use lambdaworks_math::{field::traits::IsField, traits::ByteConversion}; +#[derive(Debug)] +pub enum ProverError { + DivisionByZero, +} /// Plonk proof. /// The challenges are denoted /// Round 2: β,γ, @@ -362,7 +366,9 @@ where * lp(c_i, &(&cpi.domain[i] * &k2)); let den = lp(a_i, &s1[i]) * lp(b_i, &s2[i]) * lp(c_i, &s3[i]); // We are using that den != 0 with high probability because beta and gamma are random elements. - let new_factor = (num / den).expect("Unexpected zero denominator in round 2"); + let new_factor = (num / den) + .map_err(|_| ProverError::DivisionByZero) + .unwrap(); let new_term = coefficients.last().unwrap() * &new_factor; coefficients.push(new_term);