diff --git a/src/pcs/id/mod.rs b/src/pcs/id/mod.rs index b2ab83b..abd9a56 100644 --- a/src/pcs/id/mod.rs +++ b/src/pcs/id/mod.rs @@ -1,4 +1,3 @@ -use ark_ff::Zero; use ark_poly::Polynomial; use ark_serialize::{CanonicalDeserialize, CanonicalSerialize}; use ark_std::vec::Vec; @@ -28,23 +27,27 @@ impl Sub for WrappedPolynomial { type Output = WrappedPolynomial; fn sub(self, other: WrappedPolynomial) -> Self::Output { - let mut temp = self.0; - temp -= &other.0; //TODO - WrappedPolynomial(temp) + WrappedPolynomial(self.0 - other.0) } } -impl core::iter::Sum for WrappedPolynomial { +impl Sum for WrappedPolynomial { fn sum>(iter: I) -> Self { iter.reduce(|a, b| a + b).unwrap() } } +impl Mul for WrappedPolynomial { + type Output = WrappedPolynomial; + + fn mul(self, by: F) -> Self { + (&self).mul(by) + } +} + impl Commitment for WrappedPolynomial { fn mul(&self, by: F) -> Self { - let mut temp = Poly::zero(); //TODO - temp += (by, &self.0); - WrappedPolynomial(temp) + WrappedPolynomial(&self.0 * by) } fn combine(coeffs: &[F], commitments: &[Self]) -> Self { diff --git a/src/pcs/kzg/commitment.rs b/src/pcs/kzg/commitment.rs index 88da5c3..f187e0c 100644 --- a/src/pcs/kzg/commitment.rs +++ b/src/pcs/kzg/commitment.rs @@ -12,6 +12,14 @@ use crate::utils::ec::small_multiexp_affine; #[derive(Clone, Debug, PartialEq, Eq, CanonicalSerialize, CanonicalDeserialize)] pub struct KzgCommitment(pub E::G1Affine); +impl Mul for KzgCommitment { + type Output = Self; + + fn mul(self, by: E::ScalarField) -> Self { + (&self).mul(by) + } +} + impl Commitment for KzgCommitment { fn mul(&self, by: E::ScalarField) -> KzgCommitment { KzgCommitment(self.0.mul(by).into()) diff --git a/src/pcs/mod.rs b/src/pcs/mod.rs index 7a8f576..a2cb0b8 100644 --- a/src/pcs/mod.rs +++ b/src/pcs/mod.rs @@ -3,7 +3,7 @@ use ark_poly::Evaluations; use ark_serialize::*; use ark_std::fmt::Debug; use ark_std::iter::Sum; -use ark_std::ops::{Add, Sub}; +use ark_std::ops::{Add, Mul, Sub}; use ark_std::rand::Rng; use ark_std::vec::Vec; @@ -20,6 +20,7 @@ pub trait Commitment: + Clone + Debug + Add + + Mul + Sub + Sum + CanonicalSerialize