Skip to content

Commit 42ce480

Browse files
authored
Refactor SpartanProver trait and implementations to use generic CryptoInt types (#99)
1 parent 01d3978 commit 42ce480

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

benches/spartan_benches.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn benchmark_spartan_prover<const I: usize, const N: usize>(
4545
KeccakTranscript::new,
4646
|mut prover_transcript| {
4747
black_box(
48-
SpartanProver::<I, _>::prove(
48+
SpartanProver::<Int<I>, _>::prove(
4949
&prover,
5050
&statement_f,
5151
&z_ccs,
@@ -87,7 +87,7 @@ fn benchmark_spartan_verifier<const I: usize, const N: usize>(
8787
)
8888
.expect("Failed to prepare for random field PIOP");
8989

90-
let (spartan_proof, _) = SpartanProver::<I, _>::prove(
90+
let (spartan_proof, _) = SpartanProver::<Int<I>, _>::prove(
9191
&prover,
9292
&statement_f,
9393
&z_ccs,

src/zinc/prover.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::{
1919
poly_z::mle::DenseMultilinearExtension as DenseMultilinearExtensionZ,
2020
sparse_matrix::SparseMatrix,
2121
sumcheck::{utils::build_eq_x_r, MLSumcheck, SumcheckProof},
22-
traits::{ConfigReference, Field, FieldMap},
22+
traits::{ConfigReference, CryptoInt, Field, FieldMap},
2323
transcript::KeccakTranscript,
2424
zip::{code::ZipSpec, pcs::structs::MultilinearZip, pcs_transcript::PcsTranscript},
2525
};
@@ -66,7 +66,7 @@ where
6666
Self::prepare_for_random_field_piop(statement, wit, ccs, config)?;
6767

6868
// Prove Spartan protocol over random field
69-
let (spartan_proof, r_y) = SpartanProver::<I, F>::prove(
69+
let (spartan_proof, r_y) = SpartanProver::<Int<I>, F>::prove(
7070
self,
7171
&statement_f,
7272
&z_ccs,
@@ -88,7 +88,7 @@ where
8888
}
8989
}
9090
/// Prover for the Spartan protocol
91-
pub trait SpartanProver<const I: usize, F: Field> {
91+
pub trait SpartanProver<I: CryptoInt, F: Field> {
9292
/// Generates a proof for the spartan protocol
9393
///
9494
/// # Arguments
@@ -112,14 +112,14 @@ pub trait SpartanProver<const I: usize, F: Field> {
112112
&self,
113113
statement_f: &Statement_F<F>,
114114
z_ccs: &[F],
115-
z_mle: &DenseMultilinearExtensionZ<Int<I>>,
115+
z_mle: &DenseMultilinearExtensionZ<I>,
116116
ccs_f: &CCS_F<F>,
117117
transcript: &mut KeccakTranscript,
118118
config: F::Cr,
119119
) -> SpartanResult<(SpartanProof<F>, Vec<F>), F>;
120120
}
121121

122-
impl<const I: usize, F: Field, S: ZipSpec> SpartanProver<I, F> for ZincProver<Int<I>, F, S>
122+
impl<const I: usize, F: Field, S: ZipSpec> SpartanProver<Int<I>, F> for ZincProver<Int<I>, F, S>
123123
where
124124
for<'a> Int<I>: From<&'a F::I>,
125125
for<'a> F::CryptoInt: From<&'a BigInt<I>>, // TODO

src/zinc/tests.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn test_dummy_spartan_prover() {
3737
)
3838
.expect("Failed to prepare for random field PIOP");
3939

40-
let proof = SpartanProver::<I, RandomField<N>>::prove(
40+
let proof = SpartanProver::<Int<I>, RandomField<N>>::prove(
4141
&prover,
4242
&statement_f,
4343
&z_ccs,
@@ -70,7 +70,7 @@ fn test_spartan_verifier() {
7070
)
7171
.expect("Failed to prepare for random field PIOP");
7272

73-
let (spartan_proof, _) = SpartanProver::<I, RandomField<N>>::prove(
73+
let (spartan_proof, _) = SpartanProver::<Int<I>, RandomField<N>>::prove(
7474
&prover,
7575
&statement_f,
7676
&z_ccs,
@@ -117,7 +117,7 @@ fn test_dummy_spartan_verifier() {
117117
)
118118
.expect("Failed to prepare for random field PIOP");
119119

120-
let (spartan_proof, _) = SpartanProver::<I, RandomField<N>>::prove(
120+
let (spartan_proof, _) = SpartanProver::<Int<I>, RandomField<N>>::prove(
121121
&prover,
122122
&statement_f,
123123
&z_ccs,
@@ -164,7 +164,7 @@ fn test_failing_spartan_verifier() {
164164
)
165165
.expect("Failed to prepare for random field PIOP");
166166

167-
let (spartan_proof, _) = SpartanProver::<I, RandomField<N>>::prove(
167+
let (spartan_proof, _) = SpartanProver::<Int<I>, RandomField<N>>::prove(
168168
&prover,
169169
&statement_f,
170170
&z_ccs,

0 commit comments

Comments
 (0)