* refactor: add default impl for `SyncDeps` for backward compatability
* feat: pick changes from https://github.com/zcash/halo2/pull/728 and changes of flag `test-dev-graph`
* feat: pick changes from https://github.com/zcash/halo2/pull/622
* feat: pick changes about mod `circuit` and mod `dev`
* feat: pick rest changes of `halo2_proofs`
* fix: when `--no-default-features`
* ci: sync from upstream, and deduplicate jobs when
push to `main`, and remove always failing job `codecov`.
* fix: make `commit_zk` runnable when `--no-default-features`
* feat: public cells
* Update mds.rs
* Update mds.rs
* Update single_pass.rs
Co-authored-by: Han <tinghan0110@gmail.com>
* bump toolchain to resolve errors
* fix clippy errors for CI run
* rustfmt post clippy
* plz let it be the last lint
* patch clippy lints in gadgets
* clippy lints for sha256 bench
* patch halo2proof benches
* Update assigned.rs
* Update halo2_gadgets/src/poseidon/primitives/mds.rs
Co-authored-by: Han <tinghan0110@gmail.com>
* Update halo2_gadgets/src/poseidon/primitives/mds.rs
Co-authored-by: Han <tinghan0110@gmail.com>
---------
Co-authored-by: Han <tinghan0110@gmail.com>
* Extend Circuit trait to take parameters in config
The Circuit trait is extended with the following:
```
pub trait Circuit<F: Field> {
/// [...]
type Params: Default;
fn params(&self) -> Self::Params {
Self::Params::default()
}
fn configure_with_params(meta: &mut ConstraintSystem<F>, params: &Self::Params) -> Self::Config {
Self::configure(meta)
}
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config;
}
```
This allows runtime parametrization of the circuit configuration. The extension to the Circuit trait has been designed to minimize the breaking change: existing circuits only need to define the associated `type Params`.
Unfortunately "Associated type defaults" are unstable in Rust, otherwise this would be a non-breaking change. See https://github.com/rust-lang/rust/issues/29661
* Implement circuit params under feature flag
* Don't overwrite configure method
* Fix doc test
* change: Migrate workspace to pasta_curves-0.5
This ports the majority of the workspace to the `pasta_curves-0.5.0`
leaving some tricky edge-cases that we need to handle carefully.
Resolves: #132
* fix: Complete latest trait bounds to compile halo2proofs
* change: Migrate examples & benches to pasta 0.5
* change: Migrate halo2_gadgets to pasta-0.5
* change: Update gadgets outdated code with latest upstream
* fix: Sha3 gadget circuit
* fix: doc tests
* chore: Update merged main
* fix: Apply review suggestions
* feat: Parallelize `commit` blinder poly generator method
Solves the concerns raised in #151 related to the performance of the
random poly generator inside of `commit`.
Resolves: #151
* chore: add `from_evals` for Polynomial
* chore: add benches for commit_zk serial vs par
* fix: Correct thread_seeds iter size
* fix: Clippy
* chore: apply review suggestions
* fix: Inconsisten num of Scalars generated parallely
This fix from @ed255 fixes an error on the code proposal which was
rounding the num of Scalars to be generated and so, was producing
failures.
Co-authored-by: Edu <eduardsanou@posteo.net>
* remove: legacy comments & code
---------
Co-authored-by: Edu <eduardsanou@posteo.net>
Previously `plonk::verify_proof` took an `MSM` as an argument, to enable
batch verification. However, this also required that it take a source of
randomness in order to enforce separation of proofs within a batch. This
made single-proof verification unnecessarily non-deterministic.
We now have a `VerificationStrategy` trait encapsulating the necessary
details, and separate `SingleVerifier` and `BatchVerifier` structs for
the specific variants. Proof verifiers no longer need to create and
manage the `MSM` themselves, and single-proof verifiers no longer need
to supply a source of randomness.
Co-authored-by: Sean Bowe <sean@electriccoin.co>