Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add frontend features to reduce the amount of dependencies and compil… #141

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
feature_set: [basic]
include:
- feature_set: basic
features: --features default,light-test
features: --features default,light-test,circom,noname,noir
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
Expand Down Expand Up @@ -159,7 +159,7 @@ jobs:
feature_set: [basic, wasm]
include:
- feature_set: basic
features: --features default,light-test
features: --features default,light-test,circom,noname,noir
# We only want to test `folding-schemes` package with `wasm` feature.
- feature_set: wasm
features: -p folding-schemes --features wasm,parallel --target wasm32-unknown-unknown
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Available frontends to define the folded circuit:
- [arkworks](https://github.com/arkworks-rs), arkworks contributors
- [Circom](https://github.com/iden3/circom), iden3, 0Kims Association
- [Noname](https://github.com/zksecurity/noname), zkSecurity
- [Noir](https://github.com/noir-lang/noir), Aztec

## Usage

Expand Down
3 changes: 3 additions & 0 deletions examples/circom_full_flow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]
///
/// To run:
/// > cargo run --release --example noir_full_flow -- --nocapture
///
/// This example performs the full flow:
/// - define the circuit to be folded
/// - fold the circuit with Nova+CycleFold's IVC
Expand Down
3 changes: 3 additions & 0 deletions examples/external_inputs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]

///
/// To run:
/// > cargo run --release --example external_inputs -- --nocapture
use ark_bn254::{constraints::GVar, Bn254, Fr, G1Projective as Projective};
use ark_crypto_primitives::{
crh::{
Expand Down
3 changes: 3 additions & 0 deletions examples/full_flow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]
///
/// To run:
/// > cargo run --release --example full_flow -- --nocapture
///
/// This example performs the full flow:
/// - define the circuit to be folded
/// - fold the circuit with Nova+CycleFold's IVC
Expand Down
3 changes: 3 additions & 0 deletions examples/multi_inputs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]

///
/// To run:
/// > cargo run --release --example multi_inputs -- --nocapture
use ark_ff::PrimeField;
use ark_r1cs_std::alloc::AllocVar;
use ark_r1cs_std::fields::fp::FpVar;
Expand Down
3 changes: 3 additions & 0 deletions examples/noir_full_flow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]
///
/// To run:
/// > cargo run --release --example noir_full_flow -- --nocapture
///
/// This example performs the full flow:
/// - define the circuit to be folded
/// - fold the circuit with Nova+CycleFold's IVC
Expand Down
3 changes: 3 additions & 0 deletions examples/noname_full_flow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]
///
/// To run:
/// > cargo run --release --example noname_full_flow -- --nocapture
///
/// This example performs the full flow:
/// - define the circuit to be folded
/// - fold the circuit with Nova+CycleFold's IVC
Expand Down
3 changes: 3 additions & 0 deletions examples/sha256.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
#![allow(non_camel_case_types)]
#![allow(clippy::upper_case_acronyms)]

///
/// To run:
/// > cargo run --release --example sha256 -- --nocapture
use ark_crypto_primitives::crh::{
sha256::{
constraints::{Sha256Gadget, UnitVar},
Expand Down
23 changes: 16 additions & 7 deletions folding-schemes/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@ ark-crypto-primitives = { version = "^0.4.0", default-features = false, features
ark-grumpkin = { version = "0.4.0", default-features = false }
ark-poly-commit = { version = "^0.4.0", default-features = false, features = ["parallel"] }
ark-relations = { version = "^0.4.0", default-features = false }
# this is patched at the workspace level
# ark-r1cs-std is patched at the workspace level
ark-r1cs-std = { version = "0.4.0", default-features = false, features = ["parallel"] }
ark-snark = { version = "^0.4.0", default-features = false }
ark-serialize = { version = "^0.4.0", default-features = false }
ark-circom = { git = "https://github.com/arnaucube/circom-compat", default-features = false }
ark-groth16 = { version = "^0.4.0", default-features = false, features = ["parallel"]}
ark-bn254 = { version = "^0.4.0", default-features = false }
thiserror = "1.0"
Expand All @@ -25,17 +24,20 @@ num-bigint = "0.4"
num-integer = "0.1"
color-eyre = "=0.6.2"
sha3 = "0.10"
ark-noname = { git = "https://github.com/dmpierre/ark-noname", branch = "feat/sonobe-integration" }
noname = { git = "https://github.com/dmpierre/noname" }
serde_json = "1.0.85" # to (de)serialize JSON
serde_json = "1.0.85" # to (de)serialize JSON
serde = "1.0.203"
acvm = { git = "https://github.com/noir-lang/noir", rev="2b4853e", default-features = false }
noir_arkworks_backend = { package="arkworks_backend", git = "https://github.com/dmpierre/arkworks_backend", branch = "feat/sonobe-integration" }
log = "0.4"

# tmp import for espresso's sumcheck
espresso_subroutines = {git="https://github.com/EspressoSystems/hyperplonk", package="subroutines"}

# frontend dependencies:
ark-circom = { git = "https://github.com/arnaucube/circom-compat", default-features = false, optional=true }
noir_arkworks_backend = { package="arkworks_backend", git = "https://github.com/dmpierre/arkworks_backend", branch = "feat/sonobe-integration", optional=true }
acvm = { git = "https://github.com/noir-lang/noir", rev="2b4853e", default-features = false, optional=true }
noname = { git = "https://github.com/dmpierre/noname", optional=true }
ark-noname = { git = "https://github.com/dmpierre/ark-noname", branch="feat/sonobe-integration", optional=true }

[dev-dependencies]
ark-pallas = {version="0.4.0", features=["r1cs"]}
ark-vesta = {version="0.4.0", features=["r1cs"]}
Expand All @@ -54,7 +56,14 @@ getrandom = { version = "0.2", features = ["js"] }
default = ["ark-circom/default", "parallel"]
parallel = []
wasm = ["ark-circom/wasm"]
# 'light-test' is a feature disabled by default, that when enabled will affect
# the DeciderEthCircuit implementations, skipping the heavy-weight parts of the
# circuit, allowing to run light tests of it taking less time.
light-test = []
# frontend features:
circom = ["dep:ark-circom"]
noname = ["dep:noname", "dep:ark-noname"]
noir = ["dep:acvm", "dep:noir_arkworks_backend"]


[[example]]
Expand Down
5 changes: 5 additions & 0 deletions folding-schemes/src/frontend/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ use ark_r1cs_std::fields::fp::FpVar;
use ark_relations::r1cs::{ConstraintSystemRef, SynthesisError};
use ark_std::fmt::Debug;

// we use features to activate specific frontends, to reduce the amount of dependencies and compile
// time
#[cfg(feature = "circom")]
pub mod circom;
#[cfg(feature = "noir")]
pub mod noir;
#[cfg(feature = "noname")]
pub mod noname;

/// FCircuit defines the trait of the circuit of the F function, which is the one being folded (ie.
Expand Down
4 changes: 2 additions & 2 deletions solidity-verifiers/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ tracing-subscriber = { version = "0.2" }
ark-bn254 = {version="0.4.0", features=["r1cs"]}
ark-grumpkin = {version="0.4.0", features=["r1cs"]}
rand = "0.8.5"
folding-schemes = { path = "../folding-schemes/", features=["light-test"]}
# use the diverse frontend features for the examples
folding-schemes = { path = "../folding-schemes/", features=["light-test", "circom", "noname", "noir"]}
noname = { git = "https://github.com/dmpierre/noname" }

[features]
Expand Down Expand Up @@ -56,4 +57,3 @@ path = "../examples/noname_full_flow.rs"
[[example]]
name = "noir_full_flow"
path = "../examples/noir_full_flow.rs"