Commit Graph

16 Commits

Author SHA1 Message Date
597ac27288 implement Nova's AugmentedFCircuit (#33)
* impl AugmentedFCircuit non-base case

* add multiple iterations to AugmentedFCircuit test

* implement base case on AugmentedFCircuit and test

* Update cmE of E=0-vec to work as zero point

Update cmE of E=0-vec to work as zero point instead of as cm(0-vec)

* patch r1cs-std dep to a cherry-picked version with the zero-scalar-mult fix

* refactor FCircuit to make it more suitable inside the AugmentedFCircuit
2023-10-30 08:02:19 +00:00
Y5
7656c6bd6c Circom wrapper's helper function (#26)
* r1cs_parser

* z vector calculation

* test function done

* improved

* Brushuped

* add comment

* Added description of test_circuit

* found mistake

* fixed cargo.toml

* Imported ark-circom as crate

* improved l in R1CS as the number of public I/O

* separate test functions into success/failure and unify variable to pub_io_len

* removed bn254 & abstracted to PrimeField, but still some work

* add comments and clean up code

* move ark-bn254 in dev-dependencies

* abstracted test function

* fixed github action's error

* cargo fmt

* remove convert_constraints_bigint_to_scalar function

* fixed n_cols

* fixed n_cols

* Add functionality to compile Circom files in tests

* Remove test_circuit.r1cs

* Introduce CircomFrontend trait and simplify with CircomWrapper struct

* deleted the CircomFrontend

* improved

* fixed clippy lint checks of github actions

* probably fixed github actions error by changing the github yaml

* fixed github yaml, fmt, and clippy

---------

Co-authored-by: Carlos Pérez <37264926+CPerezz@users.noreply.github.com>
2023-10-17 15:32:58 +00:00
422db752f9 impl hash committed instance gadget (#17) (#31)
together with the native impl compatible with the gadget one
2023-10-12 09:04:45 +00:00
ashWhiteHat
9a2a1fdd13 Refactor Matrix vectors and Logical operation (#28)
* Refactor Matrix vectors operation

* Refacotr NIFS logical operation
2023-10-10 11:48:33 +00:00
13e471aeaf add error handling to several pending methods (#30) 2023-10-04 13:43:24 +00:00
8256c27609 Port/hypernova multifolding (#10)
* Port HyperNova's multifolding from https://github.com/privacy-scaling-explorations/multifolding-poc adapting and refactoring some of its methods and structs.

Note: adapted mle.rs methods from dense to sparse repr.

Co-authored-by: George Kadianakis <desnacked@riseup.net>

* HyperNova: move CCS struct outside of LCCCS & CCCS

HyperNova nimfs: move CCS structure outside of LCCCS & CCCS, to avoid
carrying around the whole CCS and duplicating data when is not needed.

Also add feature flags for the folding schemes.

---------

Co-authored-by: George Kadianakis <desnacked@riseup.net>
2023-09-11 07:31:23 +00:00
ac913ab573 Add decider circuit RelaxedR1CS (#21)
- Add naive decider circuit `RelaxedR1CSGadget`, which in-circuit checks
  that the given z satisfies the given RelaxedR1CS instance
- Add method to relax the R1CS instance
- Add check_relation (for testing only) to R1CS & RelaxedR1CS
- Migrate from own SparseMatrix to use ark_relations::r1cs::Matrix
- Add frontend helper to use arkworks circuits
2023-09-07 17:21:30 +00:00
d9887af535 Implement Nova's NIFS.Verify circuits (with CycleFold) (#11)
* Implement Nova's NIFS.Verify circuits (with CycleFold)

- Add circuit for NIFS.Verify on the main curve to check the folded `u`
  & `x`
- Add circuit for NIFS.Verify on the CycleFold's auxiliary curve to
  check the folded `cm(E)` & `cm(W)`
- Add transcript.get_challenge_nbits
- Add tests for utils::vec.rs

* replace bls12-377 & bw6-761 by pallas & vesta curves (only affects tests)

We will use pallas & vesta curves (for tests only, the non-tests code
uses generics) for the logic that does not require pairings, and while
Grumpkin is not available
(https://github.com/privacy-scaling-explorations/folding-schemes/issues/12).

* update links to papers to markdown style
2023-09-05 15:17:59 +00:00
9ae046c4fc Implement CycleFold's EC RLC check circuit (#9) 2023-08-29 06:49:48 +00:00
b4a0b50618 Port Espresso's VirtualPoly, MLE and SumCheck (#8)
Port Espresso/hyperplonk's `virtualpolynomial`, `multilinearpolynomial`
and `sum_check` utils from
https://github.com/EspressoSystems/hyperplonk/tree/main
Each file contains the reference to the original file.

Porting it into a subdirectory `src/utils/espresso`, to have it
self-contained. In future iterations we might replace part of it but we
can keep focusing on the folding schemes part for now.
2023-08-29 06:49:43 +00:00
15e2886e61 Implement Nova's NIFS.P & NIFS.V (#7) 2023-08-23 13:07:33 +00:00
240b916ddf Add initial CCS mod: (#6)
- port initial CCS structure with methods from multifolding-poc
- add R1CS helper methods, which will be used in Nova impl
2023-08-23 08:22:25 +00:00
arnaucube
bc81fbea59 Add utils::vec & pedersen modules (#5)
- utils::vec module: port a mix of vec utils from nova-study, multifolding-poc and protogalaxy-poc repos
- pedersen.rs: Pedersen commitment module
- other:
  - update FoldingScheme trait interface: rm rng, update internal types naming as agreed in today's call
  - update Cargo.toml dev-dependencies imports, since bn254 - grumpkin is not ready yet, use bls12-377 - bw6-761 curve cycle
  - transcript module: add absorb_point method
2023-08-22 12:48:10 +00:00
Han
77a0c8e6e3 feat: port CI from halo2curves (#4) 2023-08-17 11:10:25 +00:00
arnaucube
16e261bbed Feature/traits (#3)
* feat: draft traits `FoldingScheme` and `Decider`

Co-authored-by: arnaucube <root@arnaucube.com>

* Add Transcript trait, with PoseidonTranscript impl (#1)

Add also the PoseidonTranscriptVar (gadget).

* Update FoldingScheme trait to take C1 & C2 as params (#2)

* Update FoldingScheme trait to take C1 & C2 as params

Update FoldingScheme trait to take C1 & C2 as params which are used by
the diverse folding schemes as a cycle of curves.

* Add constraint to FoldingScheme C1,C2 fields swap.

Co-authored-by: Han <tinghan0110@gmail.com>

---------

Co-authored-by: Han <tinghan0110@gmail.com>

* move transcript to it's own mod

---------

Co-authored-by: han0110 <tinghan0110@gmail.com>
2023-08-17 10:32:26 +02:00
Han
eea9bf2a88 Initial commit 2023-08-15 18:05:20 +08:00