Skip to content

Commit a9a2ad6

Browse files
committed
fmt
1 parent eec2c75 commit a9a2ad6

File tree

15 files changed

+2763
-1543
lines changed

15 files changed

+2763
-1543
lines changed

spartan_parallel/examples/interface.rs

Lines changed: 92 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
//! Reads in constraints and inputs from zok_tests/constraints and zok_tests/inputs
22
//! Used as a temporary interface to / from CirC
33
#![allow(clippy::assertions_on_result_states)]
4-
use std::{fs::File, io::BufReader};
54
use std::io::{BufRead, Read};
65
use std::{default, env};
6+
use std::{fs::File, io::BufReader};
77

88
use libspartan::scalar::{Scalar, SpartanExtensionField};
9-
use libspartan::{
10-
instance::Instance,
11-
VarsAssignment, SNARK, InputsAssignment, MemsAssignment
12-
};
9+
use libspartan::{instance::Instance, InputsAssignment, MemsAssignment, VarsAssignment, SNARK};
1310
use merlin::Transcript;
11+
use serde::{Deserialize, Serialize};
1412
use std::time::*;
15-
use serde::{Serialize, Deserialize};
1613

1714
const TOTAL_NUM_VARS_BOUND: usize = 10000000;
1815

@@ -27,14 +24,20 @@ struct CompileTimeKnowledge {
2724
block_num_vir_ops: Vec<usize>,
2825
max_ts_width: usize,
2926

30-
args: Vec<Vec<(Vec<(usize, [u8; 32])>, Vec<(usize, [u8; 32])>, Vec<(usize, [u8; 32])>)>>,
27+
args: Vec<
28+
Vec<(
29+
Vec<(usize, [u8; 32])>,
30+
Vec<(usize, [u8; 32])>,
31+
Vec<(usize, [u8; 32])>,
32+
)>,
33+
>,
3134

3235
input_liveness: Vec<bool>,
3336
func_input_width: usize,
3437
input_offset: usize,
3538
input_block_num: usize,
3639
output_offset: usize,
37-
output_block_num: usize
40+
output_block_num: usize,
3841
}
3942

4043
impl CompileTimeKnowledge {
@@ -45,7 +48,7 @@ impl CompileTimeKnowledge {
4548
f.read_to_end(&mut content).unwrap();
4649
bincode::deserialize(&content).unwrap()
4750
}
48-
51+
4952
/* Archived & Outdated
5053
fn read_from_file(benchmark_name: String) -> std::io::Result<CompileTimeKnowledge> {
5154
let file_name = format!("../zok_tests/constraints/{}.ctk", benchmark_name);
@@ -183,7 +186,7 @@ struct RunTimeKnowledge<S: SpartanExtensionField> {
183186
input_stack: Vec<[u8; 32]>,
184187
input_mem: Vec<[u8; 32]>,
185188
output: [u8; 32],
186-
output_exec_num: usize
189+
output_exec_num: usize,
187190
}
188191

189192
impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKnowledge<S> {
@@ -222,7 +225,7 @@ impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKno
222225
let total_num_vir_mem_accesses = buffer.trim().parse::<usize>().unwrap();
223226
(block_max_num_proofs, block_num_proofs, consis_num_proofs, total_num_init_mem_accesses, total_num_phy_mem_accesses, total_num_vir_mem_accesses)
224227
};
225-
228+
226229
let block_vars_matrix: Vec<Vec<VarsAssignment>> = {
227230
let mut block_vars_matrix = vec![Vec::new()];
228231
buffer.clear();
@@ -282,7 +285,7 @@ impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKno
282285
let mut init_mems_list = vec![Vec::new()];
283286
buffer.clear();
284287
reader.read_line(&mut buffer)?;
285-
288+
286289
let mut access_counter = 0;
287290
while buffer != "ADDR_PHY_MEMS\n".to_string() {
288291
if buffer == format!("ACCESS {}\n", access_counter + 1) {
@@ -302,7 +305,7 @@ impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKno
302305
let mut addr_phy_mems_list = vec![Vec::new()];
303306
buffer.clear();
304307
reader.read_line(&mut buffer)?;
305-
308+
306309
let mut access_counter = 0;
307310
while buffer != "ADDR_VIR_MEMS\n".to_string() {
308311
if buffer == format!("ACCESS {}\n", access_counter + 1) {
@@ -322,7 +325,7 @@ impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKno
322325
let mut addr_vir_mems_list = vec![Vec::new()];
323326
buffer.clear();
324327
reader.read_line(&mut buffer)?;
325-
328+
326329
let mut access_counter = 0;
327330
while buffer != "ADDR_VM_BITS\n".to_string() {
328331
if buffer == format!("ACCESS {}\n", access_counter + 1) {
@@ -342,7 +345,7 @@ impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKno
342345
let mut addr_ts_bits_list = vec![Vec::new()];
343346
buffer.clear();
344347
reader.read_line(&mut buffer)?;
345-
348+
346349
let mut access_counter = 0;
347350
while buffer != "INPUTS\n".to_string() {
348351
if buffer == format!("ACCESS {}\n", access_counter + 1) {
@@ -405,14 +408,14 @@ impl<S: SpartanExtensionField + for<'de> serde::de::Deserialize<'de>> RunTimeKno
405408
total_num_init_mem_accesses,
406409
total_num_phy_mem_accesses,
407410
total_num_vir_mem_accesses,
408-
411+
409412
block_vars_matrix,
410413
exec_inputs,
411414
init_mems_list,
412415
addr_phy_mems_list,
413416
addr_vir_mems_list,
414417
addr_ts_bits_list,
415-
418+
416419
input: func_inputs,
417420
input_mem,
418421
output: func_outputs[0],
@@ -427,7 +430,8 @@ fn main() {
427430
// let ctk = CompileTimeKnowledge::read_from_file(benchmark_name.to_string()).unwrap();
428431
let ctk = CompileTimeKnowledge::deserialize_from_file(benchmark_name.to_string());
429432
// let rtk = RunTimeKnowledge::read_from_file(benchmark_name.to_string()).unwrap();
430-
let rtk: RunTimeKnowledge<Scalar> = RunTimeKnowledge::deserialize_from_file(benchmark_name.to_string());
433+
let rtk: RunTimeKnowledge<Scalar> =
434+
RunTimeKnowledge::deserialize_from_file(benchmark_name.to_string());
431435

432436
// --
433437
// INSTANCE PREPROCESSING
@@ -456,22 +460,28 @@ fn main() {
456460
println!("Generating Circuits...");
457461
// --
458462
// BLOCK INSTANCES
459-
let (block_num_vars, block_num_cons, block_num_non_zero_entries, mut block_inst) = Instance::gen_block_inst::<true>(
460-
block_num_instances_bound,
461-
num_vars,
462-
&ctk.args,
463-
num_inputs_unpadded,
464-
&block_num_phy_ops,
465-
&block_num_vir_ops,
466-
&ctk.num_vars_per_block,
467-
&rtk.block_num_proofs,
468-
);
463+
let (block_num_vars, block_num_cons, block_num_non_zero_entries, mut block_inst) =
464+
Instance::gen_block_inst::<true>(
465+
block_num_instances_bound,
466+
num_vars,
467+
&ctk.args,
468+
num_inputs_unpadded,
469+
&block_num_phy_ops,
470+
&block_num_vir_ops,
471+
&ctk.num_vars_per_block,
472+
&rtk.block_num_proofs,
473+
);
469474
println!("Finished Block");
470475

471476
// Pairwise INSTANCES
472477
// CONSIS_CHECK & PHY_MEM_COHERE
473-
let (pairwise_check_num_vars, pairwise_check_num_cons, pairwise_check_num_non_zero_entries, mut pairwise_check_inst) = Instance::gen_pairwise_check_inst::<true>(
474-
ctk.max_ts_width,
478+
let (
479+
pairwise_check_num_vars,
480+
pairwise_check_num_cons,
481+
pairwise_check_num_non_zero_entries,
482+
mut pairwise_check_inst,
483+
) = Instance::gen_pairwise_check_inst::<true>(
484+
ctk.max_ts_width,
475485
mem_addr_ts_bits_size,
476486
rtk.consis_num_proofs,
477487
rtk.total_num_phy_mem_accesses,
@@ -481,32 +491,30 @@ fn main() {
481491

482492
// PERM INSTANCES
483493
// PERM_ROOT
484-
let (perm_root_num_cons, perm_root_num_non_zero_entries, perm_root_inst) = Instance::gen_perm_root_inst::<true>(
485-
num_inputs_unpadded,
486-
num_ios,
487-
rtk.consis_num_proofs,
488-
rtk.total_num_phy_mem_accesses,
489-
rtk.total_num_vir_mem_accesses,
490-
);
494+
let (perm_root_num_cons, perm_root_num_non_zero_entries, perm_root_inst) =
495+
Instance::gen_perm_root_inst::<true>(
496+
num_inputs_unpadded,
497+
num_ios,
498+
rtk.consis_num_proofs,
499+
rtk.total_num_phy_mem_accesses,
500+
rtk.total_num_vir_mem_accesses,
501+
);
491502
println!("Finished Perm");
492503

493504
// --
494505
// COMMITMENT PREPROCESSING
495506
// --
496507
println!("Producing Public Parameters...");
497-
508+
498509
// create a commitment to the R1CS instance
499510
println!("Comitting Circuits...");
500511
// block_comm_map records the sparse_polys committed in each commitment
501512
// Note that A, B, C are committed separately, so sparse_poly[3*i+2] corresponds to poly C of instance i
502-
let (block_comm_map, block_comm_list, block_decomm_list) =
503-
SNARK::multi_encode(&block_inst);
513+
let (block_comm_map, block_comm_list, block_decomm_list) = SNARK::multi_encode(&block_inst);
504514
println!("Finished Block");
505-
let (pairwise_check_comm, pairwise_check_decomm) =
506-
SNARK::encode(&pairwise_check_inst);
515+
let (pairwise_check_comm, pairwise_check_decomm) = SNARK::encode(&pairwise_check_inst);
507516
println!("Finished Pairwise");
508-
let (perm_root_comm, perm_root_decomm) =
509-
SNARK::encode(&perm_root_inst);
517+
let (perm_root_comm, perm_root_decomm) = SNARK::encode(&perm_root_inst);
510518
println!("Finished Perm");
511519

512520
// --
@@ -533,7 +541,6 @@ fn main() {
533541
&rtk.input,
534542
&rtk.output,
535543
rtk.output_exec_num,
536-
537544
num_vars,
538545
num_ios,
539546
max_block_num_phy_ops,
@@ -543,15 +550,13 @@ fn main() {
543550
mem_addr_ts_bits_size,
544551
num_inputs_unpadded,
545552
&ctk.num_vars_per_block,
546-
547553
block_num_instances_bound,
548554
rtk.block_max_num_proofs,
549555
&block_num_proofs,
550556
&mut block_inst,
551557
&block_comm_map,
552558
&block_comm_list,
553559
&block_decomm_list,
554-
555560
rtk.consis_num_proofs,
556561
rtk.total_num_init_phy_mem_accesses,
557562
rtk.total_num_init_vir_mem_accesses,
@@ -560,67 +565,61 @@ fn main() {
560565
&mut pairwise_check_inst,
561566
&pairwise_check_comm,
562567
&pairwise_check_decomm,
563-
564568
block_vars_matrix,
565569
rtk.exec_inputs,
566570
rtk.init_phy_mems_list,
567571
rtk.init_vir_mems_list,
568572
rtk.addr_phy_mems_list,
569573
rtk.addr_vir_mems_list,
570574
rtk.addr_ts_bits_list,
571-
572575
&perm_root_inst,
573576
&perm_root_comm,
574577
&perm_root_decomm,
575-
576578
&mut prover_transcript,
577579
);
578580

579581
println!("Verifying the proof...");
580582
// verify the proof of satisfiability
581583
let mut verifier_transcript = Transcript::new(b"snark_example");
582-
assert!(proof.verify(
583-
ctk.input_block_num,
584-
ctk.output_block_num,
585-
&ctk.input_liveness,
586-
ctk.func_input_width,
587-
ctk.input_offset,
588-
ctk.output_offset,
589-
&rtk.input,
590-
&rtk.input_stack,
591-
&rtk.input_mem,
592-
&rtk.output,
593-
rtk.output_exec_num,
594-
595-
num_vars,
596-
num_ios,
597-
max_block_num_phy_ops,
598-
&block_num_phy_ops,
599-
max_block_num_vir_ops,
600-
&block_num_vir_ops,
601-
mem_addr_ts_bits_size,
602-
num_inputs_unpadded,
603-
&ctk.num_vars_per_block,
604-
605-
block_num_instances_bound,
606-
rtk.block_max_num_proofs,
607-
&block_num_proofs,
608-
block_num_cons,
609-
&block_comm_map,
610-
&block_comm_list,
611-
612-
rtk.consis_num_proofs,
613-
rtk.total_num_init_phy_mem_accesses,
614-
rtk.total_num_init_vir_mem_accesses,
615-
rtk.total_num_phy_mem_accesses,
616-
rtk.total_num_vir_mem_accesses,
617-
pairwise_check_num_cons,
618-
&pairwise_check_comm,
619-
620-
perm_root_num_cons,
621-
&perm_root_comm,
622-
623-
&mut verifier_transcript
624-
).is_ok());
584+
assert!(proof
585+
.verify(
586+
ctk.input_block_num,
587+
ctk.output_block_num,
588+
&ctk.input_liveness,
589+
ctk.func_input_width,
590+
ctk.input_offset,
591+
ctk.output_offset,
592+
&rtk.input,
593+
&rtk.input_stack,
594+
&rtk.input_mem,
595+
&rtk.output,
596+
rtk.output_exec_num,
597+
num_vars,
598+
num_ios,
599+
max_block_num_phy_ops,
600+
&block_num_phy_ops,
601+
max_block_num_vir_ops,
602+
&block_num_vir_ops,
603+
mem_addr_ts_bits_size,
604+
num_inputs_unpadded,
605+
&ctk.num_vars_per_block,
606+
block_num_instances_bound,
607+
rtk.block_max_num_proofs,
608+
&block_num_proofs,
609+
block_num_cons,
610+
&block_comm_map,
611+
&block_comm_list,
612+
rtk.consis_num_proofs,
613+
rtk.total_num_init_phy_mem_accesses,
614+
rtk.total_num_init_vir_mem_accesses,
615+
rtk.total_num_phy_mem_accesses,
616+
rtk.total_num_vir_mem_accesses,
617+
pairwise_check_num_cons,
618+
&pairwise_check_comm,
619+
perm_root_num_cons,
620+
&perm_root_comm,
621+
&mut verifier_transcript
622+
)
623+
.is_ok());
625624
println!("proof verification successful!");
626625
}

0 commit comments

Comments
 (0)