diff --git a/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp index e270a46fe755..21f3c7d3b641 100644 --- a/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp +++ b/barretenberg/cpp/src/barretenberg/plonk/proof_system/verification_key/sol_gen.hpp @@ -145,10 +145,6 @@ inline void output_vk_sol(std::ostream& os, std::shared_ptr(key->circuit_type); switch (circuit_type) { - case CircuitType::STANDARD: { - return output_vk_sol_standard(os, key, class_name); - break; - } case CircuitType::ULTRA: { return output_vk_sol_ultra(os, key, class_name); break; diff --git a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp index ca28307849e1..822623d5dc95 100644 --- a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp +++ b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/add_2_circuit.hpp @@ -2,8 +2,9 @@ #include "barretenberg/stdlib/primitives/field/field.hpp" #include "barretenberg/stdlib/primitives/witness/witness.hpp" -template class Add2Circuit { +class Add2Circuit { public: + using Builder = bb::UltraCircuitBuilder; using public_witness_ct = bb::stdlib::public_witness_t; using field_ct = bb::stdlib::field_t; diff --git a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp index ff31d816301d..9646c8bbcf48 100644 --- a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp +++ b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/blake_circuit.hpp @@ -3,8 +3,9 @@ #include "barretenberg/stdlib/primitives/field/field.hpp" #include "barretenberg/stdlib/primitives/witness/witness.hpp" -template class BlakeCircuit { +class BlakeCircuit { public: + using Builder = bb::UltraCircuitBuilder; using field_ct = bb::stdlib::field_t; using public_witness_ct = bb::stdlib::public_witness_t; using byte_array_ct = bb::stdlib::byte_array; diff --git a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/ecdsa_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/ecdsa_circuit.hpp index 18e5eaac1dfc..1c24902107af 100644 --- a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/ecdsa_circuit.hpp +++ b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/ecdsa_circuit.hpp @@ -13,9 +13,9 @@ #include "barretenberg/stdlib/primitives/witness/witness.hpp" namespace bb { - -template class EcdsaCircuit { +class EcdsaCircuit { public: + using Builder = bb::UltraCircuitBuilder; using field_ct = stdlib::field_t; using bool_ct = stdlib::bool_t; using public_witness_ct = stdlib::public_witness_t; diff --git a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp index 66a429be92f0..58f750fdf6d8 100644 --- a/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp +++ b/barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/recursive_circuit.hpp @@ -14,12 +14,12 @@ using namespace bb::plonk; using namespace stdlib; using numeric::uint256_t; -template class RecursiveCircuit { +class RecursiveCircuit { using InnerComposer = UltraComposer; - using InnerBuilder = typename InnerComposer::CircuitBuilder; + using Builder = UltraCircuitBuilder; - using inner_curve = bn254; - using outer_curve = bn254; + using inner_curve = bn254; + using outer_curve = bn254; using verification_key_pt = recursion::verification_key; using recursive_settings = recursion::recursive_ultra_verifier_settings; @@ -34,20 +34,15 @@ template class RecursiveCircuit { using inner_scalar_field = typename inner_curve::ScalarFieldNative; using outer_scalar_field = typename outer_curve::BaseFieldNative; using pairing_target_field = bb::fq12; - static constexpr bool is_ultra_to_ultra = std::is_same_v; - using ProverOfInnerCircuit = - std::conditional_t; - using VerifierOfInnerProof = - std::conditional_t; - using RecursiveSettings = - std::conditional_t; + using ProverOfInnerCircuit = plonk::UltraProver; + using VerifierOfInnerProof = plonk::UltraVerifier; struct circuit_outputs { stdlib::recursion::aggregation_state aggregation_state; std::shared_ptr verification_key; }; - static void create_inner_circuit_no_tables(InnerBuilder& builder, uint256_t public_inputs[]) + static void create_inner_circuit_no_tables(Builder& builder, uint256_t public_inputs[]) { // A nice Pythagorean triples circuit example: "I know a & b s.t. a^2 + b^2 = c^2". inner_scalar_field_ct a(witness_ct(&builder, public_inputs[0])); @@ -61,15 +56,11 @@ template class RecursiveCircuit { c_sq.set_public(); }; - static circuit_outputs create_outer_circuit(InnerBuilder& inner_circuit, OuterBuilder& outer_builder) + static circuit_outputs create_outer_circuit(Builder& inner_circuit, Builder& outer_builder) { ProverOfInnerCircuit prover; InnerComposer inner_composer; - if constexpr (is_ultra_to_ultra) { - prover = inner_composer.create_prover(inner_circuit); - } else { - prover = inner_composer.create_ultra_to_standard_prover(inner_circuit); - } + prover = inner_composer.create_prover(inner_circuit); const auto verification_key_native = inner_composer.compute_verification_key(inner_circuit); // Convert the verification key's elements into _circuit_ types, using the OUTER composer. @@ -82,27 +73,23 @@ template class RecursiveCircuit { // Native check is mainly for comparison vs circuit version of the verifier. VerifierOfInnerProof native_verifier; - if constexpr (is_ultra_to_ultra) { - native_verifier = inner_composer.create_verifier(inner_circuit); - } else { - native_verifier = inner_composer.create_ultra_to_standard_verifier(inner_circuit); - } + native_verifier = inner_composer.create_verifier(inner_circuit); - auto native_result = native_verifier.verify_proof(proof_to_recursively_verify); - if (native_result == false) { + bool native_result = native_verifier.verify_proof(proof_to_recursively_verify); + if (!native_result) { throw_or_abort("Native verification failed"); } } transcript::Manifest recursive_manifest = InnerComposer::create_manifest(prover.key->num_public_inputs); - auto output = recursion::verify_proof( + auto output = recursion::verify_proof( &outer_builder, verification_key, recursive_manifest, proof_to_recursively_verify); return { output, verification_key }; }; - static bool check_pairing_point_accum_public_inputs(OuterBuilder& builder, const bb::pairing::miller_lines* lines) + static bool check_pairing_point_accum_public_inputs(Builder& builder, const bb::pairing::miller_lines* lines) { if (builder.contains_pairing_point_accumulator && builder.pairing_point_accumulator_public_input_indices.size() == 16) { @@ -166,10 +153,10 @@ template class RecursiveCircuit { } public: - static OuterBuilder generate(uint256_t inputs[]) + static Builder generate(uint256_t inputs[]) { - InnerBuilder inner_circuit; - OuterBuilder outer_circuit; + Builder inner_circuit; + Builder outer_circuit; create_inner_circuit_no_tables(inner_circuit, inputs); diff --git a/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_key_gen.cpp b/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_key_gen.cpp index 4555240febe4..a04e876e9bcb 100644 --- a/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_key_gen.cpp +++ b/barretenberg/cpp/src/barretenberg/solidity_helpers/honk_key_gen.cpp @@ -16,11 +16,10 @@ using namespace bb; using DeciderProvingKey = DeciderProvingKey_; using VerificationKey = UltraKeccakFlavor::VerificationKey; -template