Commit Graph

20 Commits

Author SHA1 Message Date
oskarth 64e0ee9546
Initial Circom 2 support (#10)
* Import circom-2 test vectors

* Add failing test under feature flag

* Add exceptionHandler

* Add showSharedRWMemory

* Add getFieldNumLen32 and disable getFrLen

* Add getVersion

Also print version, n32

* Add getRawPrime

- Disable getPtrRawPrime
- Write as conditional cfg code blocks

* Refactor cfg code blocks

* Add readSharedRWMemory and get prime from WASM mem

- Add fromArray32 convenience function

* WIP: Debug R1CSfile header

field_size in header is 1, not 32 as expected

Don't see anything recently changed here:
https://github.com/iden3/r1csfile/blob/master/src/r1csfile.js (used by snarkjs)

But this seems new: 0149dc0643/constraint_writers/src/r1cs_writer.rs

* Add CircomVersion struct to Wasm

* XXX: Enum test

* Trait version

* Move traits to Circom, CircomBase, Circom2

* Simplify Wasm struct and remove version

* Feature gate Circom1/Circom2 traits

* Use cfg_if for witness calculation

Make normal dependency

* Fix visibilty for both test paths

* Remove println

Can introduce tracing separately

* refactor

* Make clippy happy with imports, unused variables
2021-11-29 10:02:46 +02:00
oskarth b1daefca96
Early exit in error callback from Wasm (#9)
* 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>
2021-11-18 12:03:37 +02:00
Georgios Konstantopoulos bb0f5429fc
feat: benchmarks (#3)
* add benchmark

* chore: add complex circuit

* feat: enable parallel / asm

* bench: use pre-calculated matrices/constraints

* chore: bump ethers-rs

* chore: fmt

* feat: add benches for differently sized circuits (#6)

* feat: update bench circuit

* feat: add benches for many sizes

* fix: adjust bench parameters

* fix: remove sym

* chore: fmt

* fix: point to correct commit of groth16

* fix: update function names to upstream

* fix: update function names to upstream

Co-authored-by: Kobi Gurkan <kobigurk@gmail.com>
2021-09-08 21:52:17 +03:00
Georgios Konstantopoulos 11e6d04f3b
Feat: Use pre-calculated ConstraintMatrices (#2)
* 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>
2021-08-17 14:45:13 +03:00
Georgios Konstantopoulos 4e2c2d39dd chore: cargo fmt 2021-08-13 12:47:30 +03:00
Georgios Konstantopoulos 0dd126bbd8 fix: use correct fn prover name in tests 2021-08-13 12:45:49 +03:00
Georgios Konstantopoulos a85b99e0db perf: enable parallel on ark packages 2021-08-13 12:40:23 +03:00
Georgios Konstantopoulos 3c11c94d63 perf: enable asm on ark-ff 2021-08-13 12:39:06 +03:00
Georgios Konstantopoulos f316f6a9fa chore: use latest upstream gro16 2021-08-13 12:37:09 +03:00
Georgios Konstantopoulos 293314f2ef chore: cargo fmt 2021-08-11 23:46:07 +03:00
Georgios Konstantopoulos 29de734540 feat: add deserialize_field2 function 2021-08-11 23:45:50 +03:00
Georgios Konstantopoulos cf225249ae chore: expose Proof a/b/c 2021-08-11 03:22:18 +03:00
Georgios Konstantopoulos de9af5b9e6 fix: negate negative witness elements 2021-08-11 03:22:18 +03:00
Georgios Konstantopoulos c32270a285 fix: use latest names for groth16 traits/types 2021-08-10 18:09:32 +03:00
Georgios Konstantopoulos c03ae8490f chore: trim deps 2021-07-26 18:13:46 +03:00
Georgios Konstantopoulos be99d3a1fd docs: add readme 2021-07-26 18:01:22 +03:00
Georgios Konstantopoulos 72c533ac62 refactor: rename circuit -> circom 2021-07-26 17:54:04 +03:00
Georgios Konstantopoulos 29a7555c08 zkey: expose only 1 method - everything else private 2021-07-26 17:38:29 +03:00
Georgios Konstantopoulos 8ff7f3cd1b refactor: rename circom_wasm to witness 2021-07-26 17:32:18 +03:00
Georgios Konstantopoulos b64f038283 initial commit 2021-07-26 17:04:43 +03:00