mirror of
https://github.com/arnaucube/testudo.git
synced 2026-01-12 08:41:29 +01:00
Arbitrary number of variables and contraints (#34)
* This commit makes adding an arbitrary number of variables and inputs possible and removes the
implementation leaking to the interface for
num_inps + 1 <= num_vars, num_vars: a power of 2, num_cons: a power of 2, but not 1.
1. When creating a new R1CS Instance throught the public interface,
it is required # constraints and # of vars be a power of 2. I remove
that requirement by padding with dummy constraints and vars until the nearest
power of 2.
2. The sumcheck protocol in src/sumcheck.rs does not work for 1 constraint, even
though 1 is a power of 2. I have to pad to a minimum of two constraints.
3. Added a test in src/r1csproof.rs called test_padded_constraints.
* Move test to src/lib.rs
* Remove padding metadata
* remove unused use
* Simplify padding to power of 2
* run cargo fmt
* Fix indexing bug
* Rayon is optional, depending on 'multicore' feature
* Update rust toolchain
* cargo fmt
* cleaner to track num_vars_padded and num_cons_padded
* cleanup
* further cleanup
* Cleanup & comments
* small fixes
* adjust code for padding constraints
* fix a bug with pad call
* add comment about num_nz_entries
* extend padding to NIZK methods
extend padding to NIZK methods
Co-authored-by: Lef Ioannidis <elefthei@seas.upenn.edu>
Co-authored-by: Srinath Setty <srinath@microsoft.com>
This commit is contained in:
@@ -27,7 +27,7 @@ pub fn main() {
|
||||
let (inst, vars, inputs) = Instance::produce_synthetic_r1cs(num_cons, num_vars, num_inputs);
|
||||
|
||||
// produce public generators
|
||||
let gens = NIZKGens::new(num_cons, num_vars);
|
||||
let gens = NIZKGens::new(num_cons, num_vars, num_inputs);
|
||||
|
||||
// produce a proof of satisfiability
|
||||
let mut prover_transcript = Transcript::new(b"nizk_example");
|
||||
|
||||
Reference in New Issue
Block a user