@@ -99,14 +99,22 @@ pub type QuerySet<'a, F> = BTreeSet<(String, (String, F))>;
9999pub type Evaluations < ' a , F > = BTreeMap < ( String , F ) , F > ;
100100
101101/// A proof of satisfaction of linear combinations.
102- #[ derive( Clone ) ]
103102pub struct BatchLCProof < F : Field , PC : PolynomialCommitment < F > > {
104103 /// Evaluation proof.
105104 pub proof : PC :: BatchProof ,
106105 /// Evaluations required to verify the proof.
107106 pub evals : Option < Vec < F > > ,
108107}
109108
109+ impl < F : Field , PC : PolynomialCommitment < F > > Clone for BatchLCProof < F , PC > {
110+ fn clone ( & self ) -> Self {
111+ BatchLCProof {
112+ proof : self . proof . clone ( ) ,
113+ evals : self . evals . clone ( ) ,
114+ }
115+ }
116+ }
117+
110118/// Describes the interface for a polynomial commitment scheme that allows
111119/// a sender to commit to multiple polynomials and later provide a succinct proof
112120/// of evaluation for the corresponding commitments at a query set `Q`, while
@@ -119,9 +127,9 @@ pub trait PolynomialCommitment<F: Field>: Sized {
119127 /// open the commitment to produce an evaluation proof.
120128 type CommitterKey : PCCommitterKey ;
121129 /// The verifier key for the scheme; used to check an evaluation proof.
122- type VerifierKey : PCVerifierKey ;
130+ type VerifierKey : PCVerifierKey + Default ;
123131 /// The prepared verifier key for the scheme; used to check an evaluation proof.
124- type PreparedVerifierKey : PCPreparedVerifierKey < Self :: VerifierKey > + Clone ;
132+ type PreparedVerifierKey : PCPreparedVerifierKey < Self :: VerifierKey > + Default + Clone ;
125133 /// The commitment to a polynomial.
126134 type Commitment : PCCommitment + Default ;
127135 /// The prepared commitment to a polynomial.
0 commit comments