@@ -13,7 +13,12 @@ use circ::target::r1cs::wit_comp::StagedWitCompEvaluator;
13
13
use circ:: target:: r1cs:: ProverData ;
14
14
use circ:: target:: r1cs:: { Lc , VarType } ;
15
15
use core:: cmp:: min;
16
- use libspartan:: scalar:: { ScalarExt2 , SpartanExtensionField } ;
16
+ use ff_ext:: ExtensionField ;
17
+ use libspartan:: {
18
+ bytes:: { to_bytes} ,
19
+ transcript:: Transcript ,
20
+ } ;
21
+ use goldilocks:: GoldilocksExt2 ;
17
22
use rug:: Integer ;
18
23
19
24
use std:: fs:: { create_dir_all, File } ;
@@ -31,7 +36,6 @@ use std::path::PathBuf;
31
36
use libspartan:: {
32
37
instance:: Instance , Assignment , InputsAssignment , MemsAssignment , VarsAssignment , SNARK ,
33
38
} ;
34
- use merlin:: Transcript ;
35
39
use serde:: { Deserialize , Serialize } ;
36
40
use std:: time:: * ;
37
41
@@ -361,7 +365,7 @@ impl CompileTimeKnowledge {
361
365
}
362
366
363
367
#[ derive( Serialize , Deserialize ) ]
364
- struct RunTimeKnowledge < S : SpartanExtensionField + Send + Sync > {
368
+ struct RunTimeKnowledge < E : ExtensionField + Send + Sync > {
365
369
block_max_num_proofs : usize ,
366
370
block_num_proofs : Vec < usize > ,
367
371
consis_num_proofs : usize ,
@@ -370,14 +374,14 @@ struct RunTimeKnowledge<S: SpartanExtensionField + Send + Sync> {
370
374
total_num_phy_mem_accesses : usize ,
371
375
total_num_vir_mem_accesses : usize ,
372
376
373
- block_vars_matrix : Vec < Vec < VarsAssignment < S > > > ,
374
- exec_inputs : Vec < InputsAssignment < S > > ,
377
+ block_vars_matrix : Vec < Vec < VarsAssignment < E > > > ,
378
+ exec_inputs : Vec < InputsAssignment < E > > ,
375
379
// Initial memory state, in (addr, val, ls = STORE, ts = 0) pair, sorted by appearance in program input (the same as address order)
376
- init_phy_mems_list : Vec < MemsAssignment < S > > ,
377
- init_vir_mems_list : Vec < MemsAssignment < S > > ,
378
- addr_phy_mems_list : Vec < MemsAssignment < S > > ,
379
- addr_vir_mems_list : Vec < MemsAssignment < S > > ,
380
- addr_ts_bits_list : Vec < MemsAssignment < S > > ,
380
+ init_phy_mems_list : Vec < MemsAssignment < E > > ,
381
+ init_vir_mems_list : Vec < MemsAssignment < E > > ,
382
+ addr_phy_mems_list : Vec < MemsAssignment < E > > ,
383
+ addr_vir_mems_list : Vec < MemsAssignment < E > > ,
384
+ addr_ts_bits_list : Vec < MemsAssignment < E > > ,
381
385
382
386
input : Vec < [ u8 ; 32 ] > ,
383
387
input_stack : Vec < [ u8 ; 32 ] > ,
@@ -386,7 +390,7 @@ struct RunTimeKnowledge<S: SpartanExtensionField + Send + Sync> {
386
390
output_exec_num : usize ,
387
391
}
388
392
389
- impl < S : SpartanExtensionField + Send + Sync > RunTimeKnowledge < S > {
393
+ impl < E : ExtensionField + Send + Sync > RunTimeKnowledge < E > {
390
394
fn serialize_to_file (
391
395
& self ,
392
396
benchmark_name : String ,
@@ -455,7 +459,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
455
459
for exec in block {
456
460
writeln ! ( & mut f, "EXEC {}" , exec_counter) ?;
457
461
for assg in & exec. assignment {
458
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
462
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
459
463
}
460
464
writeln ! ( & mut f) ?;
461
465
exec_counter += 1 ;
@@ -467,7 +471,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
467
471
for exec in & self . exec_inputs {
468
472
writeln ! ( & mut f, "EXEC {}" , exec_counter) ?;
469
473
for assg in & exec. assignment {
470
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
474
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
471
475
}
472
476
writeln ! ( & mut f) ?;
473
477
exec_counter += 1 ;
@@ -477,7 +481,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
477
481
for addr in & self . init_phy_mems_list {
478
482
writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
479
483
for assg in & addr. assignment {
480
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
484
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
481
485
}
482
486
writeln ! ( & mut f) ?;
483
487
addr_counter += 1 ;
@@ -487,7 +491,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
487
491
for addr in & self . init_vir_mems_list {
488
492
writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
489
493
for assg in & addr. assignment {
490
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
494
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
491
495
}
492
496
writeln ! ( & mut f) ?;
493
497
addr_counter += 1 ;
@@ -497,7 +501,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
497
501
for addr in & self . addr_phy_mems_list {
498
502
writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
499
503
for assg in & addr. assignment {
500
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
504
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
501
505
}
502
506
writeln ! ( & mut f) ?;
503
507
addr_counter += 1 ;
@@ -507,7 +511,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
507
511
for addr in & self . addr_vir_mems_list {
508
512
writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
509
513
for assg in & addr. assignment {
510
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
514
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
511
515
}
512
516
writeln ! ( & mut f) ?;
513
517
addr_counter += 1 ;
@@ -517,7 +521,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
517
521
for addr in & self . addr_ts_bits_list {
518
522
writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
519
523
for assg in & addr. assignment {
520
- write ! ( & mut f, "{} " , bytes_to_integer( & assg . to_bytes( ) ) ) ?;
524
+ write ! ( & mut f, "{} " , bytes_to_integer( & to_bytes( * assg ) ) ) ?;
521
525
}
522
526
writeln ! ( & mut f) ?;
523
527
addr_counter += 1 ;
@@ -850,7 +854,7 @@ fn get_compile_time_knowledge<const VERBOSE: bool>(
850
854
// --
851
855
// Generate witnesses and others
852
856
// --
853
- fn get_run_time_knowledge < const VERBOSE : bool , S : SpartanExtensionField + Send + Sync > (
857
+ fn get_run_time_knowledge < const VERBOSE : bool , E : ExtensionField + Send + Sync > (
854
858
path : PathBuf ,
855
859
options : & Options ,
856
860
entry_regs : Vec < Integer > ,
@@ -863,7 +867,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
863
867
prover_data_list : Vec < ProverData > ,
864
868
total_num_init_phy_mem_accesses : usize ,
865
869
total_num_init_vir_mem_accesses : usize ,
866
- ) -> RunTimeKnowledge < S > {
870
+ ) -> RunTimeKnowledge < E > {
867
871
let num_blocks = ctk. block_num_instances ;
868
872
let num_input_unpadded = ctk. num_inputs_unpadded ;
869
873
let io_width = 2 * num_input_unpadded;
@@ -1285,9 +1289,9 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
1285
1289
}
1286
1290
}
1287
1291
1288
- fn run_spartan_proof < S : SpartanExtensionField + Send + Sync > (
1292
+ fn run_spartan_proof < E : ExtensionField + Send + Sync > (
1289
1293
ctk : CompileTimeKnowledge ,
1290
- rtk : RunTimeKnowledge < S > ,
1294
+ rtk : RunTimeKnowledge < E > ,
1291
1295
) {
1292
1296
// --
1293
1297
// INSTANCE PREPROCESSING
@@ -1329,7 +1333,7 @@ fn run_spartan_proof<S: SpartanExtensionField + Send + Sync>(
1329
1333
& rtk. block_num_proofs ,
1330
1334
) ;
1331
1335
// block_inst is used by commitment. Every block has different number of variables
1332
- let ( _, _, _, block_inst_for_commit) = Instance :: < S > :: gen_block_inst :: < true , true > (
1336
+ let ( _, _, _, block_inst_for_commit) = Instance :: < E > :: gen_block_inst :: < true , true > (
1333
1337
block_num_instances_bound,
1334
1338
num_vars,
1335
1339
& ctk. args ,
@@ -1600,7 +1604,7 @@ fn main() {
1600
1604
// --
1601
1605
// Generate Witnesses
1602
1606
// --
1603
- let rtk = get_run_time_knowledge :: < false , ScalarExt2 > (
1607
+ let rtk = get_run_time_knowledge :: < false , GoldilocksExt2 > (
1604
1608
path. clone ( ) ,
1605
1609
& options,
1606
1610
entry_regs,
@@ -1634,4 +1638,4 @@ fn main() {
1634
1638
1635
1639
println ! ( "Compiler time: {}ms" , compiler_time. as_millis( ) ) ;
1636
1640
println ! ( "\n --\n Witness time: {}ms" , witness_time. as_millis( ) ) ;
1637
- }
1641
+ }
0 commit comments