@@ -38,6 +38,7 @@ use libspartan::{
38
38
} ;
39
39
use serde:: { Deserialize , Serialize } ;
40
40
use std:: time:: * ;
41
+ use mpcs:: { WhirDefault , PolynomialCommitmentScheme } ;
41
42
42
43
// How many reserved variables (EXCLUDING V) are in front of the actual input / output?
43
44
// %BN, %RET, %TS, %AS, %SP, %BP
@@ -1289,7 +1290,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, E: ExtensionField + Send + Sync>(
1289
1290
}
1290
1291
}
1291
1292
1292
- fn run_spartan_proof < E : ExtensionField + Send + Sync > (
1293
+ fn run_spartan_proof < E : ExtensionField + Send + Sync , Pcs : PolynomialCommitmentScheme < E > > (
1293
1294
ctk : CompileTimeKnowledge ,
1294
1295
rtk : RunTimeKnowledge < E > ,
1295
1296
) {
@@ -1380,11 +1381,11 @@ fn run_spartan_proof<E: ExtensionField + Send + Sync>(
1380
1381
// block_comm_map records the sparse_polys committed in each commitment
1381
1382
// Note that A, B, C are committed separately, so sparse_poly[3*i+2] corresponds to poly C of instance i
1382
1383
let ( block_comm_map, block_comm_list, block_decomm_list) =
1383
- SNARK :: multi_encode ( & block_inst_for_commit) ;
1384
+ SNARK :: < E , Pcs > :: multi_encode ( & block_inst_for_commit) ;
1384
1385
println ! ( "Finished Block" ) ;
1385
- let ( pairwise_check_comm, pairwise_check_decomm) = SNARK :: encode ( & pairwise_check_inst) ;
1386
+ let ( pairwise_check_comm, pairwise_check_decomm) = SNARK :: < E , Pcs > :: encode ( & pairwise_check_inst) ;
1386
1387
println ! ( "Finished Pairwise" ) ;
1387
- let ( perm_root_comm, perm_root_decomm) = SNARK :: encode ( & perm_root_inst) ;
1388
+ let ( perm_root_comm, perm_root_decomm) = SNARK :: < E , Pcs > :: encode ( & perm_root_inst) ;
1388
1389
println ! ( "Finished Perm" ) ;
1389
1390
1390
1391
// --
@@ -1401,7 +1402,7 @@ fn run_spartan_proof<E: ExtensionField + Send + Sync>(
1401
1402
println ! ( "Running the proof..." ) ;
1402
1403
// produce a proof of satisfiability
1403
1404
let mut prover_transcript = Transcript :: new ( b"snark_example" ) ;
1404
- let proof = SNARK :: prove (
1405
+ let proof: SNARK < E , Pcs > = SNARK :: prove (
1405
1406
ctk. input_block_num ,
1406
1407
ctk. output_block_num ,
1407
1408
& ctk. input_liveness ,
@@ -1446,7 +1447,7 @@ fn run_spartan_proof<E: ExtensionField + Send + Sync>(
1446
1447
& perm_root_comm,
1447
1448
& perm_root_decomm,
1448
1449
& mut prover_transcript,
1449
- ) ;
1450
+ ) ;
1450
1451
1451
1452
println ! ( "Verifying the proof..." ) ;
1452
1453
// verify the proof of satisfiability
@@ -1495,6 +1496,8 @@ fn run_spartan_proof<E: ExtensionField + Send + Sync>(
1495
1496
}
1496
1497
1497
1498
fn main ( ) {
1499
+ type E = GoldilocksExt2 ;
1500
+ type Pcs = WhirDefault < E > ;
1498
1501
env_logger:: Builder :: from_default_env ( )
1499
1502
. format_level ( false )
1500
1503
. format_timestamp ( None )
@@ -1604,7 +1607,7 @@ fn main() {
1604
1607
// --
1605
1608
// Generate Witnesses
1606
1609
// --
1607
- let rtk = get_run_time_knowledge :: < false , GoldilocksExt2 > (
1610
+ let rtk = get_run_time_knowledge :: < false , E > (
1608
1611
path. clone ( ) ,
1609
1612
& options,
1610
1613
entry_regs,
@@ -1633,7 +1636,7 @@ fn main() {
1633
1636
rtk. serialize_to_file ( benchmark_name. to_string ( ) , MAX_FILE_SIZE )
1634
1637
. unwrap ( ) ;
1635
1638
if INLINE_SPARTAN_PROOF {
1636
- run_spartan_proof ( ctk, rtk) ;
1639
+ run_spartan_proof :: < E , Pcs > ( ctk, rtk) ;
1637
1640
}
1638
1641
1639
1642
println ! ( "Compiler time: {}ms" , compiler_time. as_millis( ) ) ;
0 commit comments