* first version of the sqrt PST without the MIPP
* snarkpack integration
* snarkpack integration
* adding mipp as submodule directly
* snarkpack integration
* finalizing
* snarkpack integration
* update mipp with latestest optimisations and add preliminary
documentation
* improve codebase documentation
* remove unused imports and apply cargo fix changes
* passing v0.4
* adding gh action
* correct workflow item
* correct working dir and msrv
* remove unnecessary stuff
* wip
* wip
* remove circuit in fq as it's not needed now
* done for tonight
* wip
* wip
* sip
* prallelise commitment and groth16 verification
* finalise comments for mipp
* wip
* finalise comments
* wip
* compiling but test failing
* putting back non random blinds
* using absorb when we can
* absorbing scalar
* with bls12-381
* stuff
* trying to bring ark-blst to testudo
* correcting random implementation
* with square in place
* works with blst
* works with blst
* fix: don't require nightly Rust
With removing the `test` feature, it can also be built with a stable
Rust release and don't require a nightly Rust version.
* using ark-blst main branch
* started cleanup and added testudo benchmark
* add testudo snark and nizk in separate files
* rename functions that perform setups and add comments
* prototyping
* explain testudo-nizk
* add support for odd case in sqrt_pst
* add missing constraints and correct proof size for benchmarks
* add support for odd case in sqrt_pst
* fix typo in comment
* Documentation #31
* fix typo in comment
* Fix Cargo.toml and add benchmark for sqrt pst (#34)
* add benchmark for sqrt pst
* fix typo in comment
* add README
* comment from readme not executing
---------
Co-authored-by: Mara Mihali <maramihali@google.com>
Co-authored-by: Mara Mihali <mihalimara22@gmail.com>
Co-authored-by: Volker Mische <volker.mische@gmail.com>
* 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:
- introduces a small [thiserror](https://github.com/dtolnay/thiserror)-powered enum to improve ProofVerifyError's messages,
- refactors point decompression errors into a variant of that enum, thereby suppressing the panics which occur when decompresison fails.
- folds other panics into the Error cases of their enclosing `Result` return