Skip to content

Commit

Permalink
Merge with main
Browse files Browse the repository at this point in the history
  • Loading branch information
Kunming Jiang committed Jan 24, 2025
2 parents e9b4147 + b7a4e64 commit a009b53
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 30 deletions.
1 change: 1 addition & 0 deletions circ_blocks/examples/zxc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ use libspartan::{
use merlin::Transcript;
use serde::{Deserialize, Serialize};
use std::time::*;
use std::time::*;

// How many reserved variables (EXCLUDING V) are in front of the actual input / output?
// %BN, %RET, %TS, %AS, %SP, %BP
Expand Down
65 changes: 36 additions & 29 deletions spartan_parallel/src/r1csproof.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
}
let mut ry_factors = vec![ONE; num_rounds_y + 1];
for i in 0..num_rounds_y {
ry_factors[i + 1] = ry_factors[i] * (ONE - ry[i]);
ry_factors[i + 1] = ry_factors[i] * (S::field_one() - ry[i]);
}

let mut poly_list = Vec::new();
Expand Down Expand Up @@ -438,6 +438,13 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
// So we need to multiply each entry by (1 - rq0)(1 - rq1)
let mut eval_vars_comb_list = Vec::new();
for p in 0..num_instances {
let _wit_sec_p = |i: usize| {
if witness_secs[i].w_mat.len() == 1 {
0
} else {
p
}
};
let wit_sec_p = |i: usize| {
if witness_secs[i].w_mat.len() == 1 {
0
Expand All @@ -448,28 +455,28 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
let e = |i: usize| eval_vars_at_ry_list[i][wit_sec_p(i)];
let prefix_list = match num_witness_secs.next_power_of_two() {
1 => {
vec![ONE]
vec![S::field_one()]
}
2 => {
vec![(ONE - rw[0]), rw[0]]
vec![(S::field_one() - rw[0]), rw[0]]
}
4 => {
vec![
(ONE - rw[0]) * (ONE - rw[1]),
(ONE - rw[0]) * rw[1],
rw[0] * (ONE - rw[1]),
(S::field_one() - rw[0]) * (S::field_one() - rw[1]),
(S::field_one() - rw[0]) * rw[1],
rw[0] * (S::field_one() - rw[1]),
rw[0] * rw[1],
]
}
8 => {
vec![
(ONE - rw[0]) * (ONE - rw[1]) * (ONE - rw[2]),
(ONE - rw[0]) * (ONE - rw[1]) * rw[2],
(ONE - rw[0]) * rw[1] * (ONE - rw[2]),
(ONE - rw[0]) * rw[1] * rw[2],
rw[0] * (ONE - rw[1]) * (ONE - rw[2]),
rw[0] * (ONE - rw[1]) * rw[2],
rw[0] * rw[1] * (ONE - rw[2]),
(S::field_one() - rw[0]) * (S::field_one() - rw[1]) * (S::field_one() - rw[2]),
(S::field_one() - rw[0]) * (S::field_one() - rw[1]) * rw[2],
(S::field_one() - rw[0]) * rw[1] * (S::field_one() - rw[2]),
(S::field_one() - rw[0]) * rw[1] * rw[2],
rw[0] * (S::field_one() - rw[1]) * (S::field_one() - rw[2]),
rw[0] * (S::field_one() - rw[1]) * rw[2],
rw[0] * rw[1] * (S::field_one() - rw[2]),
rw[0] * rw[1] * rw[2],
]
}
Expand Down Expand Up @@ -507,7 +514,7 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
&self,
num_instances: usize,
max_num_proofs: usize,
num_proofs: &Vec<usize>,
_num_proofs: &Vec<usize>,
max_num_inputs: usize,

// NUM_WITNESS_SECS
Expand Down Expand Up @@ -619,9 +626,9 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
// First by witness & by instance on ry
// For every possible wit_sec.num_inputs, compute ry_factor = prodX(1 - ryX)...
// If there are 2 witness secs, then ry_factors[0] = 1, ry_factors[1] = 1, ry_factors[2] = 1 - ry1, ry_factors[3] = (1 - ry1)(1 - ry2), etc.
let mut ry_factors = vec![ONE; num_rounds_y + 1];
let mut ry_factors = vec![S::field_one(); num_rounds_y + 1];
for i in 0..num_rounds_y {
ry_factors[i + 1] = (ry_factors[i]) * (ONE - ry[i]);
ry_factors[i + 1] = (ry_factors[i]) * (S::field_one() - ry[i]);
}

// POLY COMMIT
Expand Down Expand Up @@ -658,7 +665,7 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
// Then on rp
let mut expected_eval_vars_list = Vec::new();
for p in 0..num_instances {
let wit_sec_p = |i: usize| {
let _wit_sec_p = |i: usize| {
if witness_secs[i].num_proofs.len() == 1 {
0
} else {
Expand All @@ -675,28 +682,28 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSProof<S> {
};
let prefix_list = match num_witness_secs.next_power_of_two() {
1 => {
vec![ONE]
vec![S::field_one()]
}
2 => {
vec![(ONE - rw[0]), rw[0]]
vec![(S::field_one() - rw[0]), rw[0]]
}
4 => {
vec![
(ONE - rw[0]) * (ONE - rw[1]),
(ONE - rw[0]) * rw[1],
rw[0] * (ONE - rw[1]),
(S::field_one() - rw[0]) * (S::field_one() - rw[1]),
(S::field_one() - rw[0]) * rw[1],
rw[0] * (S::field_one() - rw[1]),
rw[0] * rw[1],
]
}
8 => {
vec![
(ONE - rw[0]) * (ONE - rw[1]) * (ONE - rw[2]),
(ONE - rw[0]) * (ONE - rw[1]) * rw[2],
(ONE - rw[0]) * rw[1] * (ONE - rw[2]),
(ONE - rw[0]) * rw[1] * rw[2],
rw[0] * (ONE - rw[1]) * (ONE - rw[2]),
rw[0] * (ONE - rw[1]) * rw[2],
rw[0] * rw[1] * (ONE - rw[2]),
(S::field_one() - rw[0]) * (S::field_one() - rw[1]) * (S::field_one() - rw[2]),
(S::field_one() - rw[0]) * (S::field_one() - rw[1]) * rw[2],
(S::field_one() - rw[0]) * rw[1] * (S::field_one() - rw[2]),
(S::field_one() - rw[0]) * rw[1] * rw[2],
rw[0] * (S::field_one() - rw[1]) * (S::field_one() - rw[2]),
rw[0] * (S::field_one() - rw[1]) * rw[2],
rw[0] * rw[1] * (S::field_one() - rw[2]),
rw[0] * rw[1] * rw[2],
]
}
Expand Down
3 changes: 2 additions & 1 deletion spartan_parallel/src/sparse_mlpoly.rs
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,8 @@ impl<S: SpartanExtensionField> SparseMatPolynomial<S> {

for i in 0..self.M.len() {
let entry = &self.M[i];
M_evals[entry.col / max_num_cols][entry.col % max_num_cols] += rx[entry.row] * entry.val;
M_evals[entry.col / max_num_cols][entry.col % max_num_cols] =
M_evals[entry.col / max_num_cols][entry.col % max_num_cols] + rx[entry.row] * entry.val;
}
M_evals
}
Expand Down

0 comments on commit a009b53

Please sign in to comment.