diff --git a/Cargo.lock b/Cargo.lock index 4b140a513f2..d176377a015 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -574,6 +574,7 @@ version = "0.46.0" dependencies = [ "acir", "acvm_blackbox_solver", + "ark-bn254", "ark-ec", "ark-ff", "ark-std", diff --git a/Cargo.toml b/Cargo.toml index 182580f8d67..7bf70747005 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,6 +77,14 @@ noirc_abi = { path = "tooling/noirc_abi" } bb_abstraction_leaks = { path = "tooling/bb_abstraction_leaks" } acvm_cli = { path = "tooling/acvm_cli" } +# Arkworks +ark-bn254 = { version = "^0.4.0", default-features = false, features = ["curve"] } +ark-bls12-381 = { version = "^0.4.0", default-features = false, features = ["curve"] } +grumpkin = { version = "0.1.0", package = "noir_grumpkin", features = ["std"] } +ark-ec = { version = "^0.4.0", default-features = false } +ark-ff = { version = "^0.4.0", default-features = false } +ark-std = { version = "^0.4.0", default-features = false } + # Misc utils crates iter-extended = { path = "utils/iter-extended" } diff --git a/acvm-repo/acir_field/Cargo.toml b/acvm-repo/acir_field/Cargo.toml index f182c6c4aba..d9dd512c77d 100644 --- a/acvm-repo/acir_field/Cargo.toml +++ b/acvm-repo/acir_field/Cargo.toml @@ -17,9 +17,9 @@ hex.workspace = true num-bigint.workspace = true serde.workspace = true -ark-bn254 = { version = "^0.4.0", default-features = false, features = ["curve"] } -ark-bls12-381 = { version = "^0.4.0", optional = true, default-features = false, features = ["curve"] } -ark-ff = { version = "^0.4.0", default-features = false } +ark-bn254.workspace = true +ark-bls12-381 = { workspace = true, optional = true } +ark-ff.workspace = true cfg-if = "1.0.0" diff --git a/acvm-repo/bn254_blackbox_solver/Cargo.toml b/acvm-repo/bn254_blackbox_solver/Cargo.toml index 132dddd50e5..37d40de71a9 100644 --- a/acvm-repo/bn254_blackbox_solver/Cargo.toml +++ b/acvm-repo/bn254_blackbox_solver/Cargo.toml @@ -18,14 +18,14 @@ acvm_blackbox_solver.workspace = true hex.workspace = true lazy_static = "1.4" -# BN254 fixed base scalar multiplication solver -grumpkin = { version = "0.1.0", package = "noir_grumpkin", features = ["std"] } -ark-ec = { version = "^0.4.0", default-features = false } -ark-ff = { version = "^0.4.0", default-features = false } +ark-bn254.workspace = true +grumpkin.workspace = true +ark-ec.workspace = true +ark-ff.workspace = true num-bigint.workspace = true [dev-dependencies] -ark-std = { version = "^0.4.0", default-features = false } +ark-std.workspace = true criterion = "0.5.0" pprof = { version = "0.12", features = [ "flamegraph", @@ -36,7 +36,3 @@ pprof = { version = "0.12", features = [ [[bench]] name = "criterion" harness = false - -[features] -default = ["bn254"] -bn254 = ["acir/bn254"] diff --git a/acvm-repo/bn254_blackbox_solver/src/embedded_curve_ops.rs b/acvm-repo/bn254_blackbox_solver/src/embedded_curve_ops.rs index 148accd8b23..35cc68051d7 100644 --- a/acvm-repo/bn254_blackbox_solver/src/embedded_curve_ops.rs +++ b/acvm-repo/bn254_blackbox_solver/src/embedded_curve_ops.rs @@ -3,8 +3,9 @@ use ark_ec::AffineRepr; use ark_ff::MontConfig; use num_bigint::BigUint; +use crate::FieldElement; +use acir::AcirField; use acir::BlackBoxFunc; -use acir::{AcirField, FieldElement}; use crate::BlackBoxResolutionError; diff --git a/acvm-repo/bn254_blackbox_solver/src/lib.rs b/acvm-repo/bn254_blackbox_solver/src/lib.rs index e3cea1153be..08e0fb66a6d 100644 --- a/acvm-repo/bn254_blackbox_solver/src/lib.rs +++ b/acvm-repo/bn254_blackbox_solver/src/lib.rs @@ -2,7 +2,6 @@ #![warn(clippy::semicolon_if_nothing_returned)] #![cfg_attr(not(test), warn(unused_crate_dependencies, unused_extern_crates))] -use acir::FieldElement; use acvm_blackbox_solver::{BlackBoxFunctionSolver, BlackBoxResolutionError}; mod embedded_curve_ops; @@ -15,6 +14,10 @@ use ark_ec::AffineRepr; pub use embedded_curve_ops::{embedded_curve_add, multi_scalar_mul}; pub use poseidon2::poseidon2_permutation; +// Temporary hack, this ensure that we always use a bn254 field here +// without polluting the feature flags of the `acir_field` crate. +type FieldElement = acir::acir_field::GenericFieldElement; + #[derive(Default)] pub struct Bn254BlackBoxSolver; diff --git a/acvm-repo/bn254_blackbox_solver/src/pedersen/commitment.rs b/acvm-repo/bn254_blackbox_solver/src/pedersen/commitment.rs index 5ff2c269d8c..03f03fcf5ab 100644 --- a/acvm-repo/bn254_blackbox_solver/src/pedersen/commitment.rs +++ b/acvm-repo/bn254_blackbox_solver/src/pedersen/commitment.rs @@ -27,12 +27,13 @@ pub(crate) fn commit_native_with_index( #[cfg(test)] mod test { - use acir::{AcirField, FieldElement}; + use acir::AcirField; use ark_ec::short_weierstrass::Affine; use ark_std::{One, Zero}; use grumpkin::Fq; use crate::pedersen::commitment::commit_native_with_index; + use crate::FieldElement; #[test] fn commitment() { diff --git a/acvm-repo/bn254_blackbox_solver/src/pedersen/hash.rs b/acvm-repo/bn254_blackbox_solver/src/pedersen/hash.rs index 5c637207491..152526a9943 100644 --- a/acvm-repo/bn254_blackbox_solver/src/pedersen/hash.rs +++ b/acvm-repo/bn254_blackbox_solver/src/pedersen/hash.rs @@ -30,8 +30,9 @@ fn length_generator() -> &'static Affine { pub(crate) mod test { use super::*; + use crate::FieldElement; - use acir::{AcirField, FieldElement}; + use acir::AcirField; use ark_std::One; use grumpkin::Fq; diff --git a/acvm-repo/bn254_blackbox_solver/src/poseidon2.rs b/acvm-repo/bn254_blackbox_solver/src/poseidon2.rs index 95c620aab0d..18ed0b1d8ab 100644 --- a/acvm-repo/bn254_blackbox_solver/src/poseidon2.rs +++ b/acvm-repo/bn254_blackbox_solver/src/poseidon2.rs @@ -1,7 +1,9 @@ -use acir::{AcirField, FieldElement}; +use acir::AcirField; use acvm_blackbox_solver::BlackBoxResolutionError; use lazy_static::lazy_static; +use crate::FieldElement; + pub fn poseidon2_permutation( inputs: &[FieldElement], len: u32, @@ -543,9 +545,9 @@ impl<'a> Poseidon2<'a> { #[cfg(test)] mod test { - use acir::{AcirField, FieldElement}; + use acir::AcirField; - use super::{field_from_hex, poseidon2_permutation}; + use super::{field_from_hex, poseidon2_permutation, FieldElement}; #[test] fn smoke_test() { diff --git a/acvm-repo/bn254_blackbox_solver/src/schnorr/mod.rs b/acvm-repo/bn254_blackbox_solver/src/schnorr/mod.rs index 62e515a0792..8e3a40803f8 100644 --- a/acvm-repo/bn254_blackbox_solver/src/schnorr/mod.rs +++ b/acvm-repo/bn254_blackbox_solver/src/schnorr/mod.rs @@ -65,9 +65,10 @@ fn schnorr_generate_challenge( #[cfg(test)] mod schnorr_tests { - use acir::{AcirField, FieldElement}; + use acir::AcirField; use super::verify_signature; + use crate::FieldElement; #[test] fn verifies_valid_signature() {