-
Notifications
You must be signed in to change notification settings - Fork 154
/
Copy pathtraits.rs
41 lines (36 loc) · 1010 Bytes
/
traits.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use lambdaworks_math::{
field::{element::FieldElement, traits::IsField},
polynomial::Polynomial,
};
pub trait IsCommitmentScheme<F: IsField> {
type Commitment;
fn commit(&self, p: &Polynomial<FieldElement<F>>) -> Self::Commitment;
fn open(
&self,
x: &FieldElement<F>,
y: &FieldElement<F>,
p: &Polynomial<FieldElement<F>>,
) -> Self::Commitment;
fn open_batch(
&self,
x: &FieldElement<F>,
y: &[FieldElement<F>],
p: &[Polynomial<FieldElement<F>>],
upsilon: &FieldElement<F>,
) -> Self::Commitment;
fn verify(
&self,
x: &FieldElement<F>,
y: &FieldElement<F>,
p_commitment: &Self::Commitment,
proof: &Self::Commitment,
) -> bool;
fn verify_batch(
&self,
x: &FieldElement<F>,
ys: &[FieldElement<F>],
p_commitments: &[Self::Commitment],
proof: &Self::Commitment,
upsilon: &FieldElement<F>,
) -> bool;
}