From 0f817dfd9476d37688f26897941803e917ad0537 Mon Sep 17 00:00:00 2001 From: Tom French Date: Tue, 25 Apr 2023 23:38:44 +0100 Subject: [PATCH 1/9] chore: replace `aztec_backend` with `acvm-backend-barretenberg` --- Cargo.lock | 40 ++++++++----------- crates/nargo_cli/Cargo.toml | 7 ++-- crates/nargo_cli/src/backends.rs | 14 ++----- crates/nargo_cli/src/cli/check_cmd.rs | 2 +- .../nargo_cli/src/cli/codegen_verifier_cmd.rs | 2 +- crates/nargo_cli/src/cli/compile_cmd.rs | 2 +- crates/nargo_cli/src/cli/execute_cmd.rs | 2 +- crates/nargo_cli/src/cli/gates_cmd.rs | 2 +- crates/nargo_cli/src/cli/print_acir_cmd.rs | 2 +- crates/nargo_cli/src/cli/prove_cmd.rs | 2 +- crates/nargo_cli/src/cli/test_cmd.rs | 4 +- crates/nargo_cli/src/cli/verify_cmd.rs | 2 +- 12 files changed, 33 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 85b5c12aa46..506f9296028 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,6 +46,20 @@ dependencies = [ "thiserror", ] +[[package]] +name = "acvm-backend-barretenberg" +version = "0.1.0" +source = "git+https://github.com/noir-lang/aztec_backend?rev=ba1d0d61b94de91b15044d97608907c21bfb5299#ba1d0d61b94de91b15044d97608907c21bfb5299" +dependencies = [ + "barretenberg-sys", + "blake2", + "common", + "getrandom", + "pkg-config", + "rust-embed", + "wasmer", +] + [[package]] name = "acvm_stdlib" version = "0.9.0" @@ -305,27 +319,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "barretenberg_static_lib" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=e3d4504f15e1295e637c4da80b1d08c87c267c45#e3d4504f15e1295e637c4da80b1d08c87c267c45" -dependencies = [ - "barretenberg-sys", - "common", -] - -[[package]] -name = "barretenberg_wasm" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=e3d4504f15e1295e637c4da80b1d08c87c267c45#e3d4504f15e1295e637c4da80b1d08c87c267c45" -dependencies = [ - "common", - "getrandom", - "pkg-config", - "rust-embed", - "wasmer", -] - [[package]] name = "base64" version = "0.21.0" @@ -621,7 +614,7 @@ dependencies = [ [[package]] name = "common" version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=e3d4504f15e1295e637c4da80b1d08c87c267c45#e3d4504f15e1295e637c4da80b1d08c87c267c45" +source = "git+https://github.com/noir-lang/aztec_backend?rev=ba1d0d61b94de91b15044d97608907c21bfb5299#ba1d0d61b94de91b15044d97608907c21bfb5299" dependencies = [ "acvm", "blake2", @@ -1901,10 +1894,9 @@ name = "nargo_cli" version = "0.4.1" dependencies = [ "acvm", + "acvm-backend-barretenberg", "assert_cmd", "assert_fs", - "barretenberg_static_lib", - "barretenberg_wasm", "build-data", "cfg-if 1.0.0", "clap", diff --git a/crates/nargo_cli/Cargo.toml b/crates/nargo_cli/Cargo.toml index 40ab4b92459..cd423acaa31 100644 --- a/crates/nargo_cli/Cargo.toml +++ b/crates/nargo_cli/Cargo.toml @@ -37,8 +37,7 @@ termcolor = "1.1.2" color-eyre = "0.6.2" # Backends -aztec_backend = { optional = true, package = "barretenberg_static_lib", git = "https://github.com/noir-lang/aztec_backend", rev = "e3d4504f15e1295e637c4da80b1d08c87c267c45" } -aztec_wasm_backend = { optional = true, package = "barretenberg_wasm", git = "https://github.com/noir-lang/aztec_backend", rev = "e3d4504f15e1295e637c4da80b1d08c87c267c45" } +acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "ba1d0d61b94de91b15044d97608907c21bfb5299", default-features=false } [dev-dependencies] tempdir = "0.3.7" @@ -49,6 +48,6 @@ predicates = "2.1.5" [features] default = ["plonk_bn254"] # The plonk backend can only use bn254, so we do not specify the field -plonk_bn254 = ["aztec_backend"] -plonk_bn254_wasm = ["aztec_wasm_backend"] +plonk_bn254 = ["acvm-backend-barretenberg/native"] +plonk_bn254_wasm = ["acvm-backend-barretenberg/wasm"] diff --git a/crates/nargo_cli/src/backends.rs b/crates/nargo_cli/src/backends.rs index e1113279f80..bbec5c99006 100644 --- a/crates/nargo_cli/src/backends.rs +++ b/crates/nargo_cli/src/backends.rs @@ -1,14 +1,8 @@ -cfg_if::cfg_if! { - if #[cfg(feature = "plonk_bn254")] { - pub(crate) use aztec_backend::Plonk as ConcreteBackend; - } else if #[cfg(feature = "plonk_bn254_wasm")] { - pub(crate) use aztec_wasm_backend::Plonk as ConcreteBackend; - } else { - compile_error!("please specify a backend to compile with"); - } -} +pub(crate) use acvm_backend_barretenberg::Barretenberg as ConcreteBackend; + +#[cfg(not(any(feature = "plonk_bn254", feature = "plonk_bn254_wasm")))] +compile_error!("please specify a backend to compile with"); -// As we have 3 feature flags we must test all 3 potential pairings to ensure they're mutually exclusive. #[cfg(all(feature = "plonk_bn254", feature = "plonk_bn254_wasm"))] compile_error!( "feature \"plonk_bn254\" and feature \"plonk_bn254_wasm\" cannot be enabled at the same time" diff --git a/crates/nargo_cli/src/cli/check_cmd.rs b/crates/nargo_cli/src/cli/check_cmd.rs index 557093444a1..3049c830def 100644 --- a/crates/nargo_cli/src/cli/check_cmd.rs +++ b/crates/nargo_cli/src/cli/check_cmd.rs @@ -24,7 +24,7 @@ pub(crate) fn run(args: CheckCommand, config: NargoConfig) -> Result<(), CliErro } fn check_from_path>(p: P, compile_options: &CompileOptions) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let mut driver = Resolver::resolve_root_manifest(p.as_ref(), backend.np_language())?; diff --git a/crates/nargo_cli/src/cli/codegen_verifier_cmd.rs b/crates/nargo_cli/src/cli/codegen_verifier_cmd.rs index 319a5722708..f23502a15b5 100644 --- a/crates/nargo_cli/src/cli/codegen_verifier_cmd.rs +++ b/crates/nargo_cli/src/cli/codegen_verifier_cmd.rs @@ -19,7 +19,7 @@ pub(crate) struct CodegenVerifierCommand { } pub(crate) fn run(args: CodegenVerifierCommand, config: NargoConfig) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); // TODO(#1201): Should this be a utility function? let circuit_build_path = args diff --git a/crates/nargo_cli/src/cli/compile_cmd.rs b/crates/nargo_cli/src/cli/compile_cmd.rs index 50c21486385..78b52003166 100644 --- a/crates/nargo_cli/src/cli/compile_cmd.rs +++ b/crates/nargo_cli/src/cli/compile_cmd.rs @@ -30,7 +30,7 @@ pub(crate) struct CompileCommand { pub(crate) fn run(args: CompileCommand, config: NargoConfig) -> Result<(), CliError> { let circuit_dir = config.program_dir.join(TARGET_DIR); - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); // If contracts is set we're compiling every function in a 'contract' rather than just 'main'. if args.contracts { diff --git a/crates/nargo_cli/src/cli/execute_cmd.rs b/crates/nargo_cli/src/cli/execute_cmd.rs index 9d1429bbda7..adeefc860a5 100644 --- a/crates/nargo_cli/src/cli/execute_cmd.rs +++ b/crates/nargo_cli/src/cli/execute_cmd.rs @@ -46,7 +46,7 @@ fn execute_with_path( program_dir: &Path, compile_options: &CompileOptions, ) -> Result<(Option, WitnessMap), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let compiled_program = compile_circuit(&backend, program_dir, compile_options)?; diff --git a/crates/nargo_cli/src/cli/gates_cmd.rs b/crates/nargo_cli/src/cli/gates_cmd.rs index a5093b4d775..9fe9f5c7a53 100644 --- a/crates/nargo_cli/src/cli/gates_cmd.rs +++ b/crates/nargo_cli/src/cli/gates_cmd.rs @@ -23,7 +23,7 @@ fn count_gates_with_path>( program_dir: P, compile_options: &CompileOptions, ) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let compiled_program = compile_circuit(&backend, program_dir.as_ref(), compile_options)?; let num_opcodes = compiled_program.circuit.opcodes.len(); diff --git a/crates/nargo_cli/src/cli/print_acir_cmd.rs b/crates/nargo_cli/src/cli/print_acir_cmd.rs index 589cc490f40..38b841121bc 100644 --- a/crates/nargo_cli/src/cli/print_acir_cmd.rs +++ b/crates/nargo_cli/src/cli/print_acir_cmd.rs @@ -22,7 +22,7 @@ fn print_acir_with_path>( program_dir: P, compile_options: &CompileOptions, ) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let compiled_program = compile_circuit(&backend, program_dir.as_ref(), compile_options)?; println!("{}", compiled_program.circuit); diff --git a/crates/nargo_cli/src/cli/prove_cmd.rs b/crates/nargo_cli/src/cli/prove_cmd.rs index fd60f004e2b..cecdee23fee 100644 --- a/crates/nargo_cli/src/cli/prove_cmd.rs +++ b/crates/nargo_cli/src/cli/prove_cmd.rs @@ -65,7 +65,7 @@ pub(crate) fn prove_with_path>( check_proof: bool, compile_options: &CompileOptions, ) -> Result, CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let preprocessed_program = match circuit_build_path { Some(circuit_build_path) => read_program_from_file(circuit_build_path)?, diff --git a/crates/nargo_cli/src/cli/test_cmd.rs b/crates/nargo_cli/src/cli/test_cmd.rs index d168e6c39ca..65f8265a862 100644 --- a/crates/nargo_cli/src/cli/test_cmd.rs +++ b/crates/nargo_cli/src/cli/test_cmd.rs @@ -32,7 +32,7 @@ fn run_tests( test_name: &str, compile_options: &CompileOptions, ) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let mut driver = Resolver::resolve_root_manifest(program_dir, backend.np_language())?; @@ -79,7 +79,7 @@ fn run_test( driver: &Driver, config: &CompileOptions, ) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let program = driver .compile_no_check(config, main) diff --git a/crates/nargo_cli/src/cli/verify_cmd.rs b/crates/nargo_cli/src/cli/verify_cmd.rs index cf2e4859091..07b7e351ee9 100644 --- a/crates/nargo_cli/src/cli/verify_cmd.rs +++ b/crates/nargo_cli/src/cli/verify_cmd.rs @@ -43,7 +43,7 @@ fn verify_with_path>( circuit_build_path: Option

, compile_options: CompileOptions, ) -> Result<(), CliError> { - let backend = crate::backends::ConcreteBackend; + let backend = crate::backends::ConcreteBackend::default(); let preprocessed_program = match circuit_build_path { Some(circuit_build_path) => read_program_from_file(circuit_build_path)?, From be16e462d6f6ec7bb5d0ef86bf93f5683d778ea2 Mon Sep 17 00:00:00 2001 From: Tom French Date: Thu, 27 Apr 2023 16:50:36 +0100 Subject: [PATCH 2/9] feat: update to ACVM 0.10.0 --- Cargo.lock | 108 ++---------------- Cargo.toml | 3 +- crates/nargo/src/ops/execute.rs | 7 +- crates/nargo_cli/Cargo.toml | 2 +- crates/noirc_evaluator/src/lib.rs | 2 +- .../src/ssa/acir_gen/constraints.rs | 20 ++-- .../src/ssa/acir_gen/internal_var.rs | 2 +- .../src/ssa/acir_gen/operations/binary.rs | 4 +- .../src/ssa/acir_gen/operations/bitwise.rs | 4 +- .../src/ssa/acir_gen/operations/cmp.rs | 4 +- .../src/ssa/acir_gen/operations/intrinsics.rs | 2 +- .../src/ssa/acir_gen/operations/not.rs | 2 +- .../src/ssa/acir_gen/operations/sort.rs | 5 +- crates/noirc_evaluator/src/ssa/builtin.rs | 10 +- 14 files changed, 46 insertions(+), 129 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 506f9296028..b96fc7e0e80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,8 +5,7 @@ version = 3 [[package]] name = "acir" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "018148d69bf14422b1c1d62909a241af2a7f51fec064feb2b01de88fb02b11b8" +source = "git+https://github.com/noir-lang/acvm?rev=15d3c5a9be2dd92f266fcb7e672da17cada9fec5#15d3c5a9be2dd92f266fcb7e672da17cada9fec5" dependencies = [ "acir_field", "flate2", @@ -17,8 +16,7 @@ dependencies = [ [[package]] name = "acir_field" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d40dac25cf6be6335dd86286caeac859afd0dc74a4a75c64eed041b0f00a278" +source = "git+https://github.com/noir-lang/acvm?rev=15d3c5a9be2dd92f266fcb7e672da17cada9fec5#15d3c5a9be2dd92f266fcb7e672da17cada9fec5" dependencies = [ "ark-bn254", "ark-ff", @@ -31,8 +29,7 @@ dependencies = [ [[package]] name = "acvm" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17b7bc8f2b2215075b8e080ba3a0b8b7d759f04bc44b27e5bb8d845f4c77f20" +source = "git+https://github.com/noir-lang/acvm?rev=15d3c5a9be2dd92f266fcb7e672da17cada9fec5#15d3c5a9be2dd92f266fcb7e672da17cada9fec5" dependencies = [ "acir", "acvm_stdlib", @@ -48,23 +45,27 @@ dependencies = [ [[package]] name = "acvm-backend-barretenberg" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=ba1d0d61b94de91b15044d97608907c21bfb5299#ba1d0d61b94de91b15044d97608907c21bfb5299" +version = "0.0.0" +source = "git+https://github.com/noir-lang/aztec_backend?rev=880210c5dcb55d29437a68c11913406704a0eb71#880210c5dcb55d29437a68c11913406704a0eb71" dependencies = [ + "acvm", "barretenberg-sys", "blake2", - "common", + "dirs 3.0.2", + "futures-util", "getrandom", + "indicatif", "pkg-config", + "reqwest", "rust-embed", + "tokio", "wasmer", ] [[package]] name = "acvm_stdlib" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ce2d19a9d1e7ff1bf415ed909b43031e33ef6df21be70e470bb1817b3e6989" +source = "git+https://github.com/noir-lang/acvm?rev=15d3c5a9be2dd92f266fcb7e672da17cada9fec5#15d3c5a9be2dd92f266fcb7e672da17cada9fec5" dependencies = [ "acir", ] @@ -611,21 +612,6 @@ dependencies = [ "tracing-error", ] -[[package]] -name = "common" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=ba1d0d61b94de91b15044d97608907c21bfb5299#ba1d0d61b94de91b15044d97608907c21bfb5299" -dependencies = [ - "acvm", - "blake2", - "dirs 3.0.2", - "futures-util", - "indicatif", - "reqwest", - "sled", - "tokio", -] - [[package]] name = "console" version = "0.15.5" @@ -1195,16 +1181,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -1278,15 +1254,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generational-arena" version = "0.2.8" @@ -1754,16 +1721,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" -[[package]] -name = "lock_api" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -dependencies = [ - "autocfg", - "scopeguard", -] - [[package]] name = "log" version = "0.4.17" @@ -2116,31 +2073,6 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - [[package]] name = "paste" version = "1.0.12" @@ -2933,22 +2865,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "sled" -version = "0.34.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" -dependencies = [ - "crc32fast", - "crossbeam-epoch", - "crossbeam-utils", - "fs2", - "fxhash", - "libc", - "log", - "parking_lot", -] - [[package]] name = "smallvec" version = "1.10.0" diff --git a/Cargo.toml b/Cargo.toml index 26eec846ef9..d74e2b2475c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,8 @@ edition = "2021" rust-version = "1.66" [workspace.dependencies] -acvm = "0.9.0" +#acvm = "0.9.0" +acvm = { git = "https://github.com/noir-lang/acvm", rev = "15d3c5a9be2dd92f266fcb7e672da17cada9fec5", features = ["bn254"] } arena = { path = "crates/arena" } fm = { path = "crates/fm" } iter-extended = { path = "crates/iter-extended" } diff --git a/crates/nargo/src/ops/execute.rs b/crates/nargo/src/ops/execute.rs index eb82df60d41..e4c8a5afbb5 100644 --- a/crates/nargo/src/ops/execute.rs +++ b/crates/nargo/src/ops/execute.rs @@ -1,5 +1,5 @@ -use acvm::PartialWitnessGenerator; use acvm::{acir::circuit::Circuit, pwg::block::Blocks}; +use acvm::{PartialWitnessGenerator, PartialWitnessGeneratorStatus}; use noirc_abi::WitnessMap; use crate::NargoError; @@ -10,9 +10,8 @@ pub fn execute_circuit( mut initial_witness: WitnessMap, ) -> Result { let mut blocks = Blocks::default(); - let (unresolved_opcodes, oracles) = - backend.solve(&mut initial_witness, &mut blocks, circuit.opcodes)?; - if !unresolved_opcodes.is_empty() || !oracles.is_empty() { + let solver_status = backend.solve(&mut initial_witness, &mut blocks, circuit.opcodes)?; + if matches!(solver_status, PartialWitnessGeneratorStatus::RequiresOracleData { .. }) { todo!("Add oracle support to nargo execute") } diff --git a/crates/nargo_cli/Cargo.toml b/crates/nargo_cli/Cargo.toml index cd423acaa31..c4691c4ab21 100644 --- a/crates/nargo_cli/Cargo.toml +++ b/crates/nargo_cli/Cargo.toml @@ -37,7 +37,7 @@ termcolor = "1.1.2" color-eyre = "0.6.2" # Backends -acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "ba1d0d61b94de91b15044d97608907c21bfb5299", default-features=false } +acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "880210c5dcb55d29437a68c11913406704a0eb71", default-features=false } [dev-dependencies] tempdir = "0.3.7" diff --git a/crates/noirc_evaluator/src/lib.rs b/crates/noirc_evaluator/src/lib.rs index 8b3cbb009a9..a94bc45dbf6 100644 --- a/crates/noirc_evaluator/src/lib.rs +++ b/crates/noirc_evaluator/src/lib.rs @@ -158,7 +158,7 @@ impl Evaluator { let inter_var_witness = self.add_witness_to_cs(); // Link that witness to the arithmetic gate - let constraint = &arithmetic_gate - &inter_var_witness; + let constraint = &arithmetic_gate - inter_var_witness; self.opcodes.push(AcirOpcode::Arithmetic(constraint)); inter_var_witness } diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/constraints.rs b/crates/noirc_evaluator/src/ssa/acir_gen/constraints.rs index 8257e0c9f9a..11371dc54a6 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/constraints.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/constraints.rs @@ -31,7 +31,7 @@ pub(crate) fn mul_with_witness( let a_arith; let a_arith = if !a.mul_terms.is_empty() && !b.is_const() { let a_witness = evaluator.create_intermediate_variable(a.clone()); - a_arith = Expression::from(&a_witness); + a_arith = Expression::from(a_witness); &a_arith } else { a @@ -42,7 +42,7 @@ pub(crate) fn mul_with_witness( a_arith } else { let b_witness = evaluator.create_intermediate_variable(b.clone()); - b_arith = Expression::from(&b_witness); + b_arith = Expression::from(b_witness); &b_arith } } else { @@ -54,9 +54,9 @@ pub(crate) fn mul_with_witness( //a*b pub(crate) fn mul(a: &Expression, b: &Expression) -> Expression { if a.is_const() { - return b * &a.q_c; + return b * a.q_c; } else if b.is_const() { - return a * &b.q_c; + return a * b.q_c; } else if !(a.is_linear() && b.is_linear()) { unreachable!("Can only multiply linear terms"); } @@ -125,9 +125,9 @@ pub(crate) fn subtract(a: &Expression, k: FieldElement, b: &Expression) -> Expre // TODO in either case, we can put this in ACIR, if its useful pub(crate) fn add(a: &Expression, k: FieldElement, b: &Expression) -> Expression { if a.is_const() { - return (b * &k) + &a.q_c; + return (b * k) + a.q_c; } else if b.is_const() { - return a.clone() + &(k * b.q_c); + return a.clone() + (k * b.q_c); } let mut output = Expression::from_field(a.q_c + k * b.q_c); @@ -497,7 +497,7 @@ pub(crate) fn evaluate_truncate( if let Some(a_c) = lhs.to_const() { let mut a_big = BigUint::from_bytes_be(&a_c.to_be_bytes()); a_big %= exp_big; - return Expression::from(&FieldElement::from_be_bytes_reduce(&a_big.to_bytes_be())); + return Expression::from(FieldElement::from_be_bytes_reduce(&a_big.to_bytes_be())); } let exp = FieldElement::from_be_bytes_reduce(&exp_big.to_bytes_be()); @@ -524,7 +524,7 @@ pub(crate) fn evaluate_truncate( let my_constraint = add(&res, -FieldElement::one(), lhs); evaluator.push_opcode(AcirOpcode::Arithmetic(my_constraint)); - Expression::from(&b_witness) + Expression::from(b_witness) } pub(crate) fn evaluate_udiv( @@ -552,8 +552,8 @@ pub(crate) fn evaluate_udiv( //range check q<=a try_range_constraint(q_witness, bit_size, evaluator); // a-b*q-r = 0 - let mut d = mul_with_witness(evaluator, rhs, &Expression::from(&q_witness)); - d = add(&d, FieldElement::one(), &Expression::from(&r_witness)); + let mut d = mul_with_witness(evaluator, rhs, &Expression::from(q_witness)); + d = add(&d, FieldElement::one(), &Expression::from(r_witness)); d = mul_with_witness(evaluator, &d, predicate); let div_euclidean = subtract(&pa, FieldElement::one(), &d); diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/internal_var.rs b/crates/noirc_evaluator/src/ssa/acir_gen/internal_var.rs index 8e6e16776a9..27d6b0ec25b 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/internal_var.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/internal_var.rs @@ -98,7 +98,7 @@ impl InternalVar { /// Expression, this method is infallible. pub(crate) fn from_witness(witness: Witness) -> InternalVar { InternalVar { - expression: Expression::from(&witness), + expression: Expression::from(witness), cached_witness: Some(witness), id: None, } diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/binary.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/binary.rs index bf1f59391f9..87280eb1fde 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/binary.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/binary.rs @@ -146,12 +146,12 @@ pub(crate) fn evaluate( if r_value.is_zero() { panic!("Panic - division by zero"); } else { - (l_c.expression() * &r_value.inverse()).into() + (l_c.expression() * r_value.inverse()).into() } } else { //TODO avoid creating witnesses here. let x_witness = acir_gen.var_cache.get_or_compute_witness(r_c, evaluator).expect("unexpected constant expression"); - let inverse = Expression::from(&constraints::evaluate_inverse( + let inverse = Expression::from(constraints::evaluate_inverse( x_witness, &predicate, evaluator, )); InternalVar::from(constraints::mul_with_witness( diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/bitwise.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/bitwise.rs index 947cf93edd9..f8ca271835e 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/bitwise.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/bitwise.rs @@ -155,9 +155,9 @@ pub(super) fn evaluate_bitwise( constraints::subtract( &Expression::from_field(max), FieldElement::one(), - &Expression::from(&result), + &Expression::from(result), ) } else { - Expression::from(&result) + Expression::from(result) } } diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/cmp.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/cmp.rs index 4abd34f6e01..0f8091e2f6f 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/cmp.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/cmp.rs @@ -69,7 +69,7 @@ pub(super) fn evaluate_neq( .get_or_compute_witness(x, evaluator) .expect("unexpected constant expression"); - return Expression::from(&constraints::evaluate_zero_equality(x_witness, evaluator)); + return Expression::from(constraints::evaluate_zero_equality(x_witness, evaluator)); } // Arriving here means that `lhs` and `rhs` are not Arrays @@ -95,7 +95,7 @@ pub(super) fn evaluate_neq( .var_cache .get_or_compute_witness(x, evaluator) .expect("unexpected constant expression"); - Expression::from(&constraints::evaluate_zero_equality(x_witness, evaluator)) + Expression::from(constraints::evaluate_zero_equality(x_witness, evaluator)) } } diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs index 7d6f7e2c32c..ea7d3d9c6c0 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs @@ -107,7 +107,7 @@ pub(crate) fn evaluate( } outputs = prepare_outputs(&mut acir_gen.memory, instruction_id, array.len, ctx, evaluator); - let out_expr: Vec = outputs.iter().map(|w| w.into()).collect(); + let out_expr: Vec = outputs.iter().map(|w| (*w).into()).collect(); for i in 0..(out_expr.len() - 1) { bound_constraint_with_offset( &out_expr[i], diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/not.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/not.rs index ff8bb26f788..76ad7c93a88 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/not.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/not.rs @@ -19,7 +19,7 @@ pub(crate) fn evaluate( let l_c = var_cache.get_or_compute_internal_var_unwrap(*value, evaluator, ctx); Some( constraints::subtract( - &Expression::from(&FieldElement::from(a)), + &Expression::from(FieldElement::from(a)), FieldElement::one(), l_c.expression(), ) diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/sort.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/sort.rs index 04524959fbe..ffcbf1ea7c0 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/sort.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/sort.rs @@ -119,6 +119,7 @@ mod test { acir::{circuit::opcodes::BlackBoxFuncCall, native_types::Witness}, pwg::block::Blocks, FieldElement, OpcodeResolution, OpcodeResolutionError, PartialWitnessGenerator, + PartialWitnessGeneratorStatus, }; use crate::{ @@ -180,10 +181,10 @@ mod test { // compute the network output by solving the constraints let backend = MockBackend {}; let mut blocks = Blocks::default(); - let (unresolved_opcodes, oracles) = backend + let solver_status = backend .solve(&mut solved_witness, &mut blocks, eval.opcodes.clone()) .expect("Could not solve permutation constraints"); - assert!(unresolved_opcodes.is_empty() && oracles.is_empty(), "Incomplete solution"); + assert_eq!(solver_status, PartialWitnessGeneratorStatus::Solved, "Incomplete solution"); let mut b_val = Vec::new(); for i in 0..output.len() { b_val.push(solved_witness[&b_wit[i]]); diff --git a/crates/noirc_evaluator/src/ssa/builtin.rs b/crates/noirc_evaluator/src/ssa/builtin.rs index 8248322c488..81b4abe934e 100644 --- a/crates/noirc_evaluator/src/ssa/builtin.rs +++ b/crates/noirc_evaluator/src/ssa/builtin.rs @@ -77,10 +77,10 @@ impl Opcode { | BlackBoxFunc::Pedersen | BlackBoxFunc::FixedBaseScalarMul => BigUint::zero(), // Verify returns zero or one - BlackBoxFunc::SchnorrVerify - | BlackBoxFunc::EcdsaSecp256k1 - | BlackBoxFunc::MerkleMembership => BigUint::one(), - BlackBoxFunc::HashToField128Security => ObjectType::native_field().max_size(), + BlackBoxFunc::SchnorrVerify | BlackBoxFunc::EcdsaSecp256k1 => BigUint::one(), + BlackBoxFunc::ComputeMerkleRoot | BlackBoxFunc::HashToField128Security => { + ObjectType::native_field().max_size() + } BlackBoxFunc::AES => { todo!("ICE: AES is unimplemented") } @@ -113,7 +113,7 @@ impl Opcode { } BlackBoxFunc::HashToField128Security => (1, ObjectType::native_field()), // See issue #775 on changing this to return a boolean - BlackBoxFunc::MerkleMembership + BlackBoxFunc::ComputeMerkleRoot | BlackBoxFunc::SchnorrVerify | BlackBoxFunc::EcdsaSecp256k1 => (1, ObjectType::native_field()), BlackBoxFunc::Pedersen => (2, ObjectType::native_field()), From 24b680fb0bddfc93cb962ab730ea357a737b0189 Mon Sep 17 00:00:00 2001 From: Tom French Date: Thu, 27 Apr 2023 20:10:51 +0100 Subject: [PATCH 3/9] chore: move `ComputeMerkleRoot` to same match arm as `HashToField128Security` --- crates/noirc_evaluator/src/ssa/builtin.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/crates/noirc_evaluator/src/ssa/builtin.rs b/crates/noirc_evaluator/src/ssa/builtin.rs index 81b4abe934e..8e402343bb5 100644 --- a/crates/noirc_evaluator/src/ssa/builtin.rs +++ b/crates/noirc_evaluator/src/ssa/builtin.rs @@ -111,11 +111,13 @@ impl Opcode { BlackBoxFunc::SHA256 | BlackBoxFunc::Blake2s => { (32, ObjectType::unsigned_integer(8)) } - BlackBoxFunc::HashToField128Security => (1, ObjectType::native_field()), + BlackBoxFunc::ComputeMerkleRoot | BlackBoxFunc::HashToField128Security => { + (1, ObjectType::native_field()) + } // See issue #775 on changing this to return a boolean - BlackBoxFunc::ComputeMerkleRoot - | BlackBoxFunc::SchnorrVerify - | BlackBoxFunc::EcdsaSecp256k1 => (1, ObjectType::native_field()), + BlackBoxFunc::SchnorrVerify | BlackBoxFunc::EcdsaSecp256k1 => { + (1, ObjectType::native_field()) + } BlackBoxFunc::Pedersen => (2, ObjectType::native_field()), BlackBoxFunc::FixedBaseScalarMul => (2, ObjectType::native_field()), BlackBoxFunc::RANGE | BlackBoxFunc::AND | BlackBoxFunc::XOR => { From d79b7f3a737940a9528753a05e1ed4d530397064 Mon Sep 17 00:00:00 2001 From: Tom French Date: Thu, 27 Apr 2023 20:11:56 +0100 Subject: [PATCH 4/9] chore: bump backend commit --- Cargo.lock | 2 +- crates/nargo_cli/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b96fc7e0e80..514ee4ab2bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -46,7 +46,7 @@ dependencies = [ [[package]] name = "acvm-backend-barretenberg" version = "0.0.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=880210c5dcb55d29437a68c11913406704a0eb71#880210c5dcb55d29437a68c11913406704a0eb71" +source = "git+https://github.com/noir-lang/aztec_backend?rev=e7c4a2cc68c9d14b083290a3715e97ab05d163e7#e7c4a2cc68c9d14b083290a3715e97ab05d163e7" dependencies = [ "acvm", "barretenberg-sys", diff --git a/crates/nargo_cli/Cargo.toml b/crates/nargo_cli/Cargo.toml index c4691c4ab21..994bf7fb297 100644 --- a/crates/nargo_cli/Cargo.toml +++ b/crates/nargo_cli/Cargo.toml @@ -37,7 +37,7 @@ termcolor = "1.1.2" color-eyre = "0.6.2" # Backends -acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "880210c5dcb55d29437a68c11913406704a0eb71", default-features=false } +acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "e7c4a2cc68c9d14b083290a3715e97ab05d163e7", default-features=false } [dev-dependencies] tempdir = "0.3.7" From c64992ad8bfe34a716f4355274e6958d5fae37b9 Mon Sep 17 00:00:00 2001 From: Tom French Date: Thu, 27 Apr 2023 20:12:06 +0100 Subject: [PATCH 5/9] feat: update stdlib to use new merkle black box function --- noir_stdlib/src/merkle.nr | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/noir_stdlib/src/merkle.nr b/noir_stdlib/src/merkle.nr index 9f7c5d5b130..a47ce86c94b 100644 --- a/noir_stdlib/src/merkle.nr +++ b/noir_stdlib/src/merkle.nr @@ -5,16 +5,15 @@ // and the hashpath proves this // Currently we assume that it is a binary tree, so depth k implies a width of 2^k // XXX: In the future we can add an arity parameter -#[foreign(merkle_membership)] -fn check_membership(_root : Field, _leaf : Field, _index : Field, _hash_path: [Field]) -> Field {} - - -#[alternative(merkle_membership)] -fn check_membership_in_noir(root : Field, leaf : Field, index : Field, hash_path: [Field]) -> Field { - (compute_root_from_leaf(leaf, index, hash_path) == root) as Field +fn check_membership(_root : Field, _leaf : Field, _index : Field, _hash_path: [Field]) -> Field { + (compute_merkle_root(_leaf, _index, _hash_path) == _root) as Field } +#[foreign(compute_merkle_root)] +fn compute_merkle_root(_leaf : Field, _index : Field, _hash_path: [Field]) -> Field {} + // Returns the root of the tree from the provided leaf and its hashpath, using pedersen hash +#[alternative(compute_merkle_root)] fn compute_root_from_leaf(leaf : Field, index : Field, hash_path: [Field]) -> Field { let n = hash_path.len(); let index_bits = index.to_le_bits(n as u32); From 5703482285bf734b75f4d294d6a994083c09603e Mon Sep 17 00:00:00 2001 From: Tom French Date: Fri, 28 Apr 2023 12:55:50 +0100 Subject: [PATCH 6/9] fix: bump commit of barretenberg to match acvm-backend-barretenberg --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 7c01326f86d..6a6aff10f73 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ ] }, "locked": { - "lastModified": 1682345890, - "narHash": "sha256-ZsInK9Iy81MaCugouU3ifa5Vw2GKlJK9MxCU/LF8bIw=", + "lastModified": 1682626614, + "narHash": "sha256-TC535frlYLUTDZ2iHAtUtKpMJWngL1MFxzEXhOfeCo8=", "owner": "AztecProtocol", "repo": "barretenberg", - "rev": "87aeb375d7b434e0faf47abb79f97753ab760987", + "rev": "7b5598890c1fa4ee485a4a0015fcb23b5389392e", "type": "github" }, "original": { From 0171a46d289e4ed7e07c75f2994f7f8bd23e493c Mon Sep 17 00:00:00 2001 From: Tom French Date: Fri, 28 Apr 2023 13:00:14 +0100 Subject: [PATCH 7/9] feat: update `merkle_insert` to use new `compute_merkle_root` function --- crates/nargo_cli/tests/test_data/merkle_insert/src/main.nr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/nargo_cli/tests/test_data/merkle_insert/src/main.nr b/crates/nargo_cli/tests/test_data/merkle_insert/src/main.nr index 9d612977fa8..3ab4efb64c0 100644 --- a/crates/nargo_cli/tests/test_data/merkle_insert/src/main.nr +++ b/crates/nargo_cli/tests/test_data/merkle_insert/src/main.nr @@ -12,8 +12,8 @@ fn main( let old_leaf_exists = std::merkle::check_membership(old_root, old_leaf, index, old_hash_path); constrain old_leaf_exists == 1; constrain old_root == std::merkle::compute_root_from_leaf(old_leaf, index, old_hash_path); - let new_leaf_exists = std::merkle::check_membership(new_root, leaf, index, old_hash_path); - constrain new_leaf_exists == 1; + let calculated_root = std::merkle::compute_merkle_root(leaf, index, old_hash_path); + constrain new_root == calculated_root; let h = std::hash::mimc_bn254(mimc_input); // Regression test for PR #891 From dc50f76dbdc6f263d8646070d820332fe2619836 Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Fri, 28 Apr 2023 10:39:50 -0400 Subject: [PATCH 8/9] prepare_outptus without low level op output size count --- Cargo.lock | 179 ++++++--------- Cargo.toml | 3 +- crates/nargo_cli/Cargo.toml | 3 +- .../tests/test_data/recursion/Nargo.toml | 5 + .../tests/test_data/recursion/Prover.toml | 215 ++++++++++++++++++ .../tests/test_data/recursion/src/main.nr | 23 ++ .../src/ssa/acir_gen/operations/intrinsics.rs | 23 +- crates/noirc_evaluator/src/ssa/builtin.rs | 4 +- noir_stdlib/src/lib.nr | 4 + 9 files changed, 344 insertions(+), 115 deletions(-) create mode 100644 crates/nargo_cli/tests/test_data/recursion/Nargo.toml create mode 100644 crates/nargo_cli/tests/test_data/recursion/Prover.toml create mode 100644 crates/nargo_cli/tests/test_data/recursion/src/main.nr diff --git a/Cargo.lock b/Cargo.lock index 506f9296028..6a4e4c4c059 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,10 +5,19 @@ version = 3 [[package]] name = "acir" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "018148d69bf14422b1c1d62909a241af2a7f51fec064feb2b01de88fb02b11b8" dependencies = [ - "acir_field", + "acir_field 0.9.0", + "flate2", + "rmp-serde", + "serde", +] + +[[package]] +name = "acir" +version = "0.9.0" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +dependencies = [ + "acir_field 0.9.0 (git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof)", "flate2", "rmp-serde", "serde", @@ -17,8 +26,19 @@ dependencies = [ [[package]] name = "acir_field" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d40dac25cf6be6335dd86286caeac859afd0dc74a4a75c64eed041b0f00a278" +dependencies = [ + "ark-bn254", + "ark-ff", + "cfg-if 1.0.0", + "hex", + "num-bigint", + "serde", +] + +[[package]] +name = "acir_field" +version = "0.9.0" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" dependencies = [ "ark-bn254", "ark-ff", @@ -31,11 +51,26 @@ dependencies = [ [[package]] name = "acvm" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17b7bc8f2b2215075b8e080ba3a0b8b7d759f04bc44b27e5bb8d845f4c77f20" dependencies = [ - "acir", - "acvm_stdlib", + "acir 0.9.0", + "acvm_stdlib 0.9.0", + "blake2", + "crc32fast", + "indexmap", + "k256", + "num-bigint", + "num-traits", + "sha2 0.9.9", + "thiserror", +] + +[[package]] +name = "acvm" +version = "0.9.0" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +dependencies = [ + "acir 0.9.0 (git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof)", + "acvm_stdlib 0.9.0 (git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof)", "blake2", "crc32fast", "indexmap", @@ -48,25 +83,35 @@ dependencies = [ [[package]] name = "acvm-backend-barretenberg" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=ba1d0d61b94de91b15044d97608907c21bfb5299#ba1d0d61b94de91b15044d97608907c21bfb5299" +version = "0.0.0" dependencies = [ + "acvm 0.9.0 (git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof)", "barretenberg-sys", "blake2", - "common", + "dirs 3.0.2", + "futures-util", "getrandom", + "indicatif", "pkg-config", + "reqwest", "rust-embed", + "tokio", "wasmer", ] [[package]] name = "acvm_stdlib" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ce2d19a9d1e7ff1bf415ed909b43031e33ef6df21be70e470bb1817b3e6989" dependencies = [ - "acir", + "acir 0.9.0", +] + +[[package]] +name = "acvm_stdlib" +version = "0.9.0" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +dependencies = [ + "acir 0.9.0 (git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof)", ] [[package]] @@ -307,9 +352,8 @@ dependencies = [ [[package]] name = "barretenberg-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc96e40cc45e7d5622cbc57a140aee926a7fb6e4f7d07dda758daa9256f3317" +version = "0.1.3" +source = "git+https://github.com/noir-lang/barretenberg-sys.git?branch=mv/recursion-bindings#78ce8a7ecc2689fbd91788ee0cbc6f2258835f14" dependencies = [ "bindgen", "cc", @@ -611,21 +655,6 @@ dependencies = [ "tracing-error", ] -[[package]] -name = "common" -version = "0.1.0" -source = "git+https://github.com/noir-lang/aztec_backend?rev=ba1d0d61b94de91b15044d97608907c21bfb5299#ba1d0d61b94de91b15044d97608907c21bfb5299" -dependencies = [ - "acvm", - "blake2", - "dirs 3.0.2", - "futures-util", - "indicatif", - "reqwest", - "sled", - "tokio", -] - [[package]] name = "console" version = "0.15.5" @@ -1195,16 +1224,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -1278,15 +1297,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generational-arena" version = "0.2.8" @@ -1754,16 +1764,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" -[[package]] -name = "lock_api" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -dependencies = [ - "autocfg", - "scopeguard", -] - [[package]] name = "log" version = "0.4.17" @@ -1879,7 +1879,7 @@ checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" name = "nargo" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "iter-extended", "noirc_abi", "noirc_driver", @@ -1893,7 +1893,7 @@ dependencies = [ name = "nargo_cli" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "acvm-backend-barretenberg", "assert_cmd", "assert_fs", @@ -1924,7 +1924,7 @@ dependencies = [ name = "noir_wasm" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "build-data", "console_error_panic_hook", "gloo-utils", @@ -1940,7 +1940,7 @@ dependencies = [ name = "noirc_abi" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "iter-extended", "serde", "serde_json", @@ -1952,7 +1952,7 @@ dependencies = [ name = "noirc_driver" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "clap", "fm", "iter-extended", @@ -1978,7 +1978,7 @@ dependencies = [ name = "noirc_evaluator" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "arena", "iter-extended", "noirc_abi", @@ -1994,7 +1994,7 @@ dependencies = [ name = "noirc_frontend" version = "0.4.1" dependencies = [ - "acvm", + "acvm 0.9.0", "arena", "chumsky", "fm", @@ -2116,31 +2116,6 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", -] - [[package]] name = "paste" version = "1.0.12" @@ -2933,22 +2908,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "sled" -version = "0.34.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" -dependencies = [ - "crc32fast", - "crossbeam-epoch", - "crossbeam-utils", - "fs2", - "fxhash", - "libc", - "log", - "parking_lot", -] - [[package]] name = "smallvec" version = "1.10.0" diff --git a/Cargo.toml b/Cargo.toml index 26eec846ef9..ab14f66ca57 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,8 @@ edition = "2021" rust-version = "1.66" [workspace.dependencies] -acvm = "0.9.0" +# acvm = "0.9.0" +acvm = { version = "0.9.0", features = ["bn254"], path = "/Users/maximvezenov/Documents/dev/noir-lang/acvm/acvm" } arena = { path = "crates/arena" } fm = { path = "crates/fm" } iter-extended = { path = "crates/iter-extended" } diff --git a/crates/nargo_cli/Cargo.toml b/crates/nargo_cli/Cargo.toml index cd423acaa31..e0753866a8b 100644 --- a/crates/nargo_cli/Cargo.toml +++ b/crates/nargo_cli/Cargo.toml @@ -37,7 +37,8 @@ termcolor = "1.1.2" color-eyre = "0.6.2" # Backends -acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "ba1d0d61b94de91b15044d97608907c21bfb5299", default-features=false } +# acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", rev = "ba1d0d61b94de91b15044d97608907c21bfb5299", default-features=false } +acvm-backend-barretenberg = { path = "/Users/maximvezenov/Documents/dev/noir-lang/aztec_backend", default-features=false } [dev-dependencies] tempdir = "0.3.7" diff --git a/crates/nargo_cli/tests/test_data/recursion/Nargo.toml b/crates/nargo_cli/tests/test_data/recursion/Nargo.toml new file mode 100644 index 00000000000..65ab14da16d --- /dev/null +++ b/crates/nargo_cli/tests/test_data/recursion/Nargo.toml @@ -0,0 +1,5 @@ +[package] +authors = [""] +compiler_version = "0.4.1" + +[dependencies] \ No newline at end of file diff --git a/crates/nargo_cli/tests/test_data/recursion/Prover.toml b/crates/nargo_cli/tests/test_data/recursion/Prover.toml new file mode 100644 index 00000000000..737f9569a60 --- /dev/null +++ b/crates/nargo_cli/tests/test_data/recursion/Prover.toml @@ -0,0 +1,215 @@ +verification_key = [ + "0x006fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd310", + "0x0000000000000000000000000000000000000000000000000000000000002000", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000002000", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000a904b1de9ad47b61e91edf7e92d17b6bb7", + "0x00000000000000000000000000000000002d3ba7a870ee60c8200367da6c4b21", + "0x0000000000000000000000000000001c96168d733fc3e36b92ebcf10c0cb2f04", + "0x000000000000000000000000000000000021eb21934504526eda8379c3889cfd", + "0x0000000000000000000000000000002f60152775671437b19a6605a23ab2450d", + "0x0000000000000000000000000000000000094f46605db7eaebc318a1d6eb0a13", + "0x000000000000000000000000000000576808b58acd54b5177b3c99d034bb9dba", + "0x000000000000000000000000000000000026b9a55104cb174c15dcbf67fc20a0", + "0x0000000000000000000000000000002d7e6c91b2d26100a77d60e5234f6e8211", + "0x00000000000000000000000000000000001b034f950be2961221b01094798b59", + "0x000000000000000000000000000000d493bda45c0b79d493cac0ec3d355e645b", + "0x00000000000000000000000000000000000e07368208a1c7dffac6f8a0f30cb7", + "0x00000000000000000000000000000085da19557d2c1954f8e4b50c8f9f416cb8", + "0x000000000000000000000000000000000028f437ec8d2a42df2a711764ce675a", + "0x00000000000000000000000000000053eebb686a574202f7a6e7056dac4e6a04", + "0x00000000000000000000000000000000000a30a2af6d9faaf84d75107090fbb8", + "0x000000000000000000000000000000a5c526253b5d7fe5bc03090f882512cf51", + "0x00000000000000000000000000000000001264282b9bdf8043ad67c553d11486", + "0x000000000000000000000000000000892d49bcae8a30f909f5e27198818422ef", + "0x0000000000000000000000000000000000044c1cf862883cc720de3bf1a65158", + "0x00000000000000000000000000000063bb9b6be191ad0333a01860021474652e", + "0x000000000000000000000000000000000021d4a4fbf4255ec22363c0e67fddcd", + "0x00000000000000000000000000000031df120c8c2cdaa1deced300e262a41a59", + "0x0000000000000000000000000000000000127f2963c9cc3e46c9b2a81f010566", + "0x00000000000000000000000000000055b3eb94ad7db1cebf2493787119372bf2", + "0x0000000000000000000000000000000000125ef4e2acb74a4d7e1746b1cb3556", + "0x000000000000000000000000000000b6e69abc23cbd3ea2b7e0ac8e44f500473", + "0x000000000000000000000000000000000012a37dea2c03430ee09cfaf0dab3b7", + "0x00000000000000000000000000000091c4b58c9466db7519e549de29653f7e08", + "0x000000000000000000000000000000000005da324c9f8c5928b073bd5d3d4b0f", + "0x000000000000000000000000000000b6cc35b21df59fb4e2a36cefe98fe936c4", + "0x0000000000000000000000000000000000135878d2105778eaba1a0023a84035", + "0x000000000000000000000000000000e648cd91b86f4b17f30e4e62110f41f410", + "0x00000000000000000000000000000000001c354c314e59ad314b5388a1feb73d", + "0x000000000000000000000000000000b06b91150e48b16fa9a3d52188b430447f", + "0x000000000000000000000000000000000018b19ba5b1ef0342f198ff0ef41bab", + "0x000000000000000000000000000000cc6b57ed37a72741fd60d4a9c9de019013", + "0x000000000000000000000000000000000012343e6875fb97c8dd7ba0515caa0b", + "0x000000000000000000000000000000a7e527a7eb6b1ae11fe00e4c5277f9a685", + "0x0000000000000000000000000000000000029ff8300c511064acecd1f509280e", + "0x000000000000000000000000000000aba815ed47cd5327e88b0e6d4d960841be", + "0x0000000000000000000000000000000000298d7dd2078f23d81794a103c6a939", + "0x000000000000000000000000000000adcc03754ce27c5cb859e0e7ac9689ed91", + "0x00000000000000000000000000000000001b5b68b99135eae353f5548c9b51ee", + "0x00000000000000000000000000000084f5b77a5b58efd058ba2665c6b6b1ac34", + "0x00000000000000000000000000000000000eca3879d07d56b03547f5918dbbcf", + "0x000000000000000000000000000000c284df7c18c6ae5283b6f8129f92ed472d", + "0x000000000000000000000000000000000015f16fd4eb9aa6666014196d6702fd", + "0x000000000000000000000000000000752ba2765db2aac10ebdde6d0954088ddb", + "0x000000000000000000000000000000000020314bbb4fa0afb75f05ccbbb69e0d", + "0x0000000000000000000000000000003c2f0dafe942b951991059b7c66f56f833", + "0x00000000000000000000000000000000002992687a5ef7b76ef90090489c3598", + "0x000000000000000000000000000000767b4ae549b9aa953c610e38d4b3351ed5", + "0x0000000000000000000000000000000000221ae6adc6ffe610b699626477c68d", + "0x000000000000000000000000000000b1b18973b282233d3c6e59746e038ca762", + "0x00000000000000000000000000000000001607fb50cb21a1584e26d3de279356", + "0x000000000000000000000000000000031738dc11c806fc626e06f3c528f261d1", + "0x000000000000000000000000000000000004058b5c321f1d0de7302f994ef5b0", + "0x000000000000000000000000000000e6e99bd35fbcabda70289996fea3a93011", + "0x00000000000000000000000000000000000db7c40d801d2e7eac001a5673c3cd", + "0x0000000000000000000000000000004994438a00d1ab228927f908ccfcf2ed3d", + "0x0000000000000000000000000000000000237c83789d39d8459848d87929a49e", + "0x0000000000000000000000000000008725eb45c8e1888226f2bcc036e0d6a698", + "0x000000000000000000000000000000000009d3b1fef691b49a440d6a0ad2be80", + "0x0000000000000000000000000000004ad874e52a05928aa2b170cc2b63c274ef", + "0x000000000000000000000000000000000010c9d5ae2475ab1b23571f638477ca", + "0x000000000000000000000000000000c690acbf94666d3cdb1700cf7aad52ad26", + "0x00000000000000000000000000000000000eb136ae272592f98cc23b90dd9b9e", + "0x0000000000000000000000000000006dfe9ae4650c42e2d748c4a41f31ef3f79", + "0x00000000000000000000000000000000002cc60738774946a2165785da782965", + "0x000000000000000000000000000000b372175007e1d700a6c6dccf7725a68cf4", + "0x0000000000000000000000000000000000055b0ef271f117387a3e661982046e", + "0x00000000000000000000000000000030c29017ffa425c6869ff399db0e9adb6d", + "0x000000000000000000000000000000000029379efcf5b36e94fa459fcf11803e", + "0x000000000000000000000000000000bed1592b719b28e44dc87b6ad1884f642c", + "0x00000000000000000000000000000000000d0037fb7889608353203ef391d7a1", + "0x00000000000000000000000000000021a91fa2bd116913d763836e62dbb9957f", + "0x000000000000000000000000000000000029cc2825f5f92281f1c7a3df846304", + "0x000000000000000000000000000000e4a765d9dccfd5af2cc8d69af2ece343a3", + "0x00000000000000000000000000000000001242a3f2f4fec5433e22394c4541b1", + "0x000000000000000000000000000000f9992678a973b8fb38c824d0c9a6d14010", + "0x00000000000000000000000000000000001a146c1b754ee0eb69e6895b7dd9bf", + "0x000000000000000000000000000000c2fc1876673fbae3031dc825559b61f6dc", + "0x00000000000000000000000000000000002d45c6df9b1a2d830fb34f1519341e", + "0x0000000000000000000000000000007a72745061f1f059046fd03f84564e5d7a", + "0x000000000000000000000000000000000012592c8f38051aaf92a955aa17ae75", + "0x000000000000000000000000000000081c6ba09203e3e0d874f8bc31e6a0ec40", + "0x00000000000000000000000000000000000cdbf1a771f6eb78964a939acddeb9", + "0x000000000000000000000000000000b66e472a0cfd42cc6313ec34ff6882e4dc", + "0x00000000000000000000000000000000000ebaed1a9a0773ce3a62637ea9d53a", + "0x000000000000000000000000000000d2a2bfd3e7ac5860e62f2495a5e792d513", + "0x000000000000000000000000000000000022ab28abcec226916d0c7258ba9d2d", +] +proof = [ + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x00000000000000000000000000000041a4436085f0bbbf1e0985e913afda1401", + "0x00000000000000000000000000000000002264cc0566827b86010670f212f074", + "0x000000000000000000000000000000a2c96ba30333fe9266940dfcf43abc8c7f", + "0x000000000000000000000000000000000024238f050204649a393be6165e7bab", + "0x000000000000000000000000000000929d1592953294f4a63b8656bd230c618c", + "0x00000000000000000000000000000000001851a2f71fd3993807c7db6b90592f", + "0x0000000000000000000000000000004f1efe1de420feb5c333bc07b83c47e819", + "0x000000000000000000000000000000000017a19a0f19ca0e051dd9e2a16de93d", + "0x0000000000000000000000000000002bea92bb443df918ac177ae0e93a33b3e4", + "0x000000000000000000000000000000000027c3f3ce03b7d3bfaf4133a24a3168", + "0x0000000000000000000000000000007460f0846f2f6f749a8869d62c6fe6bdc6", + "0x0000000000000000000000000000000000247699da015ef6f32ce39bf13ff7aa", + "0x000000000000000000000000000000b22221217d14acf7d97536a75249216d22", + "0x0000000000000000000000000000000000203d37905bc6ea5ceab7509ace4a8d", + "0x000000000000000000000000000000688b19e5f5d7e5ac0a1355210c43072e91", + "0x00000000000000000000000000000000002d088977dcdaae88a793f241c07af5", + "0x000000000000000000000000000000f212fd497e11adae13146d40414c7427e7", + "0x000000000000000000000000000000000000d873a13aa189a9afde7ce03a4313", + "0x000000000000000000000000000000131faa60a2d2a9f4121b8d24ee93502bff", + "0x0000000000000000000000000000000000016dea32d8aafdc1ad3b512c2670c6", + "0x00000000000000000000000000000044b1289c57da6df57d0b69544a115e431a", + "0x00000000000000000000000000000000002919c687faaf9a8e5dd1315521dbba", + "0x000000000000000000000000000000fe86dea0851b7ec3772b7e534188f36af1", + "0x00000000000000000000000000000000001d6c22cca133cb2809a31b360cf420", + "0x000000000000000000000000000000b0e0e3f91b3d432416803172aefbf01363", + "0x00000000000000000000000000000000000b12bfac0c4fa9d70b37fa76aae6f7", + "0x0000000000000000000000000000009f9d715e0f7780332bdb1bf4f5a06cfe8f", + "0x000000000000000000000000000000000001c4b9ce0f94706c1fc5d3c2bc8e26", + "0x000000000000000000000000000000a9873af0671480f16068fbc03aab9a1f9f", + "0x000000000000000000000000000000000029fae08456e5728f0e5075afcf4f70", + "0x000000000000000000000000000000e0d468d42400401d36f51aded525ffb22b", + "0x0000000000000000000000000000000000096458c398416375134c68f44d9a56", + "0x000000000000000000000000000000dda81c1a311a2086a47deb54219e5437c1", + "0x00000000000000000000000000000000002b89f2f116a2c9f3ead912193a277c", + "0x00000000000000000000000000000051892ab6c7404ed5f739b7c9d8aa95c6de", + "0x00000000000000000000000000000000000be6fe3e88b639a21e56e4c3ba13df", + "0x0000000000000000000000000000007cd9f7bad73b7f779d7b42476025ca9746", + "0x00000000000000000000000000000000000f9920532057046dd7baf48b0f7773", + "0x000000000000000000000000000000da395cdb52d239c40df3438a8b69c9f9a9", + "0x00000000000000000000000000000000002b987703591e685c7f767454d512a8", + "0x0000000000000000000000000000007080feb46b784c4a15624c46556499344a", + "0x00000000000000000000000000000000001d85724a6eece0575f6b9ff651f0be", + "0x000000000000000000000000000000015578ceed71702771f6671972d6b7e849", + "0x00000000000000000000000000000000002e1839a7888333244d68f8bffac213", + "0x1bcef727b212b141c7ffca149d29048e7ced8418ca33bf031d6e01434e44c582", + "0x305579ec1c47ae8f0ece00ab82815e3b6eec90bb3464e327847b8356f39ab0ad", + "0x0f261b4cdcc94eb8b286569f9181f5894b41b6cf94c62985be9407d46ded02f6", + "0x20d7b76b31fea396839f3e67b12080f073d6857612ccd665a16b7bd1467249b4", + "0x15b575ec49753203ef727c7605e25d403de1d289a36d66c88bed4ddb2fac9b3e", + "0x2df93c83d36c93e86c11d350803e768c61d5c349f0366a8057f5606954024076", + "0x000c8a8dead64553b703db8d06196cf1bcac298331e1855dc4a8d55ad2552936", + "0x2d96ef9203dc156889a6cd692c9284df56470da31c502dd14cf19f5be5b0a31d", + "0x03d67b5d53bf5669a52c5e84ee1495bdb7380aef537af759c99697532fef0660", + "0x17122495e511485137dfa0f178b7af99186c461cfd1a10070f2077c4ef69cec5", + "0x08838fd5cb54dfb07dc3a79eb5853e5e5c34ea847041bb6d926e8c5a327303f1", + "0x2c8f85922c7042e0e2e930210d581d1841bb45aaafcd31bc702376ae0601fb79", + "0x13e3c35d063e846d00b67c903c3a81e3493d6164094f0aa90960be5417d53f98", + "0x08f152659198b2068371ca45bbe13ccd932d7759a53dbc8445dcbad87e9ca52d", + "0x27ccd695f868a3ff6ba7142eff1c3eab4131b2d0f02cff43c57c669e19f02b27", + "0x06221a2b8b87eaa713d81ff6e078ff587c84e9b47912e41406a270e5aa7cb7c5", + "0x119183d82269285122903301f9bfa121afbba9118521c11a1674ece72ba70514", + "0x16090de7394916e410d3743df6774ba9f50facd0f76b2f2a95d38cf5896cb00f", + "0x1481997b4e2cde02201171a8f47d56522a46eaf03434d561add4e5b84b7513e3", + "0x289fc2bf7064cc3dbe83a70a2be6348f2283cea02833bc94f4ef81b3f58a2a59", + "0x0aca68f94e715450366d1db8cdbcedcd8bea965dbc456051159988a4f848dae7", + "0x25c2fa0a8a882e84cdd10cbd62c3f00eaa495ae23489b44d7b9e4c9fa2eceaf6", + "0x0309b16ccd13e4d8869edd81389242569e05176f230761d5f5c21fbff4906161", + "0x12557a565889a5642a70b3347be51e5f70d5a19400930d2c092ad6e5364a489f", + "0x1a5a45c4339dbc79b3d84c82f69f71b287997d9a47b2a1a721af635ac17a879e", + "0x156e62a3536f637f8d258ba114b3b08b698ba9203aed28b2a76d5240dd312d65", + "0x0bf503faeae51d0863c268fab4a9b886c772dfdc03ff3597f57898847a830c28", + "0x279dcee5555028129c7f4591c99d446d0a685de36a42b34aa3918cbbda3688d1", + "0x134291febbbabcab21b365a66de96abe76385e0d405bcad17a90b4df45d615c5", + "0x0c9a3ae01335f4b35ff18fb2ee0551ed093be213881afa6632aad55eef63587c", + "0x275f403bcf600f4acd7b79ca1ee31d6c772de825900aad943ebb40fa2eccc0ee", + "0x2eb885a6833595e4c2397beddb31688194d011091b0719838d7b1ebcaee96dab", + "0x1456efbab4fc9581ad4fa9029b91d3997fbcd6f5866240ff5855377dc3471ee8", + "0x21fac92a4faa84529df79407657bc8dac53ad1d376018e1df1d698dc93ca83ac", + "0x244c20d583735d68ccc37bed7e878729bcf762d5c9f23bc71d58368d829b9967", + "0x0190ca6818740838b1727b494fc512abb902002c5ba314c25cc3006b693a9caf", + "0x13056bc5ae8a5d0bccdad585d84caa55b34c209d54234a9bc332d00e7d699fb4", + "0x210ad436afe85067004e534e467b12b065d21062a06d9f441bb74fae23cc7d96", + "0x0195658a7602bc8db47c2a383b65a456f67521045ce0680aafb734f5e186bbea", + "0x038d367d0877007ad0141c5a68c5363eec3483ae908e66a6539cfc2d7f31c36c", + "0x0e397c5e7a847ca5e5027c5b5ebd03d2767a461d927763667ff43584dc31d831", + "0x0000000000000000000000000000009a6eeda9ee8db851800319cb992406b988", + "0x000000000000000000000000000000000021da314c7b771ce486c97c87bafe2d", + "0x000000000000000000000000000000fabc1e7567e9a19392425bcd7bc72fe4b4", + "0x000000000000000000000000000000000029432a06eed8669a9bc74a0681783b", + "0x00000000000000000000000000000080ffa4294e16ad616eb87207685bcf6709", + "0x000000000000000000000000000000000012f785b140d229a56b6883a0a30219", + "0x0000000000000000000000000000006bd8ef038234662cf7fa53330a4144c9a7", + "0x00000000000000000000000000000000001bb2fda6ee1d62ab10b84e7db98326", +] +public_input = "0x0a" +key_hash = "0x02163b301299d5e495a7b4aab1645bcbb38c5253c675217990f17b5de572cf02" +input_aggregation_object = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"] diff --git a/crates/nargo_cli/tests/test_data/recursion/src/main.nr b/crates/nargo_cli/tests/test_data/recursion/src/main.nr new file mode 100644 index 00000000000..d9fd4e2e9f2 --- /dev/null +++ b/crates/nargo_cli/tests/test_data/recursion/src/main.nr @@ -0,0 +1,23 @@ +use dep::std; + +fn main( + verification_key : [Field; 114], + proof : [Field; 94], + public_input : Field, + key_hash : Field, + input_aggregation_object : [Field; 16] +) -> pub [Field; 16] { + let output_aggregation_object = std::verify_proof( + verification_key, + proof, + public_input, + key_hash, + input_aggregation_object + ); + + let mut output = [0; 16]; + for i in 0..16 { + output[i] = output_aggregation_object[i]; + } + output +} \ No newline at end of file diff --git a/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs b/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs index 7d6f7e2c32c..31277e74f88 100644 --- a/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs +++ b/crates/noirc_evaluator/src/ssa/acir_gen/operations/intrinsics.rs @@ -80,9 +80,9 @@ pub(crate) fn evaluate( } Opcode::LowLevel(op) => { let inputs = prepare_inputs(acir_gen, args, ctx, evaluator); - let output_count = op.definition().output_size.0 as u32; + outputs = - prepare_outputs(&mut acir_gen.memory, instruction_id, output_count, ctx, evaluator); + prepare_outputs_no_count(&mut acir_gen.memory, instruction_id, ctx, evaluator); let func_call = BlackBoxFuncCall { name: op, @@ -235,6 +235,25 @@ fn prepare_outputs( outputs } +fn prepare_outputs_no_count( + memory_map: &mut AcirMem, + pointer: NodeId, + ctx: &SsaContext, + evaluator: &mut Evaluator, +) -> Vec { + // Create fresh variables that will link to the output + let l_obj = ctx.try_get_node(pointer).unwrap(); + if let node::ObjectType::ArrayPointer(a) = l_obj.get_type() { + let mem_array = &ctx.mem[a]; + let output_nb = mem_array.len; + let outputs = vecmap(0..output_nb, |_| evaluator.add_witness_to_cs()); + memory_map.map_array(a, &outputs, ctx); + outputs + } else { + vec![evaluator.add_witness_to_cs()] + } +} + fn evaluate_println( var_cache: &mut InternalVarCache, memory_map: &mut AcirMem, diff --git a/crates/noirc_evaluator/src/ssa/builtin.rs b/crates/noirc_evaluator/src/ssa/builtin.rs index 8248322c488..ebe86e62e00 100644 --- a/crates/noirc_evaluator/src/ssa/builtin.rs +++ b/crates/noirc_evaluator/src/ssa/builtin.rs @@ -75,7 +75,8 @@ impl Opcode { BlackBoxFunc::SHA256 | BlackBoxFunc::Blake2s | BlackBoxFunc::Pedersen - | BlackBoxFunc::FixedBaseScalarMul => BigUint::zero(), + | BlackBoxFunc::FixedBaseScalarMul + | BlackBoxFunc::VerifyProof => BigUint::zero(), // Verify returns zero or one BlackBoxFunc::SchnorrVerify | BlackBoxFunc::EcdsaSecp256k1 @@ -118,6 +119,7 @@ impl Opcode { | BlackBoxFunc::EcdsaSecp256k1 => (1, ObjectType::native_field()), BlackBoxFunc::Pedersen => (2, ObjectType::native_field()), BlackBoxFunc::FixedBaseScalarMul => (2, ObjectType::native_field()), + BlackBoxFunc::VerifyProof => (16, ObjectType::native_field()), BlackBoxFunc::RANGE | BlackBoxFunc::AND | BlackBoxFunc::XOR => { unreachable!("ICE: these opcodes do not have Noir builtin functions") } diff --git a/noir_stdlib/src/lib.nr b/noir_stdlib/src/lib.nr index f0af06b97ba..870c799eb39 100644 --- a/noir_stdlib/src/lib.nr +++ b/noir_stdlib/src/lib.nr @@ -13,3 +13,7 @@ mod collections; #[builtin(println)] fn println(_input : T) {} + +// TODO: have the compiler insert the key_hash and remove as param +#[foreign(verify_proof)] +fn verify_proof(_verification_key : [Field], _proof : [Field], _public_input : Field, _key_hash : Field, _input_aggregation_object : [Field]) -> [Field] {} From 141235e7037ab6dfd5b54ae2fac9be62a974f635 Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Mon, 8 May 2023 10:10:14 -0400 Subject: [PATCH 9/9] nargo test with recursion and new recursion cmd --- .gitignore | 1 + Cargo.lock | 9 +- Cargo.toml | 1 + crates/nargo/src/ops/mod.rs | 2 + crates/nargo/src/ops/recursion.rs | 23 + crates/nargo_cli/Cargo.toml | 3 +- crates/nargo_cli/src/cli/mod.rs | 3 + crates/nargo_cli/src/cli/prove_cmd.rs | 4 + crates/nargo_cli/src/cli/recursion_cmd.rs | 78 ++++ crates/nargo_cli/tests/hello_world.rs | 94 +++- crates/nargo_cli/tests/prove_and_verify.rs | 39 +- .../tests/test_data/recursion/Prover.toml | 430 +++++++++--------- examples_failing/ecdsa_secp256k1/src/main.nr | 2 +- 13 files changed, 449 insertions(+), 240 deletions(-) create mode 100644 crates/nargo/src/ops/recursion.rs create mode 100644 crates/nargo_cli/src/cli/recursion_cmd.rs diff --git a/.gitignore b/.gitignore index 351f5e16a7f..a3d669b44e3 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ result *.pk *.vk **/Verifier.toml +**/target diff --git a/Cargo.lock b/Cargo.lock index 372bcdfd0b1..846110fead2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,7 +5,7 @@ version = 3 [[package]] name = "acir" version = "0.9.0" -source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#3c492db693d9f4cb83c4814bdc5d6cf0945f4b47" dependencies = [ "acir_field", "flate2", @@ -16,7 +16,7 @@ dependencies = [ [[package]] name = "acir_field" version = "0.9.0" -source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#3c492db693d9f4cb83c4814bdc5d6cf0945f4b47" dependencies = [ "ark-bn254", "ark-ff", @@ -29,7 +29,7 @@ dependencies = [ [[package]] name = "acvm" version = "0.9.0" -source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#3c492db693d9f4cb83c4814bdc5d6cf0945f4b47" dependencies = [ "acir", "acvm_stdlib", @@ -46,7 +46,6 @@ dependencies = [ [[package]] name = "acvm-backend-barretenberg" version = "0.0.0" -source = "git+https://github.com/noir-lang/aztec_backend?branch=mv/recursion#4d161a1ae282b910484d392a49b65642e706fa91" dependencies = [ "acvm", "barretenberg-sys", @@ -65,7 +64,7 @@ dependencies = [ [[package]] name = "acvm_stdlib" version = "0.9.0" -source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#ef2ec72d35d34eea607243a88a9019eb5aa645fc" +source = "git+https://github.com/noir-lang/acvm.git?branch=mv/verify_proof#3c492db693d9f4cb83c4814bdc5d6cf0945f4b47" dependencies = [ "acir", ] diff --git a/Cargo.toml b/Cargo.toml index e270aac17fb..897f27f85fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ rust-version = "1.66" [workspace.dependencies] # acvm = "0.9.0" acvm = { features = ["bn254"], git = "https://github.com/noir-lang/acvm.git", branch = "mv/verify_proof" } +# acvm = { features = ["bn254"], path = "/Users/maximvezenov/Documents/dev/noir-lang/acvm/acvm" } arena = { path = "crates/arena" } fm = { path = "crates/fm" } iter-extended = { path = "crates/iter-extended" } diff --git a/crates/nargo/src/ops/mod.rs b/crates/nargo/src/ops/mod.rs index 5d1f096ecf4..83b10a32a80 100644 --- a/crates/nargo/src/ops/mod.rs +++ b/crates/nargo/src/ops/mod.rs @@ -3,9 +3,11 @@ pub use self::execute::execute_circuit; pub use self::preprocess::{preprocess_contract, preprocess_program}; pub use self::prove::prove_execution; pub use self::verify::verify_proof; +pub use self::recursion::{proof_as_fields, vk_as_fields}; mod codegen_verifier; mod execute; mod preprocess; mod prove; mod verify; +mod recursion; diff --git a/crates/nargo/src/ops/recursion.rs b/crates/nargo/src/ops/recursion.rs new file mode 100644 index 00000000000..fc1827c8f94 --- /dev/null +++ b/crates/nargo/src/ops/recursion.rs @@ -0,0 +1,23 @@ +use acvm::{ProofSystemCompiler, FieldElement}; +use noirc_abi::WitnessMap; + +use crate::NargoError; + +pub fn proof_as_fields( + backend: &impl ProofSystemCompiler, + proof: &[u8], + public_inputs: WitnessMap, +) -> Result, NargoError> { + let proof_as_fields = backend.proof_as_fields(proof, public_inputs); + + Ok(proof_as_fields) +} + +pub fn vk_as_fields( + backend: &impl ProofSystemCompiler, + verification_key: &[u8], +) -> Result<(Vec, FieldElement), NargoError> { + let (vk_as_fields, vk_hash) = backend.vk_as_fields(verification_key); + + Ok((vk_as_fields, vk_hash)) +} \ No newline at end of file diff --git a/crates/nargo_cli/Cargo.toml b/crates/nargo_cli/Cargo.toml index d4bb4489e6b..ba8d189502b 100644 --- a/crates/nargo_cli/Cargo.toml +++ b/crates/nargo_cli/Cargo.toml @@ -37,7 +37,8 @@ termcolor = "1.1.2" color-eyre = "0.6.2" # Backends -acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", branch = "mv/recursion", default-features=false } +# acvm-backend-barretenberg = { git = "https://github.com/noir-lang/aztec_backend", branch = "mv/recursion", default-features=false } +acvm-backend-barretenberg = { path = "/Users/maximvezenov/Documents/dev/noir-lang/aztec_backend", default-features=false } [dev-dependencies] tempdir = "0.3.7" diff --git a/crates/nargo_cli/src/cli/mod.rs b/crates/nargo_cli/src/cli/mod.rs index 2bb92925e59..b90c90225cb 100644 --- a/crates/nargo_cli/src/cli/mod.rs +++ b/crates/nargo_cli/src/cli/mod.rs @@ -20,6 +20,7 @@ mod print_acir_cmd; mod prove_cmd; mod test_cmd; mod verify_cmd; +mod recursion_cmd; const GIT_HASH: &str = env!("GIT_COMMIT"); const IS_DIRTY: &str = env!("GIT_DIRTY"); @@ -58,6 +59,7 @@ enum NargoCommand { Test(test_cmd::TestCommand), Gates(gates_cmd::GatesCommand), PrintAcir(print_acir_cmd::PrintAcirCommand), + Recursion(recursion_cmd::RecursionCommand), } pub fn start_cli() -> eyre::Result<()> { @@ -79,6 +81,7 @@ pub fn start_cli() -> eyre::Result<()> { NargoCommand::Gates(args) => gates_cmd::run(args, config), NargoCommand::CodegenVerifier(args) => codegen_verifier_cmd::run(args, config), NargoCommand::PrintAcir(args) => print_acir_cmd::run(args, config), + NargoCommand::Recursion(args) => recursion_cmd::run(args, config), }?; Ok(()) diff --git a/crates/nargo_cli/src/cli/prove_cmd.rs b/crates/nargo_cli/src/cli/prove_cmd.rs index cecdee23fee..1698da2d3a0 100644 --- a/crates/nargo_cli/src/cli/prove_cmd.rs +++ b/crates/nargo_cli/src/cli/prove_cmd.rs @@ -34,6 +34,10 @@ pub(crate) struct ProveCommand { #[arg(short, long)] verify: bool, + /// Whether to generate this proof using the recursive prover + #[arg(short, long)] + recursive: bool, + #[clap(flatten)] compile_options: CompileOptions, } diff --git a/crates/nargo_cli/src/cli/recursion_cmd.rs b/crates/nargo_cli/src/cli/recursion_cmd.rs new file mode 100644 index 00000000000..2f51f4a2cae --- /dev/null +++ b/crates/nargo_cli/src/cli/recursion_cmd.rs @@ -0,0 +1,78 @@ +use std::{path::{PathBuf, Path}, collections::BTreeMap}; + +use crate::{ + errors::CliError, + constants::{PROOFS_DIR, TARGET_DIR, VERIFIER_INPUT_FILE, PROOF_EXT} +}; + +use clap::Args; +use nargo::ops::{proof_as_fields, vk_as_fields}; +use noirc_abi::input_parser::{Format, InputValue}; +use super::{NargoConfig, fs::{program::read_program_from_file, inputs::{read_inputs_from_file, write_inputs_to_file}, load_hex_data, create_named_dir}, compile_cmd::compile_circuit}; + +#[derive(Debug, Clone, Args)] +pub(crate) struct RecursionCommand { + /// The name of the proof + proof_name: String, + + /// The name of the circuit build fiels (ACIR, proving and verification key) + circuit_name: String, +} + +pub(crate) fn run(args: RecursionCommand, config: NargoConfig) -> Result<(), CliError> { + let proof_path = config.program_dir.join(PROOFS_DIR).join(&args.proof_name).with_extension(PROOF_EXT); + + let target_dir = config.program_dir.join(TARGET_DIR); + + let circuit_build_path = target_dir.join(&args.circuit_name); + + let recursion_artifacts_path = target_dir.join("recursion"); + create_named_dir(recursion_artifacts_path.as_ref(), "recursion"); + + gen_recursion_artifacts_with_path(config.program_dir, proof_path, circuit_build_path, recursion_artifacts_path, args.circuit_name)?; + + Ok(()) +} + +pub(crate) fn gen_recursion_artifacts_with_path>( + program_dir: P, + proof_path: PathBuf, + circuit_build_path: P, + recursion_artifacts_path: P, + circuit_name: String, +) -> Result<(), CliError> { + // TODO: do we want circuit's to be optional? If the circuit has not changed + // the verification key will be the same, but the proof generated could potentially be generated by a different circuit + // let preprocessed_program = match circuit_build_path { + // Some(circuit_build_path) => read_program_from_file(circuit_build_path)?, + // None => { + // let compiled_program = + // compile_circuit(&backend, program_dir.as_ref(), compile_options)?; + // preprocess_program(&backend, compiled_program)? + // } + // }; + + let preprocessed_program = read_program_from_file(&circuit_build_path)?; + + let backend = crate::backends::ConcreteBackend::default(); + + let public_abi = preprocessed_program.abi.clone().public_abi(); + let (public_inputs_map, return_value) = + read_inputs_from_file(program_dir, VERIFIER_INPUT_FILE, Format::Toml, &public_abi)?; + let public_inputs = public_abi.encode(&public_inputs_map, return_value)?; + + let proof = &load_hex_data(&proof_path)?; + + let proof_fields = proof_as_fields(&backend, proof, public_inputs)?; + + let mut recursion_artifacts_map = BTreeMap::new(); + recursion_artifacts_map.insert("proof".to_owned(), InputValue::Vec(proof_fields)); + + let (vk_fields, vk_hash) = vk_as_fields(&backend, &preprocessed_program.verification_key)?; + recursion_artifacts_map.insert("verification_key".to_owned(), InputValue::Vec(vk_fields)); + recursion_artifacts_map.insert("key_hash".to_owned(), InputValue::Field(vk_hash)); + + write_inputs_to_file(&recursion_artifacts_map, &None, recursion_artifacts_path, &circuit_name, Format::Toml)?; + + Ok(()) +} diff --git a/crates/nargo_cli/tests/hello_world.rs b/crates/nargo_cli/tests/hello_world.rs index 121f09f0ece..52b8c12f7b9 100644 --- a/crates/nargo_cli/tests/hello_world.rs +++ b/crates/nargo_cli/tests/hello_world.rs @@ -2,9 +2,16 @@ //! It then follows the steps published at https://noir-lang.org/getting_started/hello_world.html //! Any modifications to the commands run here MUST be documented in the noir-lang book. +mod prove_and_verify; + +use acvm::FieldElement; use assert_cmd::prelude::*; +use noirc_abi::input_parser::{Format, InputValue}; use predicates::prelude::*; -use std::process::Command; +use std::{process::Command, collections::BTreeMap, fs::File, io::Write}; +use tempdir::TempDir; + +use prove_and_verify::copy_recursively; use assert_fs::prelude::{FileWriteStr, PathAssert, PathChild}; @@ -54,3 +61,88 @@ fn hello_world_example() { cmd.arg("verify").arg(proof_name); cmd.assert().success(); } + +#[test] +fn recursive_proof_composition() { + let current_dir = std::env::current_dir().unwrap(); + + let xor_dir = current_dir.join("tests/test_data/xor"); + let recursion_dir = current_dir.join("tests/test_data/recursion"); + + let tmp_dir = TempDir::new("recursion_tests").unwrap(); + let tmp_xor_dir = tmp_dir.as_ref().join("xor"); + let tmp_recursion_dir = tmp_dir.as_ref().join("recursion"); + + copy_recursively(xor_dir, &tmp_xor_dir) + .expect("failed to copy test cases to temp directory"); + + copy_recursively(recursion_dir, &tmp_recursion_dir) + .expect("failed to copy test cases to temp directory"); + + std::env::set_current_dir(&tmp_xor_dir).unwrap(); + + // `nargo check` + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("check"); + cmd.assert() + .success() + .stdout(predicate::str::contains("Constraint system successfully built!")); + + let circuit_name = "c"; + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("compile").arg(circuit_name); + cmd.assert().success(); + + let proof_name = "p"; + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("prove").arg(proof_name).arg(circuit_name); + cmd.assert().success(); + + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("recursion").arg(proof_name).arg(circuit_name); + cmd.assert().success(); + + let recursion_artifacts_path = tmp_xor_dir.join("target/recursion").join(format!("{circuit_name}.toml")); + + let recursion_artifacts_string = std::fs::read_to_string(recursion_artifacts_path).unwrap(); + + let mut recursion_circuit_inputs_map = BTreeMap::new(); + recursion_circuit_inputs_map.insert("public_input".to_owned(), InputValue::Field(FieldElement::from_hex("0x0a").unwrap())); + + let input_aggregation_object = [FieldElement::zero(); 16].to_vec(); + recursion_circuit_inputs_map.insert("input_aggregation_object".to_owned(), InputValue::Vec(input_aggregation_object)); + + let additional_inputs = Format::Toml.serialize(&recursion_circuit_inputs_map).unwrap(); + let full_recursion_prover_inputs = recursion_artifacts_string + "\n" + &additional_inputs; + + let recursion_prover_file_path = tmp_recursion_dir.join("Prover").with_extension("toml"); + let mut recursion_prover_file = match File::create(recursion_prover_file_path) { + Err(why) => panic!("couldn't create recursion Prover.toml: {why}"), + Ok(file) => file, + }; + match recursion_prover_file.write_all(full_recursion_prover_inputs.as_bytes()) { + Err(why) => panic!("couldn't write to recursion Prover.toml: {why}"), + Ok(_) => (), + } + + std::env::set_current_dir(&tmp_recursion_dir).unwrap(); + + // `nargo check` + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("check"); + cmd.assert() + .success() + .stdout(predicate::str::contains("Constraint system successfully built!")); + + // `nargo prove p` + let proof_name = "p"; + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("prove").arg(proof_name); + cmd.assert().success(); + + // `nargo verify p` + let mut cmd = Command::cargo_bin("nargo").unwrap(); + cmd.arg("verify").arg(proof_name); + cmd.assert().success(); + +} diff --git a/crates/nargo_cli/tests/prove_and_verify.rs b/crates/nargo_cli/tests/prove_and_verify.rs index 070db6d8ce8..60910bdc9ed 100644 --- a/crates/nargo_cli/tests/prove_and_verify.rs +++ b/crates/nargo_cli/tests/prove_and_verify.rs @@ -1,7 +1,26 @@ use tempdir::TempDir; use std::collections::BTreeMap; -use std::fs; +use std::fs::{self, DirEntry}; +use std::path::Path; + +/// Copy files from source to destination recursively. +pub fn copy_recursively( + source: impl AsRef, + destination: impl AsRef, +) -> std::io::Result<()> { + fs::create_dir_all(&destination)?; + for entry in fs::read_dir(&source)? { + let entry = entry?; + let filetype = entry.file_type()?; + if filetype.is_dir() { + copy_recursively(entry.path(), destination.as_ref().join(entry.file_name()))?; + } else { + fs::copy(entry.path(), destination.as_ref().join(entry.file_name()))?; + } + } + Ok(()) +} mod tests { use std::path::{Path, PathBuf}; @@ -27,24 +46,6 @@ mod tests { conf_data } - /// Copy files from source to destination recursively. - pub fn copy_recursively( - source: impl AsRef, - destination: impl AsRef, - ) -> std::io::Result<()> { - fs::create_dir_all(&destination)?; - for entry in fs::read_dir(source)? { - let entry = entry?; - let filetype = entry.file_type()?; - if filetype.is_dir() { - copy_recursively(entry.path(), destination.as_ref().join(entry.file_name()))?; - } else { - fs::copy(entry.path(), destination.as_ref().join(entry.file_name()))?; - } - } - Ok(()) - } - #[test] fn noir_integration() { // Try to find the directory that Cargo sets when it is running; otherwise fallback to assuming the CWD diff --git a/crates/nargo_cli/tests/test_data/recursion/Prover.toml b/crates/nargo_cli/tests/test_data/recursion/Prover.toml index 737f9569a60..4a39740bdfc 100644 --- a/crates/nargo_cli/tests/test_data/recursion/Prover.toml +++ b/crates/nargo_cli/tests/test_data/recursion/Prover.toml @@ -1,215 +1,219 @@ -verification_key = [ - "0x006fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd310", - "0x0000000000000000000000000000000000000000000000000000000000002000", - "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x0000000000000000000000000000000000000000000000000000000000002000", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000a904b1de9ad47b61e91edf7e92d17b6bb7", - "0x00000000000000000000000000000000002d3ba7a870ee60c8200367da6c4b21", - "0x0000000000000000000000000000001c96168d733fc3e36b92ebcf10c0cb2f04", - "0x000000000000000000000000000000000021eb21934504526eda8379c3889cfd", - "0x0000000000000000000000000000002f60152775671437b19a6605a23ab2450d", - "0x0000000000000000000000000000000000094f46605db7eaebc318a1d6eb0a13", - "0x000000000000000000000000000000576808b58acd54b5177b3c99d034bb9dba", - "0x000000000000000000000000000000000026b9a55104cb174c15dcbf67fc20a0", - "0x0000000000000000000000000000002d7e6c91b2d26100a77d60e5234f6e8211", - "0x00000000000000000000000000000000001b034f950be2961221b01094798b59", - "0x000000000000000000000000000000d493bda45c0b79d493cac0ec3d355e645b", - "0x00000000000000000000000000000000000e07368208a1c7dffac6f8a0f30cb7", - "0x00000000000000000000000000000085da19557d2c1954f8e4b50c8f9f416cb8", - "0x000000000000000000000000000000000028f437ec8d2a42df2a711764ce675a", - "0x00000000000000000000000000000053eebb686a574202f7a6e7056dac4e6a04", - "0x00000000000000000000000000000000000a30a2af6d9faaf84d75107090fbb8", - "0x000000000000000000000000000000a5c526253b5d7fe5bc03090f882512cf51", - "0x00000000000000000000000000000000001264282b9bdf8043ad67c553d11486", - "0x000000000000000000000000000000892d49bcae8a30f909f5e27198818422ef", - "0x0000000000000000000000000000000000044c1cf862883cc720de3bf1a65158", - "0x00000000000000000000000000000063bb9b6be191ad0333a01860021474652e", - "0x000000000000000000000000000000000021d4a4fbf4255ec22363c0e67fddcd", - "0x00000000000000000000000000000031df120c8c2cdaa1deced300e262a41a59", - "0x0000000000000000000000000000000000127f2963c9cc3e46c9b2a81f010566", - "0x00000000000000000000000000000055b3eb94ad7db1cebf2493787119372bf2", - "0x0000000000000000000000000000000000125ef4e2acb74a4d7e1746b1cb3556", - "0x000000000000000000000000000000b6e69abc23cbd3ea2b7e0ac8e44f500473", - "0x000000000000000000000000000000000012a37dea2c03430ee09cfaf0dab3b7", - "0x00000000000000000000000000000091c4b58c9466db7519e549de29653f7e08", - "0x000000000000000000000000000000000005da324c9f8c5928b073bd5d3d4b0f", - "0x000000000000000000000000000000b6cc35b21df59fb4e2a36cefe98fe936c4", - "0x0000000000000000000000000000000000135878d2105778eaba1a0023a84035", - "0x000000000000000000000000000000e648cd91b86f4b17f30e4e62110f41f410", - "0x00000000000000000000000000000000001c354c314e59ad314b5388a1feb73d", - "0x000000000000000000000000000000b06b91150e48b16fa9a3d52188b430447f", - "0x000000000000000000000000000000000018b19ba5b1ef0342f198ff0ef41bab", - "0x000000000000000000000000000000cc6b57ed37a72741fd60d4a9c9de019013", - "0x000000000000000000000000000000000012343e6875fb97c8dd7ba0515caa0b", - "0x000000000000000000000000000000a7e527a7eb6b1ae11fe00e4c5277f9a685", - "0x0000000000000000000000000000000000029ff8300c511064acecd1f509280e", - "0x000000000000000000000000000000aba815ed47cd5327e88b0e6d4d960841be", - "0x0000000000000000000000000000000000298d7dd2078f23d81794a103c6a939", - "0x000000000000000000000000000000adcc03754ce27c5cb859e0e7ac9689ed91", - "0x00000000000000000000000000000000001b5b68b99135eae353f5548c9b51ee", - "0x00000000000000000000000000000084f5b77a5b58efd058ba2665c6b6b1ac34", - "0x00000000000000000000000000000000000eca3879d07d56b03547f5918dbbcf", - "0x000000000000000000000000000000c284df7c18c6ae5283b6f8129f92ed472d", - "0x000000000000000000000000000000000015f16fd4eb9aa6666014196d6702fd", - "0x000000000000000000000000000000752ba2765db2aac10ebdde6d0954088ddb", - "0x000000000000000000000000000000000020314bbb4fa0afb75f05ccbbb69e0d", - "0x0000000000000000000000000000003c2f0dafe942b951991059b7c66f56f833", - "0x00000000000000000000000000000000002992687a5ef7b76ef90090489c3598", - "0x000000000000000000000000000000767b4ae549b9aa953c610e38d4b3351ed5", - "0x0000000000000000000000000000000000221ae6adc6ffe610b699626477c68d", - "0x000000000000000000000000000000b1b18973b282233d3c6e59746e038ca762", - "0x00000000000000000000000000000000001607fb50cb21a1584e26d3de279356", - "0x000000000000000000000000000000031738dc11c806fc626e06f3c528f261d1", - "0x000000000000000000000000000000000004058b5c321f1d0de7302f994ef5b0", - "0x000000000000000000000000000000e6e99bd35fbcabda70289996fea3a93011", - "0x00000000000000000000000000000000000db7c40d801d2e7eac001a5673c3cd", - "0x0000000000000000000000000000004994438a00d1ab228927f908ccfcf2ed3d", - "0x0000000000000000000000000000000000237c83789d39d8459848d87929a49e", - "0x0000000000000000000000000000008725eb45c8e1888226f2bcc036e0d6a698", - "0x000000000000000000000000000000000009d3b1fef691b49a440d6a0ad2be80", - "0x0000000000000000000000000000004ad874e52a05928aa2b170cc2b63c274ef", - "0x000000000000000000000000000000000010c9d5ae2475ab1b23571f638477ca", - "0x000000000000000000000000000000c690acbf94666d3cdb1700cf7aad52ad26", - "0x00000000000000000000000000000000000eb136ae272592f98cc23b90dd9b9e", - "0x0000000000000000000000000000006dfe9ae4650c42e2d748c4a41f31ef3f79", - "0x00000000000000000000000000000000002cc60738774946a2165785da782965", - "0x000000000000000000000000000000b372175007e1d700a6c6dccf7725a68cf4", - "0x0000000000000000000000000000000000055b0ef271f117387a3e661982046e", - "0x00000000000000000000000000000030c29017ffa425c6869ff399db0e9adb6d", - "0x000000000000000000000000000000000029379efcf5b36e94fa459fcf11803e", - "0x000000000000000000000000000000bed1592b719b28e44dc87b6ad1884f642c", - "0x00000000000000000000000000000000000d0037fb7889608353203ef391d7a1", - "0x00000000000000000000000000000021a91fa2bd116913d763836e62dbb9957f", - "0x000000000000000000000000000000000029cc2825f5f92281f1c7a3df846304", - "0x000000000000000000000000000000e4a765d9dccfd5af2cc8d69af2ece343a3", - "0x00000000000000000000000000000000001242a3f2f4fec5433e22394c4541b1", - "0x000000000000000000000000000000f9992678a973b8fb38c824d0c9a6d14010", - "0x00000000000000000000000000000000001a146c1b754ee0eb69e6895b7dd9bf", - "0x000000000000000000000000000000c2fc1876673fbae3031dc825559b61f6dc", - "0x00000000000000000000000000000000002d45c6df9b1a2d830fb34f1519341e", - "0x0000000000000000000000000000007a72745061f1f059046fd03f84564e5d7a", - "0x000000000000000000000000000000000012592c8f38051aaf92a955aa17ae75", - "0x000000000000000000000000000000081c6ba09203e3e0d874f8bc31e6a0ec40", - "0x00000000000000000000000000000000000cdbf1a771f6eb78964a939acddeb9", - "0x000000000000000000000000000000b66e472a0cfd42cc6313ec34ff6882e4dc", - "0x00000000000000000000000000000000000ebaed1a9a0773ce3a62637ea9d53a", - "0x000000000000000000000000000000d2a2bfd3e7ac5860e62f2495a5e792d513", - "0x000000000000000000000000000000000022ab28abcec226916d0c7258ba9d2d", -] -proof = [ - "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x00000000000000000000000000000041a4436085f0bbbf1e0985e913afda1401", - "0x00000000000000000000000000000000002264cc0566827b86010670f212f074", - "0x000000000000000000000000000000a2c96ba30333fe9266940dfcf43abc8c7f", - "0x000000000000000000000000000000000024238f050204649a393be6165e7bab", - "0x000000000000000000000000000000929d1592953294f4a63b8656bd230c618c", - "0x00000000000000000000000000000000001851a2f71fd3993807c7db6b90592f", - "0x0000000000000000000000000000004f1efe1de420feb5c333bc07b83c47e819", - "0x000000000000000000000000000000000017a19a0f19ca0e051dd9e2a16de93d", - "0x0000000000000000000000000000002bea92bb443df918ac177ae0e93a33b3e4", - "0x000000000000000000000000000000000027c3f3ce03b7d3bfaf4133a24a3168", - "0x0000000000000000000000000000007460f0846f2f6f749a8869d62c6fe6bdc6", - "0x0000000000000000000000000000000000247699da015ef6f32ce39bf13ff7aa", - "0x000000000000000000000000000000b22221217d14acf7d97536a75249216d22", - "0x0000000000000000000000000000000000203d37905bc6ea5ceab7509ace4a8d", - "0x000000000000000000000000000000688b19e5f5d7e5ac0a1355210c43072e91", - "0x00000000000000000000000000000000002d088977dcdaae88a793f241c07af5", - "0x000000000000000000000000000000f212fd497e11adae13146d40414c7427e7", - "0x000000000000000000000000000000000000d873a13aa189a9afde7ce03a4313", - "0x000000000000000000000000000000131faa60a2d2a9f4121b8d24ee93502bff", - "0x0000000000000000000000000000000000016dea32d8aafdc1ad3b512c2670c6", - "0x00000000000000000000000000000044b1289c57da6df57d0b69544a115e431a", - "0x00000000000000000000000000000000002919c687faaf9a8e5dd1315521dbba", - "0x000000000000000000000000000000fe86dea0851b7ec3772b7e534188f36af1", - "0x00000000000000000000000000000000001d6c22cca133cb2809a31b360cf420", - "0x000000000000000000000000000000b0e0e3f91b3d432416803172aefbf01363", - "0x00000000000000000000000000000000000b12bfac0c4fa9d70b37fa76aae6f7", - "0x0000000000000000000000000000009f9d715e0f7780332bdb1bf4f5a06cfe8f", - "0x000000000000000000000000000000000001c4b9ce0f94706c1fc5d3c2bc8e26", - "0x000000000000000000000000000000a9873af0671480f16068fbc03aab9a1f9f", - "0x000000000000000000000000000000000029fae08456e5728f0e5075afcf4f70", - "0x000000000000000000000000000000e0d468d42400401d36f51aded525ffb22b", - "0x0000000000000000000000000000000000096458c398416375134c68f44d9a56", - "0x000000000000000000000000000000dda81c1a311a2086a47deb54219e5437c1", - "0x00000000000000000000000000000000002b89f2f116a2c9f3ead912193a277c", - "0x00000000000000000000000000000051892ab6c7404ed5f739b7c9d8aa95c6de", - "0x00000000000000000000000000000000000be6fe3e88b639a21e56e4c3ba13df", - "0x0000000000000000000000000000007cd9f7bad73b7f779d7b42476025ca9746", - "0x00000000000000000000000000000000000f9920532057046dd7baf48b0f7773", - "0x000000000000000000000000000000da395cdb52d239c40df3438a8b69c9f9a9", - "0x00000000000000000000000000000000002b987703591e685c7f767454d512a8", - "0x0000000000000000000000000000007080feb46b784c4a15624c46556499344a", - "0x00000000000000000000000000000000001d85724a6eece0575f6b9ff651f0be", - "0x000000000000000000000000000000015578ceed71702771f6671972d6b7e849", - "0x00000000000000000000000000000000002e1839a7888333244d68f8bffac213", - "0x1bcef727b212b141c7ffca149d29048e7ced8418ca33bf031d6e01434e44c582", - "0x305579ec1c47ae8f0ece00ab82815e3b6eec90bb3464e327847b8356f39ab0ad", - "0x0f261b4cdcc94eb8b286569f9181f5894b41b6cf94c62985be9407d46ded02f6", - "0x20d7b76b31fea396839f3e67b12080f073d6857612ccd665a16b7bd1467249b4", - "0x15b575ec49753203ef727c7605e25d403de1d289a36d66c88bed4ddb2fac9b3e", - "0x2df93c83d36c93e86c11d350803e768c61d5c349f0366a8057f5606954024076", - "0x000c8a8dead64553b703db8d06196cf1bcac298331e1855dc4a8d55ad2552936", - "0x2d96ef9203dc156889a6cd692c9284df56470da31c502dd14cf19f5be5b0a31d", - "0x03d67b5d53bf5669a52c5e84ee1495bdb7380aef537af759c99697532fef0660", - "0x17122495e511485137dfa0f178b7af99186c461cfd1a10070f2077c4ef69cec5", - "0x08838fd5cb54dfb07dc3a79eb5853e5e5c34ea847041bb6d926e8c5a327303f1", - "0x2c8f85922c7042e0e2e930210d581d1841bb45aaafcd31bc702376ae0601fb79", - "0x13e3c35d063e846d00b67c903c3a81e3493d6164094f0aa90960be5417d53f98", - "0x08f152659198b2068371ca45bbe13ccd932d7759a53dbc8445dcbad87e9ca52d", - "0x27ccd695f868a3ff6ba7142eff1c3eab4131b2d0f02cff43c57c669e19f02b27", - "0x06221a2b8b87eaa713d81ff6e078ff587c84e9b47912e41406a270e5aa7cb7c5", - "0x119183d82269285122903301f9bfa121afbba9118521c11a1674ece72ba70514", - "0x16090de7394916e410d3743df6774ba9f50facd0f76b2f2a95d38cf5896cb00f", - "0x1481997b4e2cde02201171a8f47d56522a46eaf03434d561add4e5b84b7513e3", - "0x289fc2bf7064cc3dbe83a70a2be6348f2283cea02833bc94f4ef81b3f58a2a59", - "0x0aca68f94e715450366d1db8cdbcedcd8bea965dbc456051159988a4f848dae7", - "0x25c2fa0a8a882e84cdd10cbd62c3f00eaa495ae23489b44d7b9e4c9fa2eceaf6", - "0x0309b16ccd13e4d8869edd81389242569e05176f230761d5f5c21fbff4906161", - "0x12557a565889a5642a70b3347be51e5f70d5a19400930d2c092ad6e5364a489f", - "0x1a5a45c4339dbc79b3d84c82f69f71b287997d9a47b2a1a721af635ac17a879e", - "0x156e62a3536f637f8d258ba114b3b08b698ba9203aed28b2a76d5240dd312d65", - "0x0bf503faeae51d0863c268fab4a9b886c772dfdc03ff3597f57898847a830c28", - "0x279dcee5555028129c7f4591c99d446d0a685de36a42b34aa3918cbbda3688d1", - "0x134291febbbabcab21b365a66de96abe76385e0d405bcad17a90b4df45d615c5", - "0x0c9a3ae01335f4b35ff18fb2ee0551ed093be213881afa6632aad55eef63587c", - "0x275f403bcf600f4acd7b79ca1ee31d6c772de825900aad943ebb40fa2eccc0ee", - "0x2eb885a6833595e4c2397beddb31688194d011091b0719838d7b1ebcaee96dab", - "0x1456efbab4fc9581ad4fa9029b91d3997fbcd6f5866240ff5855377dc3471ee8", - "0x21fac92a4faa84529df79407657bc8dac53ad1d376018e1df1d698dc93ca83ac", - "0x244c20d583735d68ccc37bed7e878729bcf762d5c9f23bc71d58368d829b9967", - "0x0190ca6818740838b1727b494fc512abb902002c5ba314c25cc3006b693a9caf", - "0x13056bc5ae8a5d0bccdad585d84caa55b34c209d54234a9bc332d00e7d699fb4", - "0x210ad436afe85067004e534e467b12b065d21062a06d9f441bb74fae23cc7d96", - "0x0195658a7602bc8db47c2a383b65a456f67521045ce0680aafb734f5e186bbea", - "0x038d367d0877007ad0141c5a68c5363eec3483ae908e66a6539cfc2d7f31c36c", - "0x0e397c5e7a847ca5e5027c5b5ebd03d2767a461d927763667ff43584dc31d831", - "0x0000000000000000000000000000009a6eeda9ee8db851800319cb992406b988", - "0x000000000000000000000000000000000021da314c7b771ce486c97c87bafe2d", - "0x000000000000000000000000000000fabc1e7567e9a19392425bcd7bc72fe4b4", - "0x000000000000000000000000000000000029432a06eed8669a9bc74a0681783b", - "0x00000000000000000000000000000080ffa4294e16ad616eb87207685bcf6709", - "0x000000000000000000000000000000000012f785b140d229a56b6883a0a30219", - "0x0000000000000000000000000000006bd8ef038234662cf7fa53330a4144c9a7", - "0x00000000000000000000000000000000001bb2fda6ee1d62ab10b84e7db98326", -] +# verification_key = [ +# "0x006fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd310", +# "0x0000000000000000000000000000000000000000000000000000000000002000", +# "0x0000000000000000000000000000000000000000000000000000000000000005", +# "0x0000000000000000000000000000000000000000000000000000000000002000", +# "0x0000000000000000000000000000000000000000000000000000000000000001", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x0000000000000000000000000000000000000000000000000000000000000000", +# "0x000000000000000000000000000000a904b1de9ad47b61e91edf7e92d17b6bb7", +# "0x00000000000000000000000000000000002d3ba7a870ee60c8200367da6c4b21", +# "0x0000000000000000000000000000001c96168d733fc3e36b92ebcf10c0cb2f04", +# "0x000000000000000000000000000000000021eb21934504526eda8379c3889cfd", +# "0x0000000000000000000000000000002f60152775671437b19a6605a23ab2450d", +# "0x0000000000000000000000000000000000094f46605db7eaebc318a1d6eb0a13", +# "0x000000000000000000000000000000576808b58acd54b5177b3c99d034bb9dba", +# "0x000000000000000000000000000000000026b9a55104cb174c15dcbf67fc20a0", +# "0x0000000000000000000000000000002d7e6c91b2d26100a77d60e5234f6e8211", +# "0x00000000000000000000000000000000001b034f950be2961221b01094798b59", +# "0x000000000000000000000000000000d493bda45c0b79d493cac0ec3d355e645b", +# "0x00000000000000000000000000000000000e07368208a1c7dffac6f8a0f30cb7", +# "0x00000000000000000000000000000085da19557d2c1954f8e4b50c8f9f416cb8", +# "0x000000000000000000000000000000000028f437ec8d2a42df2a711764ce675a", +# "0x00000000000000000000000000000053eebb686a574202f7a6e7056dac4e6a04", +# "0x00000000000000000000000000000000000a30a2af6d9faaf84d75107090fbb8", +# "0x000000000000000000000000000000a5c526253b5d7fe5bc03090f882512cf51", +# "0x00000000000000000000000000000000001264282b9bdf8043ad67c553d11486", +# "0x000000000000000000000000000000892d49bcae8a30f909f5e27198818422ef", +# "0x0000000000000000000000000000000000044c1cf862883cc720de3bf1a65158", +# "0x00000000000000000000000000000063bb9b6be191ad0333a01860021474652e", +# "0x000000000000000000000000000000000021d4a4fbf4255ec22363c0e67fddcd", +# "0x00000000000000000000000000000031df120c8c2cdaa1deced300e262a41a59", +# "0x0000000000000000000000000000000000127f2963c9cc3e46c9b2a81f010566", +# "0x00000000000000000000000000000055b3eb94ad7db1cebf2493787119372bf2", +# "0x0000000000000000000000000000000000125ef4e2acb74a4d7e1746b1cb3556", +# "0x000000000000000000000000000000b6e69abc23cbd3ea2b7e0ac8e44f500473", +# "0x000000000000000000000000000000000012a37dea2c03430ee09cfaf0dab3b7", +# "0x00000000000000000000000000000091c4b58c9466db7519e549de29653f7e08", +# "0x000000000000000000000000000000000005da324c9f8c5928b073bd5d3d4b0f", +# "0x000000000000000000000000000000b6cc35b21df59fb4e2a36cefe98fe936c4", +# "0x0000000000000000000000000000000000135878d2105778eaba1a0023a84035", +# "0x000000000000000000000000000000e648cd91b86f4b17f30e4e62110f41f410", +# "0x00000000000000000000000000000000001c354c314e59ad314b5388a1feb73d", +# "0x000000000000000000000000000000b06b91150e48b16fa9a3d52188b430447f", +# "0x000000000000000000000000000000000018b19ba5b1ef0342f198ff0ef41bab", +# "0x000000000000000000000000000000cc6b57ed37a72741fd60d4a9c9de019013", +# "0x000000000000000000000000000000000012343e6875fb97c8dd7ba0515caa0b", +# "0x000000000000000000000000000000a7e527a7eb6b1ae11fe00e4c5277f9a685", +# "0x0000000000000000000000000000000000029ff8300c511064acecd1f509280e", +# "0x000000000000000000000000000000aba815ed47cd5327e88b0e6d4d960841be", +# "0x0000000000000000000000000000000000298d7dd2078f23d81794a103c6a939", +# "0x000000000000000000000000000000adcc03754ce27c5cb859e0e7ac9689ed91", +# "0x00000000000000000000000000000000001b5b68b99135eae353f5548c9b51ee", +# "0x00000000000000000000000000000084f5b77a5b58efd058ba2665c6b6b1ac34", +# "0x00000000000000000000000000000000000eca3879d07d56b03547f5918dbbcf", +# "0x000000000000000000000000000000c284df7c18c6ae5283b6f8129f92ed472d", +# "0x000000000000000000000000000000000015f16fd4eb9aa6666014196d6702fd", +# "0x000000000000000000000000000000752ba2765db2aac10ebdde6d0954088ddb", +# "0x000000000000000000000000000000000020314bbb4fa0afb75f05ccbbb69e0d", +# "0x0000000000000000000000000000003c2f0dafe942b951991059b7c66f56f833", +# "0x00000000000000000000000000000000002992687a5ef7b76ef90090489c3598", +# "0x000000000000000000000000000000767b4ae549b9aa953c610e38d4b3351ed5", +# "0x0000000000000000000000000000000000221ae6adc6ffe610b699626477c68d", +# "0x000000000000000000000000000000b1b18973b282233d3c6e59746e038ca762", +# "0x00000000000000000000000000000000001607fb50cb21a1584e26d3de279356", +# "0x000000000000000000000000000000031738dc11c806fc626e06f3c528f261d1", +# "0x000000000000000000000000000000000004058b5c321f1d0de7302f994ef5b0", +# "0x000000000000000000000000000000e6e99bd35fbcabda70289996fea3a93011", +# "0x00000000000000000000000000000000000db7c40d801d2e7eac001a5673c3cd", +# "0x0000000000000000000000000000004994438a00d1ab228927f908ccfcf2ed3d", +# "0x0000000000000000000000000000000000237c83789d39d8459848d87929a49e", +# "0x0000000000000000000000000000008725eb45c8e1888226f2bcc036e0d6a698", +# "0x000000000000000000000000000000000009d3b1fef691b49a440d6a0ad2be80", +# "0x0000000000000000000000000000004ad874e52a05928aa2b170cc2b63c274ef", +# "0x000000000000000000000000000000000010c9d5ae2475ab1b23571f638477ca", +# "0x000000000000000000000000000000c690acbf94666d3cdb1700cf7aad52ad26", +# "0x00000000000000000000000000000000000eb136ae272592f98cc23b90dd9b9e", +# "0x0000000000000000000000000000006dfe9ae4650c42e2d748c4a41f31ef3f79", +# "0x00000000000000000000000000000000002cc60738774946a2165785da782965", +# "0x000000000000000000000000000000b372175007e1d700a6c6dccf7725a68cf4", +# "0x0000000000000000000000000000000000055b0ef271f117387a3e661982046e", +# "0x00000000000000000000000000000030c29017ffa425c6869ff399db0e9adb6d", +# "0x000000000000000000000000000000000029379efcf5b36e94fa459fcf11803e", +# "0x000000000000000000000000000000bed1592b719b28e44dc87b6ad1884f642c", +# "0x00000000000000000000000000000000000d0037fb7889608353203ef391d7a1", +# "0x00000000000000000000000000000021a91fa2bd116913d763836e62dbb9957f", +# "0x000000000000000000000000000000000029cc2825f5f92281f1c7a3df846304", +# "0x000000000000000000000000000000e4a765d9dccfd5af2cc8d69af2ece343a3", +# "0x00000000000000000000000000000000001242a3f2f4fec5433e22394c4541b1", +# "0x000000000000000000000000000000f9992678a973b8fb38c824d0c9a6d14010", +# "0x00000000000000000000000000000000001a146c1b754ee0eb69e6895b7dd9bf", +# "0x000000000000000000000000000000c2fc1876673fbae3031dc825559b61f6dc", +# "0x00000000000000000000000000000000002d45c6df9b1a2d830fb34f1519341e", +# "0x0000000000000000000000000000007a72745061f1f059046fd03f84564e5d7a", +# "0x000000000000000000000000000000000012592c8f38051aaf92a955aa17ae75", +# "0x000000000000000000000000000000081c6ba09203e3e0d874f8bc31e6a0ec40", +# "0x00000000000000000000000000000000000cdbf1a771f6eb78964a939acddeb9", +# "0x000000000000000000000000000000b66e472a0cfd42cc6313ec34ff6882e4dc", +# "0x00000000000000000000000000000000000ebaed1a9a0773ce3a62637ea9d53a", +# "0x000000000000000000000000000000d2a2bfd3e7ac5860e62f2495a5e792d513", +# "0x000000000000000000000000000000000022ab28abcec226916d0c7258ba9d2d", +# ] +# proof = [ +# "0x000000000000000000000000000000000000000000000000000000000000000a", +# "0x00000000000000000000000000000041a4436085f0bbbf1e0985e913afda1401", +# "0x00000000000000000000000000000000002264cc0566827b86010670f212f074", +# "0x000000000000000000000000000000a2c96ba30333fe9266940dfcf43abc8c7f", +# "0x000000000000000000000000000000000024238f050204649a393be6165e7bab", +# "0x000000000000000000000000000000929d1592953294f4a63b8656bd230c618c", +# "0x00000000000000000000000000000000001851a2f71fd3993807c7db6b90592f", +# "0x0000000000000000000000000000004f1efe1de420feb5c333bc07b83c47e819", +# "0x000000000000000000000000000000000017a19a0f19ca0e051dd9e2a16de93d", +# "0x0000000000000000000000000000002bea92bb443df918ac177ae0e93a33b3e4", +# "0x000000000000000000000000000000000027c3f3ce03b7d3bfaf4133a24a3168", +# "0x0000000000000000000000000000007460f0846f2f6f749a8869d62c6fe6bdc6", +# "0x0000000000000000000000000000000000247699da015ef6f32ce39bf13ff7aa", +# "0x000000000000000000000000000000b22221217d14acf7d97536a75249216d22", +# "0x0000000000000000000000000000000000203d37905bc6ea5ceab7509ace4a8d", +# "0x000000000000000000000000000000688b19e5f5d7e5ac0a1355210c43072e91", +# "0x00000000000000000000000000000000002d088977dcdaae88a793f241c07af5", +# "0x000000000000000000000000000000f212fd497e11adae13146d40414c7427e7", +# "0x000000000000000000000000000000000000d873a13aa189a9afde7ce03a4313", +# "0x000000000000000000000000000000131faa60a2d2a9f4121b8d24ee93502bff", +# "0x0000000000000000000000000000000000016dea32d8aafdc1ad3b512c2670c6", +# "0x00000000000000000000000000000044b1289c57da6df57d0b69544a115e431a", +# "0x00000000000000000000000000000000002919c687faaf9a8e5dd1315521dbba", +# "0x000000000000000000000000000000fe86dea0851b7ec3772b7e534188f36af1", +# "0x00000000000000000000000000000000001d6c22cca133cb2809a31b360cf420", +# "0x000000000000000000000000000000b0e0e3f91b3d432416803172aefbf01363", +# "0x00000000000000000000000000000000000b12bfac0c4fa9d70b37fa76aae6f7", +# "0x0000000000000000000000000000009f9d715e0f7780332bdb1bf4f5a06cfe8f", +# "0x000000000000000000000000000000000001c4b9ce0f94706c1fc5d3c2bc8e26", +# "0x000000000000000000000000000000a9873af0671480f16068fbc03aab9a1f9f", +# "0x000000000000000000000000000000000029fae08456e5728f0e5075afcf4f70", +# "0x000000000000000000000000000000e0d468d42400401d36f51aded525ffb22b", +# "0x0000000000000000000000000000000000096458c398416375134c68f44d9a56", +# "0x000000000000000000000000000000dda81c1a311a2086a47deb54219e5437c1", +# "0x00000000000000000000000000000000002b89f2f116a2c9f3ead912193a277c", +# "0x00000000000000000000000000000051892ab6c7404ed5f739b7c9d8aa95c6de", +# "0x00000000000000000000000000000000000be6fe3e88b639a21e56e4c3ba13df", +# "0x0000000000000000000000000000007cd9f7bad73b7f779d7b42476025ca9746", +# "0x00000000000000000000000000000000000f9920532057046dd7baf48b0f7773", +# "0x000000000000000000000000000000da395cdb52d239c40df3438a8b69c9f9a9", +# "0x00000000000000000000000000000000002b987703591e685c7f767454d512a8", +# "0x0000000000000000000000000000007080feb46b784c4a15624c46556499344a", +# "0x00000000000000000000000000000000001d85724a6eece0575f6b9ff651f0be", +# "0x000000000000000000000000000000015578ceed71702771f6671972d6b7e849", +# "0x00000000000000000000000000000000002e1839a7888333244d68f8bffac213", +# "0x1bcef727b212b141c7ffca149d29048e7ced8418ca33bf031d6e01434e44c582", +# "0x305579ec1c47ae8f0ece00ab82815e3b6eec90bb3464e327847b8356f39ab0ad", +# "0x0f261b4cdcc94eb8b286569f9181f5894b41b6cf94c62985be9407d46ded02f6", +# "0x20d7b76b31fea396839f3e67b12080f073d6857612ccd665a16b7bd1467249b4", +# "0x15b575ec49753203ef727c7605e25d403de1d289a36d66c88bed4ddb2fac9b3e", +# "0x2df93c83d36c93e86c11d350803e768c61d5c349f0366a8057f5606954024076", +# "0x000c8a8dead64553b703db8d06196cf1bcac298331e1855dc4a8d55ad2552936", +# "0x2d96ef9203dc156889a6cd692c9284df56470da31c502dd14cf19f5be5b0a31d", +# "0x03d67b5d53bf5669a52c5e84ee1495bdb7380aef537af759c99697532fef0660", +# "0x17122495e511485137dfa0f178b7af99186c461cfd1a10070f2077c4ef69cec5", +# "0x08838fd5cb54dfb07dc3a79eb5853e5e5c34ea847041bb6d926e8c5a327303f1", +# "0x2c8f85922c7042e0e2e930210d581d1841bb45aaafcd31bc702376ae0601fb79", +# "0x13e3c35d063e846d00b67c903c3a81e3493d6164094f0aa90960be5417d53f98", +# "0x08f152659198b2068371ca45bbe13ccd932d7759a53dbc8445dcbad87e9ca52d", +# "0x27ccd695f868a3ff6ba7142eff1c3eab4131b2d0f02cff43c57c669e19f02b27", +# "0x06221a2b8b87eaa713d81ff6e078ff587c84e9b47912e41406a270e5aa7cb7c5", +# "0x119183d82269285122903301f9bfa121afbba9118521c11a1674ece72ba70514", +# "0x16090de7394916e410d3743df6774ba9f50facd0f76b2f2a95d38cf5896cb00f", +# "0x1481997b4e2cde02201171a8f47d56522a46eaf03434d561add4e5b84b7513e3", +# "0x289fc2bf7064cc3dbe83a70a2be6348f2283cea02833bc94f4ef81b3f58a2a59", +# "0x0aca68f94e715450366d1db8cdbcedcd8bea965dbc456051159988a4f848dae7", +# "0x25c2fa0a8a882e84cdd10cbd62c3f00eaa495ae23489b44d7b9e4c9fa2eceaf6", +# "0x0309b16ccd13e4d8869edd81389242569e05176f230761d5f5c21fbff4906161", +# "0x12557a565889a5642a70b3347be51e5f70d5a19400930d2c092ad6e5364a489f", +# "0x1a5a45c4339dbc79b3d84c82f69f71b287997d9a47b2a1a721af635ac17a879e", +# "0x156e62a3536f637f8d258ba114b3b08b698ba9203aed28b2a76d5240dd312d65", +# "0x0bf503faeae51d0863c268fab4a9b886c772dfdc03ff3597f57898847a830c28", +# "0x279dcee5555028129c7f4591c99d446d0a685de36a42b34aa3918cbbda3688d1", +# "0x134291febbbabcab21b365a66de96abe76385e0d405bcad17a90b4df45d615c5", +# "0x0c9a3ae01335f4b35ff18fb2ee0551ed093be213881afa6632aad55eef63587c", +# "0x275f403bcf600f4acd7b79ca1ee31d6c772de825900aad943ebb40fa2eccc0ee", +# "0x2eb885a6833595e4c2397beddb31688194d011091b0719838d7b1ebcaee96dab", +# "0x1456efbab4fc9581ad4fa9029b91d3997fbcd6f5866240ff5855377dc3471ee8", +# "0x21fac92a4faa84529df79407657bc8dac53ad1d376018e1df1d698dc93ca83ac", +# "0x244c20d583735d68ccc37bed7e878729bcf762d5c9f23bc71d58368d829b9967", +# "0x0190ca6818740838b1727b494fc512abb902002c5ba314c25cc3006b693a9caf", +# "0x13056bc5ae8a5d0bccdad585d84caa55b34c209d54234a9bc332d00e7d699fb4", +# "0x210ad436afe85067004e534e467b12b065d21062a06d9f441bb74fae23cc7d96", +# "0x0195658a7602bc8db47c2a383b65a456f67521045ce0680aafb734f5e186bbea", +# "0x038d367d0877007ad0141c5a68c5363eec3483ae908e66a6539cfc2d7f31c36c", +# "0x0e397c5e7a847ca5e5027c5b5ebd03d2767a461d927763667ff43584dc31d831", +# "0x0000000000000000000000000000009a6eeda9ee8db851800319cb992406b988", +# "0x000000000000000000000000000000000021da314c7b771ce486c97c87bafe2d", +# "0x000000000000000000000000000000fabc1e7567e9a19392425bcd7bc72fe4b4", +# "0x000000000000000000000000000000000029432a06eed8669a9bc74a0681783b", +# "0x00000000000000000000000000000080ffa4294e16ad616eb87207685bcf6709", +# "0x000000000000000000000000000000000012f785b140d229a56b6883a0a30219", +# "0x0000000000000000000000000000006bd8ef038234662cf7fa53330a4144c9a7", +# "0x00000000000000000000000000000000001bb2fda6ee1d62ab10b84e7db98326", +# ] public_input = "0x0a" -key_hash = "0x02163b301299d5e495a7b4aab1645bcbb38c5253c675217990f17b5de572cf02" +# key_hash = "0x02163b301299d5e495a7b4aab1645bcbb38c5253c675217990f17b5de572cf02" input_aggregation_object = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"] + +proof = ["0x000000000000000000000000000000000000000000000000000000000000000a", "0x0000000000000000000000000000003605bd784b10fa108f75bf902992104090", "0x0000000000000000000000000000000000079182e3d1d9ac9365459e2ee593b2", "0x0000000000000000000000000000005eff62801d347b6585e34ca1bdbcfcc44e", "0x000000000000000000000000000000000028e690977c619ad1a94cd2e53b9090", "0x0000000000000000000000000000001e2186e2d16f9ee5b9f34901f3a15647dd", "0x00000000000000000000000000000000002e124c3494ac81cdd8eed2890f72be", "0x000000000000000000000000000000edd9235d3d66f2c7740296f667bbbb7cf1", "0x000000000000000000000000000000000011a4937908fa06f0e760b1f274b438", "0x0000000000000000000000000000001467c7829724b2813c4d424b3d3c6b815f", "0x00000000000000000000000000000000000946441492ff70f55d34186ca89de7", "0x0000000000000000000000000000003a2c7944ca2aa04f1abb13d1178a57955c", "0x000000000000000000000000000000000000426ed23d57cb6727bf7dc3549693", "0x0000000000000000000000000000006765bba55f7629f54858baa7e5ccb7168d", "0x000000000000000000000000000000000029e43ebaf8f62f50d4b355a5fcc922", "0x000000000000000000000000000000d56d91e5ba6a69bd196ec92ab0bea93647", "0x0000000000000000000000000000000000148f46afa46543255a81914c5279e1", "0x000000000000000000000000000000ee5f9749910d8a63b33bb369c834a500bf", "0x00000000000000000000000000000000001011e1e2d76750fbcceebaf2157840", "0x00000000000000000000000000000036268dff2bc112ecc0322c88579390e0b3", "0x00000000000000000000000000000000001ad5728e6bf12a82af01eeb1487802", "0x000000000000000000000000000000b6c4596b778ab2404672e07fa0ac19ec86", "0x0000000000000000000000000000000000027d448a20e433003295d074b0f0e0", "0x00000000000000000000000000000018c4347708e93a0e2fc7f190cebc6fe036", "0x00000000000000000000000000000000002d5c3527dde0816ee1836500a5d420", "0x000000000000000000000000000000b33906cbc4e9badec6bd61f0b100df45b8", "0x00000000000000000000000000000000002c7513e6507493550d40bfac85e933", "0x0000000000000000000000000000004e3aae0b73031a38513038218da180cab7", "0x0000000000000000000000000000000000060debf0c1bbb74e4ddbf554f8b5d3", "0x0000000000000000000000000000006efb6cb32ce7e61243d2ed91f223bdb20d", "0x000000000000000000000000000000000020de0c23d10cd268a17fc641a024e2", "0x000000000000000000000000000000db92550b30be7d5a944d42d1526f970800", "0x0000000000000000000000000000000000002b2891ff35b817850407610ce864", "0x0000000000000000000000000000008ab82ffe538b09d1b30ae1045af6d9ece4", "0x00000000000000000000000000000000001ce120441dae2f06f06b5f1b7f0571", "0x00000000000000000000000000000012306dfba880f78fdcfd198e287df3dd00", "0x0000000000000000000000000000000000115ff991e4ecec23a5f363517f9fec", "0x000000000000000000000000000000c156a25d190e4a010a18b8185ef311bfc2", "0x0000000000000000000000000000000000067625706cdd46fced6af42e57aa31", "0x000000000000000000000000000000ebf11762356fedebd5c414875b778d08bc", "0x00000000000000000000000000000000000ee3f392c42f0cf2ef31a24211dc04", "0x00000000000000000000000000000073c2e8b17c897a26a491dae2e84031c2c7", "0x0000000000000000000000000000000000074f13ce4cd700a6e96ad5beb82459", "0x0000000000000000000000000000005ec1a9ddf3c2a0339a2cc1af9d4c554d04", "0x00000000000000000000000000000000000501957be5a070a890e03df0335cb5", "0x180f9ffb422a88f9e94ac05aee10e44dc93ff6dbc500075f0faf74895021e0df", "0x2b94b3f53b48e388fa3d4993177a0fc1660b22a6702b88b8b72909ddb6f615dc", "0x253c56360f9bb22d07c70c53862b4711448aab506c2e3e31fad128690cbbec5a", "0x018b802461f551a53b4b7fd18f5a4a760bd1df9985d3d471b29d261527b00e62", "0x288de370d960235736d4eb9f7e7818ba138d0b7cd49d8dc918de0538f012d96c", "0x2764ef9c90cab3673c0772887397b4b7c04d79d5b9731fd5c7d82ef62cbf9a1f", "0x0712ff6793ebb0b0668944d581a14d1737d859b12331268513d4074dbca6149f", "0x2c9d3f3257f167c8c6e5d4a1c72538c270960b48608ad5cf0d1e1b8d93c94d08", "0x20f3f943daa1d0f0ddd93fa755e8600abe8a9ad70fc9cb506c959d48088c0d85", "0x11ecad3379384fad7b73325820ca4f41dff8cbb4d2c0df6d20406dc7bd5174a0", "0x0fd924cb4584b3f6df037cdd6a2c26673582e19e8431ea740e89764000602f11", "0x21d3137bf8c81d05280afd4721798d86c8bac4efac0a2cc6a8ecebaf37af0bc7", "0x2455e7d6be911a29a32ecc3c82715427f5aff400642b16aa4f39f53e411e7602", "0x072bd713f54a2ef55f36ef168b2bdc70965e872e001be321205117be7017724e", "0x0c1f64a0e7a3e08560b43c72325d3a64b26289aff1d84570672f0a94389a6a10", "0x270063ac9000cc565d0728b2e5b1de213d3d508e7e91be481ab9a332c8340a33", "0x25f5499686fb5f77c4a9b3b27f0c97a8cdcc95080d5471954f0a7d99c3c80b55", "0x26820d37b4c651c5d2fa5bc38b0bda4ab5328ebbb73ba78a9a17dc52e0bd3409", "0x0576c995eb08940dbb447e9c984a0da18d062cfad767d6859d683503fe13d0e0", "0x143c44dbccb1dc104d924db44f8d25c9df921399417338ab9f8c64bf4b4f444e", "0x0b5a48b1162c1e346802ab38dfb7b6fa071552170ff097a1df815875cf38491b", "0x1798a9c7d32e392207030330c45c950d61ea9dd9ca70a07cd7d6bfdff617760d", "0x28c912e5129036cb39172d8e8b6833ee7417fed70776535408d9184d5ec3d9b3", "0x2d3e00aea2f0f6107d40e8719b8d0ee62ec41de4ae824b61f05e79437fbf9f90", "0x20bdc72859e03f1ecad66ab07dd2374ea098eb67d721f217549ec19cadac10ff", "0x012205502e172b2ee14b2b8329802628c82fca888b226fb8647aa5710aa650e4", "0x1cc0a2c97dd57937d142a29f0321c23feec6b2c42dae8d2673e7727a3e59da9d", "0x22821946637280bcfe3cdc68f6199285d5984c964fbf507c061e1e735a6dde0f", "0x24485e955fface253303598088fab224b656815d2ab9b9cfed25858e4513b049", "0x11785ca28b175f273428f9e3e88e0749f9a79e8313e2ab18aab7133e9e498d3d", "0x158d4815958ec5b62815984596965bd035bbae0b9ab43bf27c909a6870c536d5", "0x06a090e3c4e140f005709a1ec2c4578f4eb527eec59ad764317c0d423eb774f4", "0x2c0a940acdb1f4849c10f8265711614f09ae2a3f64d4a625799a0c3bc2932a90", "0x246eed25c919832279df0bb2366520ab038c81e3d186289b37113bbc648f8826", "0x298865d048017afb0b28604eaf33d24ffaacc547bc1d5b0c925b472437309026", "0x0a13dc472f0cd5477e1a8bab96b97da23c8f715d28c40bb71e01594893a67037", "0x07d5694314a48513013c684661e39f9f5fe3ed5ab7284299bdfe12d062118c8b", "0x1d560f2cb22815b9afa3c3a15143f5fe1d14275b0c2fe34b2b3b4c5ab329c095", "0x1389a993e59ba69c0b94170a45b17811ac4945d66fa31576b7a4130ace04dc0a", "0x074a6bcf69542eb84d2e3bb67004391650e339b683cc067aadfeb9d1830b58c6", "0x2a911a141086ae4909d39f3b770e834b14e90e74a56ce19e94c444eda43b3d6b", "0x000000000000000000000000000000354c43d822f8540138390c7e7a74ff3684", "0x00000000000000000000000000000000001cea2728d37fe22cb1ed06226a1316", "0x0000000000000000000000000000004f0792a24b610e27065dce8c964fa83d45", "0x0000000000000000000000000000000000171b5ca5c86e0c1fe785b20a09b8ba", "0x00000000000000000000000000000020cb95424c60c1be50aaf3b12500c7045e", "0x00000000000000000000000000000000002b6cedbf9ee921c34d9181dec84410", "0x0000000000000000000000000000003f34c36812654767666c9c59339b0b790e", "0x000000000000000000000000000000000014d9d9a27f8cd1add117b834c3422e"] +verification_key = ["0x006fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd310", "0x0000000000000000000000000000000000000000000000000000000000002000", "0x0000000000000000000000000000000000000000000000000000000000000005", "0x0000000000000000000000000000000000000000000000000000000000002000", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000003404be1595e5504cc605ac8ef3860aa700", "0x000000000000000000000000000000000018f7f7038aa55c168070e5fa71c711", "0x0000000000000000000000000000007737623180d6db14eedd88a292c32a66ed", "0x000000000000000000000000000000000002cb868dc42d2272ed05cea780a3b2", "0x0000000000000000000000000000002f60152775671437b19a6605a23ab2450d", "0x0000000000000000000000000000000000094f46605db7eaebc318a1d6eb0a13", "0x000000000000000000000000000000576808b58acd54b5177b3c99d034bb9dba", "0x000000000000000000000000000000000026b9a55104cb174c15dcbf67fc20a0", "0x000000000000000000000000000000771e7c3d88f1a9363e1c19c8350c85e3cd", "0x0000000000000000000000000000000000011b26f3ec083ed471c710105af3cd", "0x0000000000000000000000000000001719c7ef326dc9b65b7404014c0a192149", "0x00000000000000000000000000000000001c448abfcf36e5020a79c88d61ebbc", "0x00000000000000000000000000000085da19557d2c1954f8e4b50c8f9f416cb8", "0x000000000000000000000000000000000028f437ec8d2a42df2a711764ce675a", "0x00000000000000000000000000000053eebb686a574202f7a6e7056dac4e6a04", "0x00000000000000000000000000000000000a30a2af6d9faaf84d75107090fbb8", "0x000000000000000000000000000000a5c526253b5d7fe5bc03090f882512cf51", "0x00000000000000000000000000000000001264282b9bdf8043ad67c553d11486", "0x000000000000000000000000000000892d49bcae8a30f909f5e27198818422ef", "0x0000000000000000000000000000000000044c1cf862883cc720de3bf1a65158", "0x00000000000000000000000000000063bb9b6be191ad0333a01860021474652e", "0x000000000000000000000000000000000021d4a4fbf4255ec22363c0e67fddcd", "0x00000000000000000000000000000031df120c8c2cdaa1deced300e262a41a59", "0x0000000000000000000000000000000000127f2963c9cc3e46c9b2a81f010566", "0x00000000000000000000000000000055b3eb94ad7db1cebf2493787119372bf2", "0x0000000000000000000000000000000000125ef4e2acb74a4d7e1746b1cb3556", "0x000000000000000000000000000000b6e69abc23cbd3ea2b7e0ac8e44f500473", "0x000000000000000000000000000000000012a37dea2c03430ee09cfaf0dab3b7", "0x00000000000000000000000000000091c4b58c9466db7519e549de29653f7e08", "0x000000000000000000000000000000000005da324c9f8c5928b073bd5d3d4b0f", "0x000000000000000000000000000000b6cc35b21df59fb4e2a36cefe98fe936c4", "0x0000000000000000000000000000000000135878d2105778eaba1a0023a84035", "0x000000000000000000000000000000e648cd91b86f4b17f30e4e62110f41f410", "0x00000000000000000000000000000000001c354c314e59ad314b5388a1feb73d", "0x000000000000000000000000000000b06b91150e48b16fa9a3d52188b430447f", "0x000000000000000000000000000000000018b19ba5b1ef0342f198ff0ef41bab", "0x000000000000000000000000000000cc6b57ed37a72741fd60d4a9c9de019013", "0x000000000000000000000000000000000012343e6875fb97c8dd7ba0515caa0b", "0x000000000000000000000000000000a7e527a7eb6b1ae11fe00e4c5277f9a685", "0x0000000000000000000000000000000000029ff8300c511064acecd1f509280e", "0x000000000000000000000000000000eb82b47185154284553789f289db5818b6", "0x00000000000000000000000000000000001016abd0ae2334d050428e797067df", "0x000000000000000000000000000000fc433da4e3998d5adde582a6df90efffd3", "0x000000000000000000000000000000000020d603d61b3c2e0779dfdacf85432c", "0x00000000000000000000000000000038bf08fd657ed34b579855216db4c51e0e", "0x00000000000000000000000000000000001362b7a10dfb405d68f831ba5b1f1e", "0x00000000000000000000000000000018511419fe4ece0a80041eee0eb05974bd", "0x00000000000000000000000000000000001d13a06c7ac45280962393773ded47", "0x0000000000000000000000000000002dce77d4a83bda0ed9e93f8c382a9a1a83", "0x0000000000000000000000000000000000223d882d759fc08bac197c0c0b4a0c", "0x000000000000000000000000000000e797720f53bf212d66d2b15866404d04dd", "0x00000000000000000000000000000000001f7a89c97f3459327900e148f7c021", "0x00000000000000000000000000000095cf09e567947e95b25161db1a6493a63e", "0x00000000000000000000000000000000001ca18c9d8bd644fc8080ddcf840839", "0x000000000000000000000000000000b65e49b9800ebf970b5d5810cca03feb48", "0x00000000000000000000000000000000000791f68e28d22fabb3f7c95b2872c3", "0x000000000000000000000000000000031738dc11c806fc626e06f3c528f261d1", "0x000000000000000000000000000000000004058b5c321f1d0de7302f994ef5b0", "0x000000000000000000000000000000e6e99bd35fbcabda70289996fea3a93011", "0x00000000000000000000000000000000000db7c40d801d2e7eac001a5673c3cd", "0x0000000000000000000000000000004994438a00d1ab228927f908ccfcf2ed3d", "0x0000000000000000000000000000000000237c83789d39d8459848d87929a49e", "0x0000000000000000000000000000008725eb45c8e1888226f2bcc036e0d6a698", "0x000000000000000000000000000000000009d3b1fef691b49a440d6a0ad2be80", "0x0000000000000000000000000000004ad874e52a05928aa2b170cc2b63c274ef", "0x000000000000000000000000000000000010c9d5ae2475ab1b23571f638477ca", "0x000000000000000000000000000000c690acbf94666d3cdb1700cf7aad52ad26", "0x00000000000000000000000000000000000eb136ae272592f98cc23b90dd9b9e", "0x0000000000000000000000000000006dfe9ae4650c42e2d748c4a41f31ef3f79", "0x00000000000000000000000000000000002cc60738774946a2165785da782965", "0x000000000000000000000000000000b372175007e1d700a6c6dccf7725a68cf4", "0x0000000000000000000000000000000000055b0ef271f117387a3e661982046e", "0x00000000000000000000000000000030c29017ffa425c6869ff399db0e9adb6d", "0x000000000000000000000000000000000029379efcf5b36e94fa459fcf11803e", "0x000000000000000000000000000000bed1592b719b28e44dc87b6ad1884f642c", "0x00000000000000000000000000000000000d0037fb7889608353203ef391d7a1", "0x00000000000000000000000000000021a91fa2bd116913d763836e62dbb9957f", "0x000000000000000000000000000000000029cc2825f5f92281f1c7a3df846304", "0x000000000000000000000000000000e4a765d9dccfd5af2cc8d69af2ece343a3", "0x00000000000000000000000000000000001242a3f2f4fec5433e22394c4541b1", "0x000000000000000000000000000000f9992678a973b8fb38c824d0c9a6d14010", "0x00000000000000000000000000000000001a146c1b754ee0eb69e6895b7dd9bf", "0x000000000000000000000000000000c2fc1876673fbae3031dc825559b61f6dc", "0x00000000000000000000000000000000002d45c6df9b1a2d830fb34f1519341e", "0x0000000000000000000000000000007a72745061f1f059046fd03f84564e5d7a", "0x000000000000000000000000000000000012592c8f38051aaf92a955aa17ae75", "0x000000000000000000000000000000081c6ba09203e3e0d874f8bc31e6a0ec40", "0x00000000000000000000000000000000000cdbf1a771f6eb78964a939acddeb9", "0x000000000000000000000000000000b66e472a0cfd42cc6313ec34ff6882e4dc", "0x00000000000000000000000000000000000ebaed1a9a0773ce3a62637ea9d53a", "0x000000000000000000000000000000d2a2bfd3e7ac5860e62f2495a5e792d513", "0x000000000000000000000000000000000022ab28abcec226916d0c7258ba9d2d"] +key_hash = "0x2b6e74a005fa5dd61ae599dc14f53bdf2b0643a8ebd005ab63a99e145cc81ed4" diff --git a/examples_failing/ecdsa_secp256k1/src/main.nr b/examples_failing/ecdsa_secp256k1/src/main.nr index 6ee7a98a89d..6919c2584cc 100644 --- a/examples_failing/ecdsa_secp256k1/src/main.nr +++ b/examples_failing/ecdsa_secp256k1/src/main.nr @@ -9,7 +9,7 @@ use dep::std; // - Noir should be agnostic to backends, so even though // the only backend implemented does not work properly for this, // we can still implement it on the frontend. -fn main(hashed_message : [32]u8, pub_key_x : [32]u8, pub_key_y : [32]u8, signature : [64]u8) { +fn main(hashed_message : [u8; 32], pub_key_x : [u8; 32], pub_key_y : [u8; 32], signature : [u8; 64]) { // Is there ever a situation where someone would want // to ensure that a signature was invalid? let x = std::ecdsa_secp256k1::verify_signature(pub_key_x,pub_key_y,signature, hashed_message);