3
3
use ark_ff:: { One , UniformRand , Zero } ;
4
4
use ark_poly:: { univariate:: DensePolynomial , Evaluations } ;
5
5
use criterion:: { black_box, criterion_group, criterion_main, BatchSize , Criterion } ;
6
- use kimchi:: { circuits:: domains:: EvaluationDomains , groupmap:: GroupMap } ;
6
+ use kimchi:: {
7
+ circuits:: domains:: EvaluationDomains , groupmap:: GroupMap , precomputed_srs:: get_srs_test,
8
+ } ;
7
9
use mina_curves:: pasta:: { Fp , Vesta } ;
8
10
use once_cell:: sync:: Lazy ;
9
- use poly_commitment:: { commitment:: CommitmentCurve , ipa :: SRS , SRS as _} ;
11
+ use poly_commitment:: { commitment:: CommitmentCurve , SRS as _} ;
10
12
use rand:: rngs:: OsRng ;
11
13
use saffron:: {
12
- env,
13
14
read_proof:: { prove, verify} ,
14
15
ScalarField , SRS_SIZE ,
15
16
} ;
16
17
17
- // Set up static resources to avoid re-computation during benchmarks
18
- static SRS : Lazy < SRS < Vesta > > = Lazy :: new ( || {
19
- if let Ok ( srs) = std:: env:: var ( "SRS_FILEPATH" ) {
20
- env:: get_srs_from_cache ( srs)
21
- } else {
22
- SRS :: create ( SRS_SIZE )
23
- }
24
- } ) ;
25
-
26
18
static DOMAIN : Lazy < EvaluationDomains < ScalarField > > =
27
19
Lazy :: new ( || EvaluationDomains :: < ScalarField > :: create ( SRS_SIZE ) . unwrap ( ) ) ;
28
20
@@ -37,10 +29,12 @@ fn generate_test_data(
37
29
// Generate data with specified size
38
30
let data: Vec < ScalarField > = ( 0 ..size) . map ( |_| Fp :: rand ( & mut rng) ) . collect ( ) ;
39
31
32
+ let srs = get_srs_test ( ) ;
33
+
40
34
// Create data commitment
41
35
let data_poly: DensePolynomial < ScalarField > =
42
36
Evaluations :: from_vec_and_domain ( data. clone ( ) , DOMAIN . d1 ) . interpolate ( ) ;
43
- let data_comm: Vesta = SRS . commit_non_hiding ( & data_poly, 1 ) . chunks [ 0 ] ;
37
+ let data_comm: Vesta = srs . commit_non_hiding ( & data_poly, 1 ) . chunks [ 0 ] ;
44
38
45
39
// Generate query (about 10% of positions will be queried)
46
40
let query: Vec < ScalarField > = ( 0 ..size)
@@ -62,14 +56,16 @@ fn generate_test_data(
62
56
fn bench_read_proof_prove ( c : & mut Criterion ) {
63
57
let ( data, query, answer, data_comm) = generate_test_data ( SRS_SIZE ) ;
64
58
59
+ let srs = get_srs_test ( ) ;
60
+
65
61
let description = format ! ( "prove size {}" , SRS_SIZE ) ;
66
62
c. bench_function ( description. as_str ( ) , |b| {
67
63
b. iter_batched (
68
64
|| OsRng ,
69
65
|mut rng| {
70
66
black_box ( prove (
71
67
* DOMAIN ,
72
- & SRS ,
68
+ & srs ,
73
69
& GROUP_MAP ,
74
70
& mut rng,
75
71
data. as_slice ( ) ,
@@ -86,11 +82,13 @@ fn bench_read_proof_prove(c: &mut Criterion) {
86
82
fn bench_read_proof_verify ( c : & mut Criterion ) {
87
83
let ( data, query, answer, data_comm) = generate_test_data ( SRS_SIZE ) ;
88
84
85
+ let srs = get_srs_test ( ) ;
86
+
89
87
// Create proof first
90
88
let mut rng = OsRng ;
91
89
let proof = prove (
92
90
* DOMAIN ,
93
- & SRS ,
91
+ & srs ,
94
92
& GROUP_MAP ,
95
93
& mut rng,
96
94
data. as_slice ( ) ,
@@ -105,7 +103,7 @@ fn bench_read_proof_verify(c: &mut Criterion) {
105
103
|| OsRng ,
106
104
|mut rng| {
107
105
black_box ( verify (
108
- * DOMAIN , & SRS , & GROUP_MAP , & mut rng, & data_comm, & proof,
106
+ * DOMAIN , & srs , & GROUP_MAP , & mut rng, & data_comm, & proof,
109
107
) )
110
108
} ,
111
109
BatchSize :: SmallInput ,
0 commit comments