@@ -13,7 +13,12 @@ use circ::target::r1cs::wit_comp::StagedWitCompEvaluator;
1313use circ:: target:: r1cs:: ProverData ;
1414use circ:: target:: r1cs:: { Lc , VarType } ;
1515use 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 ;
1722use rug:: Integer ;
1823
1924use std:: fs:: { create_dir_all, File } ;
@@ -31,7 +36,6 @@ use std::path::PathBuf;
3136use libspartan:: {
3237 instance:: Instance , Assignment , InputsAssignment , MemsAssignment , VarsAssignment , SNARK ,
3338} ;
34- use merlin:: Transcript ;
3539use serde:: { Deserialize , Serialize } ;
3640use std:: time:: * ;
3741
@@ -361,7 +365,7 @@ impl CompileTimeKnowledge {
361365}
362366
363367#[ derive( Serialize , Deserialize ) ]
364- struct RunTimeKnowledge < S : SpartanExtensionField + Send + Sync > {
368+ struct RunTimeKnowledge < E : ExtensionField + Send + Sync > {
365369 block_max_num_proofs : usize ,
366370 block_num_proofs : Vec < usize > ,
367371 consis_num_proofs : usize ,
@@ -370,14 +374,14 @@ struct RunTimeKnowledge<S: SpartanExtensionField + Send + Sync> {
370374 total_num_phy_mem_accesses : usize ,
371375 total_num_vir_mem_accesses : usize ,
372376
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 > > ,
375379 // 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 > > ,
381385
382386 input : Vec < [ u8 ; 32 ] > ,
383387 input_stack : Vec < [ u8 ; 32 ] > ,
@@ -386,7 +390,7 @@ struct RunTimeKnowledge<S: SpartanExtensionField + Send + Sync> {
386390 output_exec_num : usize ,
387391}
388392
389- impl < S : SpartanExtensionField + Send + Sync > RunTimeKnowledge < S > {
393+ impl < E : ExtensionField + Send + Sync > RunTimeKnowledge < E > {
390394 fn serialize_to_file (
391395 & self ,
392396 benchmark_name : String ,
@@ -455,7 +459,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
455459 for exec in block {
456460 writeln ! ( & mut f, "EXEC {}" , exec_counter) ?;
457461 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 ) ) ) ?;
459463 }
460464 writeln ! ( & mut f) ?;
461465 exec_counter += 1 ;
@@ -467,7 +471,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
467471 for exec in & self . exec_inputs {
468472 writeln ! ( & mut f, "EXEC {}" , exec_counter) ?;
469473 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 ) ) ) ?;
471475 }
472476 writeln ! ( & mut f) ?;
473477 exec_counter += 1 ;
@@ -477,7 +481,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
477481 for addr in & self . init_phy_mems_list {
478482 writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
479483 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 ) ) ) ?;
481485 }
482486 writeln ! ( & mut f) ?;
483487 addr_counter += 1 ;
@@ -487,7 +491,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
487491 for addr in & self . init_vir_mems_list {
488492 writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
489493 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 ) ) ) ?;
491495 }
492496 writeln ! ( & mut f) ?;
493497 addr_counter += 1 ;
@@ -497,7 +501,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
497501 for addr in & self . addr_phy_mems_list {
498502 writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
499503 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 ) ) ) ?;
501505 }
502506 writeln ! ( & mut f) ?;
503507 addr_counter += 1 ;
@@ -507,7 +511,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
507511 for addr in & self . addr_vir_mems_list {
508512 writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
509513 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 ) ) ) ?;
511515 }
512516 writeln ! ( & mut f) ?;
513517 addr_counter += 1 ;
@@ -517,7 +521,7 @@ impl<S: SpartanExtensionField + Send + Sync> RunTimeKnowledge<S> {
517521 for addr in & self . addr_ts_bits_list {
518522 writeln ! ( & mut f, "ACCESS {}" , addr_counter) ?;
519523 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 ) ) ) ?;
521525 }
522526 writeln ! ( & mut f) ?;
523527 addr_counter += 1 ;
@@ -850,7 +854,7 @@ fn get_compile_time_knowledge<const VERBOSE: bool>(
850854// --
851855// Generate witnesses and others
852856// --
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 > (
854858 path : PathBuf ,
855859 options : & Options ,
856860 entry_regs : Vec < Integer > ,
@@ -863,7 +867,7 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
863867 prover_data_list : Vec < ProverData > ,
864868 total_num_init_phy_mem_accesses : usize ,
865869 total_num_init_vir_mem_accesses : usize ,
866- ) -> RunTimeKnowledge < S > {
870+ ) -> RunTimeKnowledge < E > {
867871 let num_blocks = ctk. block_num_instances ;
868872 let num_input_unpadded = ctk. num_inputs_unpadded ;
869873 let io_width = 2 * num_input_unpadded;
@@ -1285,9 +1289,9 @@ fn get_run_time_knowledge<const VERBOSE: bool, S: SpartanExtensionField + Send +
12851289 }
12861290}
12871291
1288- fn run_spartan_proof < S : SpartanExtensionField + Send + Sync > (
1292+ fn run_spartan_proof < E : ExtensionField + Send + Sync > (
12891293 ctk : CompileTimeKnowledge ,
1290- rtk : RunTimeKnowledge < S > ,
1294+ rtk : RunTimeKnowledge < E > ,
12911295) {
12921296 // --
12931297 // INSTANCE PREPROCESSING
@@ -1329,7 +1333,7 @@ fn run_spartan_proof<S: SpartanExtensionField + Send + Sync>(
13291333 & rtk. block_num_proofs ,
13301334 ) ;
13311335 // 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 > (
13331337 block_num_instances_bound,
13341338 num_vars,
13351339 & ctk. args ,
@@ -1600,7 +1604,7 @@ fn main() {
16001604 // --
16011605 // Generate Witnesses
16021606 // --
1603- let rtk = get_run_time_knowledge :: < false , ScalarExt2 > (
1607+ let rtk = get_run_time_knowledge :: < false , GoldilocksExt2 > (
16041608 path. clone ( ) ,
16051609 & options,
16061610 entry_regs,
0 commit comments