* bn256+grumpkin from halo2curves
* chore: Integrate halo2curves more extensively
- Extend existing tests with additional test cases using the new curve types
* fix: Assign correct orders to bn256 and grumpkin scalar fields
- Swap scalar orders between grumpkin and bn256 in `impl_traits!` implementation
* test: Finish improving test integration with halo2curves
- Enhances test coverage for `pasta_curves` and `halo2curves`
- Cleans up commented code in `test_ivc_nontrivial` and `test_ivc_nontrivial_with_compression` tests
- Updates relevant test cases in `src/lib.rs` to include new curve tests
* chore: Remove commented-out/uneeded code in bn254_grumpkin.rs
* test: reproduce test_from_label for bn254_grumpkin
- Implement the `from_label_serial` function in bn254_grumpkin provider
- Add a test to compare parallel and serial implementations of `from_label` function
* refactor: Clean up to_coordinate & summarize changes
* refactor: rename bn254_grumpkin -> bn256_grumpkin
* test: Expand testing for public params digest using bn256 and grumpkin
* chore: Update halo2curves dependency in Cargo.toml
- Updated the `halo2curves` dependency in `Cargo.toml` to the latest version `0.1.0` from a specific git branch.
* refactor: Refactor multi-exponentiation methods across providers
- Updated bn256_grumpkin.rs to use the cpu_best_multiexp function from pasta provider instead of its native function.
- Modified visibility of cpu_best_multiexp function in pasta.rs from private to crate level.
* chore: set up dependencies to import the correct getrandom feature on Wasm
---------
Co-authored-by: Leo Alt <leo@ethereum.org>
* Improve performance of recursive
* Fix the test after rebase
* Fix CI/CD warnings
* Update benchmark to work with new interface of RecursiveSNARK
* Fix example to make sure step 1 is correct
* refactor: Removes unneeded pass-by value in verification
- Update function arguments to use borrowing instead of passing ownership
* Resolve the conflict with upstream branch
* refactor: Avoid extra input cloning in RecursiveSNARK::new
* Update criterion to 0.5.1 to prevent the panic with its plot
* Fix benchmark issue with new recursive_snark instance
* Fix CI/CD warning with
* refactor: Make mutation easier to observe
- Utilize mutable references to Points for better memory management
* chore: Downgrade clippy dependency for compatibility
---------
Co-authored-by: François Garillot <francois@garillot.net>
* refactor: make circuit tests generic wrt curves
- Improve modularity by introducing generic `test_recursive_circuit_with` function in `src/circuit.rs`
- Refactor `test_recursive_circuit` to utilize the new function
- Implement type constraints for `test_recursive_circuit_with` function
* refactor: make bellperson tests generic in type of group
- Introduce `test_alloc_bit_with` function utilizing generic types
- Adapt existing `test_alloc_bit` function to use the new `test_alloc_bit_with` function with correct types
* refactor: make the nifs test generic in the type of group
* refactor: make the ivc tests generic in the type of curve
* refactor: simplify generics in tests
* make the keccak tests generic
* make the poseidon tests generic
* make the spartan tests generic
* chore: update to ff/group 0.13 and associated dependencies
Updates:
- zkcrypto/ff, zkcrypto/group to 0.13,
- bellperson to 0.25,
- pasta_curves to 0.5.1, and removes the fil_pasta_curves fork
- pasta-msm should no longer need a fork (WIP)
Adapts source in function, mostly for const usage and API updates.
* expose the portable feature of pasta-MSM
* update pointer to pasta-msm
* Clippy
---------
Co-authored-by: François Garillot <francois@garillot.net>
* support for arbitrary arity for F
* revive MinRoot example
* revive tests
* revive ecdsa
* remove unused code
* use None instead of Some(1u32)
* revive benches
* fix clippy warning
* support non-determinism with small changes to the interface
* update benches to use the new API
* add an example that exercises non-deterministic advice at each step of recursion
* tiny rename
* Address clippy; update version
* cleanup code
* compiles
* additional plumbing
* add padding
* Add missing file
* integrate
* add a separate test
* cleanup
* cleanup
* add checks for outer sum-check
* sum-checks pass
* sum-checks pass
* sum-checks pass
* Add polycommit checks to the end
* switch to pasta_msm
* clippy
* remove int_log
* switch to pasta_curves
* clippy
* clippy
* add a special case for bases.len() = 1
* use naive MSM to avoid SIGFE error for smaller MSMs
* add rayon parallelism to naive MSM
* update comment since we already implement it
* address clippy
* cleanup map and reduce code
* add parallelism to final SNARK creation and verification
* add par
* add par
* add par
* add par
* store padded shapes in the parameters
* Address clippy
* pass padded shape in params
* pass padded shape in params
* cargo fmt
* add par
* add par
* Add par
* cleanup with a reorg
* factor out spartan-based snark into a separate module
* create traits for RelaxedR1CSSNARK
* make CompressedSNARK parameterized by a SNARK satisfying our new trait
* fix benches
* cleanup code
* remove unused
* move code to Spartan-based SNARK
* make unused function private
* rename IPA types for clarity
* cleanup
* return error types; rename r_j to r_i
* fix duplicate code
* recursion attempt
* address clippy
* initialize the running instance and witness of the primary correctly
* add asserts for debugging
* fix a bug in AllocatedPoint
* add debug statements
* fix an issue with how we inputize hashes; remove debug statements
* rename
* cleanup
* speedup tests
* require step_circuit implementors to provide a way to execute step computation
* recursion APIs (WIP)
* PublicParams struct and associated new
* fix build
* draft of APIs
* start with tests
* add a test case for the base case of recursion
* ECC scalar multiplication (first draft)
* fix clippy nits
* start implementing the ro gadget: 1st design Poseidon + truncate
* truncate to 128 bits
* implement add + double in constraints
* finish implementing constraints for ecc
* cargo fmt
* input of smul should be an array of bits
* cleanup ro a bit. Make the challenge returned be a vec of allocated bits
* switch to neptune 6.0
* start implementing high level circuit
* incomplete version of the verifier circuit with many TODOS
* optimize ecc ops. add i ==0 case to the circuit
* fix 0/1 constants at the circuit
* wrap CompressedGroupElement of Pallas and Vesta
* cargo fmt
* generate poseidon constants once instead of every time we call get_challenge
* Implement RO-based poseidon to use outside of circuit. Reorganize the repo
* add inner circuit to verification circuit
* start adding folding of the io. there is an error in the first call to mult_mod
* add test to check that bellperson-nonnative is compatible with nova
* remove swap file
* add another test that fails
* add inputs to the circuits in tests
* rename q to m in circuit.rs. add more tests in test_bellperson_non_native. change a in test_mult_mod to expose error
* push test for equal_with_carried. fix the issue is src/r1cs.rs
* cargo fmt + update the verifier circuit: add folding of X and update all hashes with X
* make limb_width and n_limbs parameters
* make params part of h1
* allocate the field order as constant. add check that z0 == zi when i == 0
* fix error in test_poseidon_ro
* remove merge error
* small fixes
* small fixes to comments
* clippy lints
* small edits; rename tests
* move inputize before from_num
* _limbs --> _bn
* _limbs --> _bn
Co-authored-by: Ioanna <iontzialla@gmail.com>