diff --git a/kimchi/src/prover.rs b/kimchi/src/prover.rs index 089cca8438e..1973cbfe63c 100644 --- a/kimchi/src/prover.rs +++ b/kimchi/src/prover.rs @@ -1368,23 +1368,44 @@ where )); //~~ * add the combined table polynomial - let table_blinding = if lcs.runtime_selector.is_some() { - let runtime_comm = lookup_context.runtime_table_comm.as_ref().unwrap(); + let table_blinding = { let joint_combiner = lookup_context.joint_combiner.as_ref().unwrap(); - let unshifted = runtime_comm - .blinders - .unshifted - .iter() - .map(|blinding| *joint_combiner * blinding) - .collect(); + let mut t = G::ScalarField::zero(); + let mut acc = G::ScalarField::one(); + let table_width = index + .cs + .lookup_constraint_system + .as_ref() + .unwrap() + .configuration + .lookup_info + .max_joint_size; + for _i in 0..table_width { + t += acc; + // joint_combiner^i + acc *= joint_combiner; + } + if lcs.runtime_selector.is_some() { + let runtime_comm = lookup_context.runtime_table_comm.as_ref().unwrap(); + let unshifted = runtime_comm + .blinders + .unshifted + .iter() + .map(|blinding| t + *joint_combiner * blinding) + .collect(); - PolyComm { - unshifted, - shifted: None, + PolyComm { + unshifted, + shifted: None, + } + } else { + // FIXME: num_chunks + PolyComm { + unshifted: vec![t], + shifted: None, + } } - } else { - non_hiding(num_chunks) }; let joint_lookup_table = lookup_context.joint_lookup_table.as_ref().unwrap(); diff --git a/kimchi/src/verifier_index.rs b/kimchi/src/verifier_index.rs index 94f90929ef4..c92704705af 100644 --- a/kimchi/src/verifier_index.rs +++ b/kimchi/src/verifier_index.rs @@ -190,7 +190,7 @@ where lookup_table: cs .lookup_table8 .iter() - .map(|e| self.srs.commit_evaluations_non_hiding(domain, e)) + .map(|e| mask_fixed(self.srs.commit_evaluations_non_hiding(domain, e))) .collect(), table_ids: cs.table_ids8.as_ref().map(|table_ids8| { self.srs.commit_evaluations_non_hiding(domain, table_ids8)