* All tests pass under circom-2 feature flag
- Check for version in WASM, default to version 1
- Include Circom1 when Circom 2 feature flag is enabled
Currently a lot of code duplication. Once Circom-2 is more stable and
proven to work in the wild, feature flag can be removed.
* Separate Circom 1 and Circom2 witness calculation
* Cleanup
* WitnessCalculator helpers for Circom 1 and 2
Also make helper fn private
* Move comment
* Fix expression return
* cargo fmt
* Add cargo test circom-2 to ci
* Early exit in error callback from Wasm
This avoids Wasm execution hanging due to problems such as wrong public
input.
Mimics circom_runtime behaviour with less detailed debug information.
See https://github.com/iden3/circom_runtime/blob/master/js/witness_calculator.js#L52-L64
Adds test for wrong public input. Without early exit, the test stalls.
With it, the Circom build step fails as expected.
* chore: clean up error handling
* ci: add caching
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* feat: add function for calculating the coefficients
* fix tests / debug coeffs
* feat: use groth16 with configurable matrices
* test: add no r1cs test
* test: add a test to check matrices values
* scaffold of the matrix calculation
* feat: correctly load and use matrices in the without_r1cs variant
* chore: cargo fmt
* chore: cargo fmt / lints
* ci: do not double run tests
* fix: calculate correctly points at inf
* test: use correct abicoder v2 types
Co-authored-by: Kobi Gurkan <kobigurk@gmail.com>