diff --git a/barretenberg/.claude/skills/gate-counts/SKILL.md b/barretenberg/.claude/skills/gate-counts/SKILL.md index fccb50a8c64..ca973da012c 100644 --- a/barretenberg/.claude/skills/gate-counts/SKILL.md +++ b/barretenberg/.claude/skills/gate-counts/SKILL.md @@ -157,7 +157,7 @@ still valid. Discard stderr (`2>/dev/null`) to keep output clean. - `-t, --verifier_target` — hash/ZK settings. Relevant values: `noir-recursive` (poseidon2, ZK; default-ish for recursive noir circuits), `noir-rollup` (IPA + poseidon2, ZK — required for rollup circuits), - plus `evm`, `starknet`, and `-no-zk` variants of each. + plus `evm` and `-no-zk` variants of each. - `--include_gates_per_opcode` — adds a per-opcode breakdown. ## Proof-Size Assertion Failures diff --git a/barretenberg/acir_tests/bbjs-test/src/index.ts b/barretenberg/acir_tests/bbjs-test/src/index.ts index abc56bddff4..c6dbd6103b5 100644 --- a/barretenberg/acir_tests/bbjs-test/src/index.ts +++ b/barretenberg/acir_tests/bbjs-test/src/index.ts @@ -35,7 +35,6 @@ async function generateProof({ const witness = await fs.readFile(witnessPath); const proof = await backend.generateProof(new Uint8Array(witness), { keccakZK: oracleHash === 'keccakZK', - starknetZK: oracleHash === 'starknetZK', }); await fs.writeFile(proofPath(outputDirectory), Buffer.from(proof.proof)); @@ -53,7 +52,6 @@ async function generateProof({ const verificationKey = await backend.getVerificationKey({ keccakZK: oracleHash === 'keccakZK', - starknetZK: oracleHash === 'starknetZK', }); await fs.writeFile(vkeyPath(outputDirectory), Buffer.from(verificationKey)); logger.debug('Verification key written to ' + vkeyPath(outputDirectory)); diff --git a/barretenberg/acir_tests/bootstrap.sh b/barretenberg/acir_tests/bootstrap.sh index 6da8514ad07..344617e5ad3 100755 --- a/barretenberg/acir_tests/bootstrap.sh +++ b/barretenberg/acir_tests/bootstrap.sh @@ -196,8 +196,6 @@ function test_cmds { echo "$tests_hash $scripts/bb_prove.sh double_verify_honk_zk_proof --disable_zk" echo "$tests_hash $scripts/bb_prove.sh assert_statement --oracle_hash keccak" - # If starknet enabled: - #echo "$tests_hash $scripts/bb_prove.sh assert_statement --oracle_hash starknet" # Test rollup verification (rollup uses --ipa_accumulation) echo "$tests_hash $scripts/bb_prove.sh verify_rollup_honk_proof --ipa_accumulation" # Test root-rollup verification: outer circuit verifies two RollupHonk proofs and closes the IPA diff --git a/barretenberg/cpp/scripts/test_coverage.sh b/barretenberg/cpp/scripts/test_coverage.sh index 707cb046220..a40c7877cfd 100755 --- a/barretenberg/cpp/scripts/test_coverage.sh +++ b/barretenberg/cpp/scripts/test_coverage.sh @@ -35,7 +35,6 @@ llvm-cov-20 show \ -format=html \ -output-dir=build-coverage/coverage-report \ --ignore-filename-regex=".*/_deps/.*" \ - --ignore-filename-regex=".*/ext/starknet/.*" \ --ignore-filename-regex=".*/lmdblib/.*" \ --ignore-filename-regex=".*/vm2/.*" \ "${args[@]}" diff --git a/barretenberg/cpp/src/CMakeLists.txt b/barretenberg/cpp/src/CMakeLists.txt index 38385406b81..26c6ebcaa6a 100644 --- a/barretenberg/cpp/src/CMakeLists.txt +++ b/barretenberg/cpp/src/CMakeLists.txt @@ -92,8 +92,6 @@ add_subdirectory(barretenberg/eccvm) add_subdirectory(barretenberg/hypernova) add_subdirectory(barretenberg/honk) add_subdirectory(barretenberg/trace_to_polynomials) -add_subdirectory(barretenberg/ext/starknet/crypto) -add_subdirectory(barretenberg/ext/starknet/transcript) add_subdirectory(barretenberg/flavor) add_subdirectory(barretenberg/goblin) add_subdirectory(barretenberg/goblin_avm) @@ -168,7 +166,6 @@ set(BARRETENBERG_TARGET_OBJECTS $ $ $ - $ $ $ $ diff --git a/barretenberg/cpp/src/barretenberg/api/api.hpp b/barretenberg/cpp/src/barretenberg/api/api.hpp index 3c4569a156d..e563316ac46 100644 --- a/barretenberg/cpp/src/barretenberg/api/api.hpp +++ b/barretenberg/cpp/src/barretenberg/api/api.hpp @@ -17,7 +17,7 @@ class API { bool ipa_accumulation{ false }; // indicate whether the command is doing IPA proof aggregation std::string scheme; // the proving system or IVC scheme std::string oracle_hash_type; // which hash function does the prover use as a random oracle? - std::string verifier_target; // target verification environment (evm, noir-recursive, starknet, etc.) + std::string verifier_target; // target verification environment (evm, noir-recursive, etc.) bool write_vk{ false }; // should we addditionally write the verification key when writing the proof bool include_gates_per_opcode{ false }; // should we include gates_per_opcode in the gates command output bool slow_low_memory{ false }; // use file backed memory for polynomials diff --git a/barretenberg/cpp/src/barretenberg/bb/cli.cpp b/barretenberg/cpp/src/barretenberg/bb/cli.cpp index 44c2e044797..5fd0844a707 100644 --- a/barretenberg/cpp/src/barretenberg/bb/cli.cpp +++ b/barretenberg/cpp/src/barretenberg/bb/cli.cpp @@ -121,11 +121,6 @@ int parse_and_run_cli_command(int argc, char* argv[]) name += "\nAVM Transpiler: enabled"; #else name += "\nAVM Transpiler: disabled"; -#endif -#ifdef STARKNET_GARAGA_FLAVORS - name += "\nStarknet Garaga Extensions: enabled"; -#else - name += "\nStarknet Garaga Extensions: disabled"; #endif CLI::App app{ name }; argv = app.ensure_utf8(argv); @@ -218,16 +213,14 @@ int parse_and_run_cli_command(int argc, char* argv[]) const auto add_oracle_hash_option = [&](CLI::App* subcommand) { return subcommand - ->add_option( - "--oracle_hash", - flags.oracle_hash_type, - "The hash function used by the prover as random oracle standing in for a verifier's challenge " - "generation. Poseidon2 is to be used for proofs that are intended to be verified inside of a " - "circuit. Keccak is optimized for verification in an Ethereum smart contract, where Keccak " - "has a privileged position due to the existence of an EVM precompile. Starknet is optimized " - "for verification in a Starknet smart contract, which can be generated using the Garaga library. " - "Prefer using --verifier_target instead.") - ->check(CLI::IsMember({ "poseidon2", "keccak", "starknet" }).name("is_member")) + ->add_option("--oracle_hash", + flags.oracle_hash_type, + "The hash function used by the prover as random oracle standing in for a verifier's challenge " + "generation. Poseidon2 is to be used for proofs that are intended to be verified inside of a " + "circuit. Keccak is optimized for verification in an Ethereum smart contract, where Keccak " + "has a privileged position due to the existence of an EVM precompile. " + "Prefer using --verifier_target instead.") + ->check(CLI::IsMember({ "poseidon2", "keccak" }).name("is_member")) ->group(advanced_group); }; @@ -243,18 +236,10 @@ int parse_and_run_cli_command(int argc, char* argv[]) " noir-recursive Noir circuits (poseidon2, ZK)\n" " noir-recursive-no-zk Noir circuits without ZK\n" " noir-rollup Rollup with IPA (poseidon2, ZK)\n" - " noir-rollup-no-zk Rollup without ZK\n" - " starknet Starknet via Garaga (ZK)\n" - " starknet-no-zk Starknet without ZK") + " noir-rollup-no-zk Rollup without ZK") ->envname("BB_VERIFIER_TARGET") - ->check(CLI::IsMember({ "evm", - "evm-no-zk", - "noir-recursive", - "noir-recursive-no-zk", - "noir-rollup", - "noir-rollup-no-zk", - "starknet", - "starknet-no-zk" })); + ->check(CLI::IsMember( + { "evm", "evm-no-zk", "noir-recursive", "noir-recursive-no-zk", "noir-rollup", "noir-rollup-no-zk" })); }; const auto add_write_vk_flag = [&](CLI::App* subcommand) { @@ -831,11 +816,6 @@ int parse_and_run_cli_command(int argc, char* argv[]) flags.oracle_hash_type = "poseidon2"; flags.ipa_accumulation = true; flags.disable_zk = true; - } else if (flags.verifier_target == "starknet") { - flags.oracle_hash_type = "starknet"; - } else if (flags.verifier_target == "starknet-no-zk") { - flags.oracle_hash_type = "starknet"; - flags.disable_zk = true; } vinfo("verifier_target '", flags.verifier_target, diff --git a/barretenberg/cpp/src/barretenberg/bbapi/bbapi_shared.hpp b/barretenberg/cpp/src/barretenberg/bbapi/bbapi_shared.hpp index dc7a2a8b061..f98276b0c40 100644 --- a/barretenberg/cpp/src/barretenberg/bbapi/bbapi_shared.hpp +++ b/barretenberg/cpp/src/barretenberg/bbapi/bbapi_shared.hpp @@ -17,10 +17,6 @@ #include "barretenberg/honk/execution_trace/mega_execution_trace.hpp" #include "barretenberg/stdlib/special_public_inputs/special_public_inputs.hpp" #include "barretenberg/stdlib_circuit_builders/ultra_circuit_builder.hpp" -#ifdef STARKNET_GARAGA_FLAVORS -#include "barretenberg/flavor/ultra_starknet_flavor.hpp" -#include "barretenberg/flavor/ultra_starknet_zk_flavor.hpp" -#endif #include #include #include @@ -128,7 +124,7 @@ struct ProofSystemSettings { * @brief The oracle hash type to be used for the proof. * * This is used to determine the hash function used in the proof generation. - * Valid values are "poseidon2", "keccak", and "starknet". + * Valid values are "poseidon2" and "keccak". */ std::string oracle_hash_type = "poseidon2"; @@ -145,22 +141,6 @@ struct ProofSystemSettings { bool operator==(const ProofSystemSettings& other) const = default; }; -/** - * @brief Convert oracle hash type string to enum for internal use - */ -enum class OracleHashType { POSEIDON2, KECCAK, STARKNET }; - -inline OracleHashType parse_oracle_hash_type(const std::string& type) -{ - if (type == "keccak") { - return OracleHashType::KECCAK; - } - if (type == "starknet") { - return OracleHashType::STARKNET; - } - return OracleHashType::POSEIDON2; // default -} - /** * @brief Convert VK policy string to enum for internal use */ @@ -344,15 +324,6 @@ template auto dispatch_by_settings(const ProofSystemSetting return operation.template operator()(); } -#ifdef STARKNET_GARAGA_FLAVORS - if (settings.oracle_hash_type == "starknet") { - if (settings.disable_zk) { - return operation.template operator()(); - } - return operation.template operator()(); - } -#endif - // Invalid configuration throw_or_abort("Invalid proof system settings: oracle_hash_type='" + settings.oracle_hash_type + "', disable_zk=" + std::to_string(settings.disable_zk) + diff --git a/barretenberg/cpp/src/barretenberg/benchmark/poseidon2_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/poseidon2_bench/CMakeLists.txt index b4f1fbcd9b7..87e6e3d63dd 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/poseidon2_bench/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/benchmark/poseidon2_bench/CMakeLists.txt @@ -1 +1 @@ -barretenberg_module(poseidon2_bench crypto_poseidon2 ext_starknet_crypto_poseidon) +barretenberg_module(poseidon2_bench crypto_poseidon2) diff --git a/barretenberg/cpp/src/barretenberg/commitment_schemes/small_subgroup_ipa/small_subgroup_ipa.cpp b/barretenberg/cpp/src/barretenberg/commitment_schemes/small_subgroup_ipa/small_subgroup_ipa.cpp index c95624bc841..96098fa208c 100644 --- a/barretenberg/cpp/src/barretenberg/commitment_schemes/small_subgroup_ipa/small_subgroup_ipa.cpp +++ b/barretenberg/cpp/src/barretenberg/commitment_schemes/small_subgroup_ipa/small_subgroup_ipa.cpp @@ -5,7 +5,6 @@ #include "barretenberg/eccvm/eccvm_flavor.hpp" #include "barretenberg/eccvm/eccvm_short_monomial_flavor.hpp" #include "barretenberg/eccvm/eccvm_translation_data.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp" #include "barretenberg/flavor/mega_zk_flavor.hpp" #include "barretenberg/flavor/ultra_keccak_zk_flavor.hpp" #include "barretenberg/flavor/ultra_zk_flavor.hpp" @@ -460,9 +459,6 @@ template class SmallSubgroupIPAProver; template class SmallSubgroupIPAProver; template class SmallSubgroupIPAProver; template class SmallSubgroupIPAProver; -#ifdef STARKNET_GARAGA_FLAVORS -template class SmallSubgroupIPAProver; -#endif // Instantiations used in tests template class SmallSubgroupIPAProver; diff --git a/barretenberg/cpp/src/barretenberg/crypto/poseidon2/sponge/sponge.hpp b/barretenberg/cpp/src/barretenberg/crypto/poseidon2/sponge/sponge.hpp index 38dfb2dc88d..d7637792707 100644 --- a/barretenberg/cpp/src/barretenberg/crypto/poseidon2/sponge/sponge.hpp +++ b/barretenberg/cpp/src/barretenberg/crypto/poseidon2/sponge/sponge.hpp @@ -109,21 +109,8 @@ template (in_len) << 64); - return hash_internal(input, iv); - } - - /** - * @brief Use the sponge to hash an input vector with a custom IV. - * - * @param input Field elements (a_0, ..., a_{N-1}) - * @param iv Initial value for domain separation - * @return Hash of the input, a single field element. - */ - static FF hash_internal(std::span input, FF iv) - { FieldSponge sponge(iv); - const size_t in_len = input.size(); for (size_t i = 0; i < in_len; ++i) { sponge.absorb(input[i]); } diff --git a/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp b/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp index 73b3374821b..1abb0feccda 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/fields/field_declarations.hpp @@ -337,8 +337,7 @@ template struct alignas(32) field { BB_INLINE constexpr field pow(const uint256_t& exponent) const noexcept; BB_INLINE constexpr field pow(uint64_t exponent) const noexcept; - // STARKNET: next line was commented as stark252 violates the assertion - // static_assert(Params::modulus_0 != 1); + static_assert(Params::modulus_0 != 1); static constexpr uint256_t modulus_minus_two = uint256_t(Params::modulus_0 - 2ULL, Params::modulus_1, Params::modulus_2, Params::modulus_3); constexpr field invert() const noexcept; diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/CMakeLists.txt deleted file mode 100644 index f7abc9dafda..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(poseidon) diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/CMakeLists.txt deleted file mode 100644 index 09260f0670f..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -barretenberg_module(ext_starknet_crypto_poseidon ecc) diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.cpp b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.cpp deleted file mode 100644 index 720796a85ac..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#ifdef STARKNET_GARAGA_FLAVORS -#include "poseidon.hpp" - -namespace bb::starknet::crypto { - -template -typename Poseidon::FF Poseidon::hash(const std::vector::FF>& input) -{ - return Sponge::hash_internal(input); -} - -template -typename Poseidon::FF Poseidon::hash(const std::vector::FF>& input, FF iv) -{ - return Sponge::hash_internal(input, iv); -} - -template class Poseidon; - -} // namespace bb::starknet::crypto -#else -// avoid linker issues by having a symbol in this library -namespace bb::starknet::crypto { -void garbage_extensions_disabled() {} -} // namespace bb::starknet::crypto -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.hpp deleted file mode 100644 index c65a6cda2f2..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifdef STARKNET_GARAGA_FLAVORS -#pragma once - -#include "barretenberg/crypto/poseidon2/sponge/sponge.hpp" -#include "poseidon_params.hpp" -#include "poseidon_permutation.hpp" - -namespace bb::starknet::crypto { - -template class Poseidon { - public: - using FF = typename Params::FF; - - using Sponge = bb::crypto::FieldSponge>; - - static FF hash(const std::vector& input); - - static FF hash(const std::vector& input, FF iv); -}; - -extern template class Poseidon; - -} // namespace bb::starknet::crypto -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.test.cpp b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.test.cpp deleted file mode 100644 index 5dff206eba6..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon.test.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "poseidon.hpp" -#include "barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp" -#include "poseidon_params.hpp" -#include - -#ifdef STARKNET_GARAGA_FLAVORS -namespace { -auto& engine = bb::numeric::get_debug_randomness(); -} -using namespace bb::starknet; - -TEST(Poseidon, HashBasicTests) -{ - using fq = stark252::fq; - - fq a = fq::random_element(&engine); - fq b = fq::random_element(&engine); - fq c = fq::random_element(&engine); - fq d = fq::random_element(&engine); - - std::vector input1{ a, b, c, d }; - std::vector input2{ d, c, b, a }; - - auto r0 = crypto::Poseidon::hash(input1); - auto r1 = crypto::Poseidon::hash(input1); - auto r2 = crypto::Poseidon::hash(input2); - - EXPECT_EQ(r0, r1); - EXPECT_NE(r0, r2); -} - -TEST(Poseidon, HashConsistencyCheck) -{ - using fq = stark252::fq; - - fq a(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - fq b(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - fq c(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - fq d(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - - std::vector input{ a, b, c, d }; - auto result = crypto::Poseidon::hash(input); - - fq expected(std::string("0x0494e3a5a8047943395f79e41f11ba73285be9aa930953fbad060c0649a7c79d")); - - EXPECT_EQ(result, expected); -} -#else - -TEST(Poseidon, DisabledTests) {} -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_params.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_params.hpp deleted file mode 100644 index 83b19856d3b..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_params.hpp +++ /dev/null @@ -1,511 +0,0 @@ -#pragma once - -#ifdef STARKNET_GARAGA_FLAVORS -#include "barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp" - -namespace bb::starknet::crypto { - -struct PoseidonStark252BaseFieldParams { - - using FF = bb::starknet::stark252::fq; - static constexpr size_t t = 3; - static constexpr size_t d = 3; - static constexpr size_t rounds_f = 8; - static constexpr size_t rounds_p = 83; - static constexpr size_t sbox_size = 252; - static constexpr std::array internal_matrix_diagonal = { - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000002")), - FF(std::string("0x0800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff")), - FF(std::string("0x0800000000000010fffffffffffffffffffffffffffffffffffffffffffffffe")), - }; - - static constexpr std::array, t> internal_matrix = { - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000002")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - FF(std::string("0x0800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - FF(std::string("0x0800000000000010fffffffffffffffffffffffffffffffffffffffffffffffe")), - }, - }; - - static constexpr std::array, rounds_f + rounds_p> round_constants{ - std::array{ - FF(std::string("0x06861759ea556a2339dd92f9562a30b9e58e2ad98109ae4780b7fd8eac77fe6f")), - FF(std::string("0x03827681995d5af9ffc8397a3d00425a3da43f76abf28a64e4ab1a22f27508c4")), - FF(std::string("0x03a3956d2fad44d0e7f760a2277dc7cb2cac75dc279b2d687a0dbe17704a8309")), - }, - std::array{ - FF(std::string("0x0626c47a7d421fe1f13c4282214aa759291c78f926a2d1c6882031afe67ef4cd")), - FF(std::string("0x078985f8e16505035bd6df5518cfd41f2d327fcc948d772cadfe17baca05d6a6")), - FF(std::string("0x05427f10867514a3204c659875341243c6e26a68b456dc1d142dcf34341696ff")), - }, - std::array{ - FF(std::string("0x05af083f36e4c729454361733f0883c5847cd2c5d9d4cb8b0465e60edce699d7")), - FF(std::string("0x07d71701bde3d06d54fa3f74f7b352a52d3975f92ff84b1ac77e709bfd388882")), - FF(std::string("0x0603da06882019009c26f8a6320a1c5eac1b64f699ffea44e39584467a6b1d3e")), - }, - std::array{ - FF(std::string("0x04332a6f6bde2f288e79ce13f47ad1cdeebd8870fd13a36b613b9721f6453a5d")), - FF(std::string("0x053d0ebf61664c685310a04c4dec2e7e4b9a813aaeff60d6c9e8caeb5cba78e7")), - FF(std::string("0x05346a68894845835ae5ebcb88028d2a6c82f99f928494ee1bfc2d15eaabfebc")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04b085eb1df4258c3453cc97445954bf3433b6ab9dd5a99592864c00f54a3f9a")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0731cfd19d508285965f12a079b2a169fdfe0a8e610e6f2d5ca5d7b0961f6d96")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0217d08b5339852bcc6f7a774936b3e72ecd9e1f9a73d743f8079c1e3587eeaa")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x000c935dd633b0fd63599b13c850dab3cb966ba510c81b20959e267008518c6e")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x052af8d378dd6772ee187ed23f79a7d98cf5a0a387103971467fe940e7b8b2be")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0294851c98b2682f1ec9918b9f12fcceaa6e28a7b79b2e506362cda595f8ab75")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x011b59990bacc280824d1021418d4f589da8c30063471494c204b169ab086064")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04b4df56e3d7753f91960d59ae099b9beb2ce690e6bbdcd0b599d49ceb2acd6a")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x005eecfa15a757dc3ecae9fbd8ff06e466243534f30629fc5f1cf09eb5161ac4")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0680bfdd8b9680e04659227634a1ec5282e5a7cef81b15677f8448bda4279059")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x01d0bf8fab0a1a7a14e2930794f7a3065c17e10b1cedd791b8877d97acd85053")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x02c2c8c79f808ace54ba207053c0d412c0fc11a610f14c48876701a37e32f464")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0354ec9ed01d20ec52aae19a9b858d3474d8234c11ad7bce630ad56c54afa562")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x030df20fcf6427bac38bb5d1a42287f4e4136ac5892340e994e6ea28deec1e55")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0528cf329c64e7ee3040bafbdeff61e241d99b424091e31472eda296fc9c6778")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x040416f24f623534634789660df5435ebf0c3e0c69e6c5b5ff6e757930bd1960")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x00380c8f936e2ed9fd488ae3bac7dce315ba21b11e88339cd5444435ccc9ea38")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x01cc4f5d5603d176f1a8e344392efd2d03ad0541832829d245e0e2291f255b75")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x05728917af5da91f9539310d99f5d142e011d6c8e015ea5423c502aa99c09752")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x00efb450a9e86e1a46e295a348f0f23590925107d17c56d7c788fecc17219aa1")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x02020d74d36c421ae1a025616b342d0784b8fcd977de6c53a6c26693774dca99")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x07cfb309b75fd3bf2705558ae511dc82335050969f4bf84fa2b7b4f583989287")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04651e48b2e9349a5365e009ece626809d7b7d02a617eb98c785a784812d75e9")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x00d77627b270f65122d0269719da923ccae822d9aad0f0947a3b5c8f71c0dcc7")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0199ad3d641b54c4d571b3fe37773a8b82b003377f0dd8b7d3b7758c32908ea8")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x044f33640a8ecfd3973e2e9172a7333482b2d297be2da289319e72d137cdfe6e")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x07e4adf9894d964189d00a02dcf1e6be7f801234f5216eab6b6f366b6701abf7")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03641fa5b3c90452f5ff808f8a9817eda7c6aecfb5471dfdca559fb4e711ee90")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03de5729efd2fcbd897a49a78fa923fc306df32e6e2f0e02d0eee2c2cc3f3533")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x062691891a3fc1e27f622966ca0be20c06563500c8f06c9bdb77bd2882d6c994")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x06608d3bf11c18e4688739f72205763d1590cc4f9885ae1d86e96e0604baa0be")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x011c9c9b39cac71e3419726ce779116d07249f51cbdda4fd98c25cbbf593a316")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x061e23b58203269caef0850f74da27b9748e3312ea40c6844dd68c557c462ad7")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04182cd9ab1d9488f870a572010bc2a3d9878440b25951e4ce010855cf83bdc8")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0520fe6c4a096793f9055e6823116d15f1df2fe89d306f9965f6a59f4f3ecb71")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0346b2b2d6e5810129e093093dcd3dfa99ed6d71f47723ea3fbe4d4e2fd4afa1")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x01359ca923e7f1448ec1dd2a3684bee4e8b682c8e8e973acea72877ce9f7e6cf")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x047c655f55cf307800dfefdad24de86fde9deadab145a1b392420f37b95d9675")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04ab291f16555fa8a968cd7c9c285a9598efd925f2d58b7aa38ad87dca8441a8")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x039f409c7c782101223d1f6f7d86c21a22c44ef959510e392c9c7c5d17c629c5")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x044be36b782f882ad86eecb0cd6beb02e1a2f9fb5587a3babfacead0cafb6052")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x050a1dfde9b504ad2906db6eb5b507203cd1ceb394c52ce7107679a53a0d538b")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x05c753c14da89e287b181c0dd11ac6c3680bdd7f1017dae083e7aebbeab183ab")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x02cf6306ed32232106c8015a3b180f386eee93e15f7b4f4fa57746525fc0520c")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x02c2014634d52e27420873cf347429091dfc6380689bd4f54d7d8e502c1c3a09")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03cfb9c5bd93e02b2fdacde2058e33e5975c446345f010d850fc09cdf86ed8a1")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0363fa71a383cf3897933f1411fc5f806e311e84f72cb50a9ea4e1281f6b0299")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0728199657067ee16947b3fc76271676b4901b2a3686cffebcb960da91b05df8")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03fdfbd47d27f3d34f0723b728e8921dc9bde34a9872df5a652a078d7e4ee021")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x07f241379440cacd7dc0efbe7858eb7de53cc02ca7d24197945c453398eff449")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x05b2e8771ea9a0004e3bf056f3727797cbb457a27574d5f104354e52a5c25f0b")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x00a8ddbce708de44a7e0b3b0333146e1e910245be6bf822ea057a081bda2e23e")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x02d521e0daca24e431aa47cd90a0f551c12270e533835613edce2e19aa9b0f61")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x06cdbc0f2aa54d2cf7d5ac3b93f855af03eef7b07aaee00341a6266c30e08ae6")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03dd96a17111ec8f4c5da3ad6794c0961ceee452cbe92c7a0941112b36ed9bf3")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x05eafb1edeedc5c07ac07fdd06159344a2cfb92196a65d9ec0c5e732c36687dc")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04ab038d7b09eda9324577b260feaebdbcec5a7b7c7f449b312cfcd065c207e6")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04ca71981e4df6b505d2b0d94e235608463c58052570f68e495fc80c7fdef220")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x06dee9c6da4617e32aa419899c8ea8137e9b59d7e2759ffe573c15b77e413d2f")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x058f9e60b34ddab84dcbe2396065a4305b4a795a4770e4541e625d0460c6f186")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x047b7b4a802a10c1e6c9c735db6c34042d290906f274bea8fcecef17fc9af632")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x01849bcdb9ad7171096ecc936a186774084a074be0bfc0fbb9463a06a2bd430c")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x041870fbe04438348af5767bddaecd8aea3b49b4217547dec4d699b1466736cc")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0226c04e598076a9fa02aa64557daf28c0ec42e3d4da68d1965029d284738b07")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x01f0e971f0485a5b42eb92d6655c3ddb475cec4371f269a95335b2a7d6dac0fb")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x009f31cc2907dccbf994d35aa47ee3f4ebdf3703f795047a7b40dd3926431563")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04b40cce78f3b641e31ce4df58ce5a42c22cfbc198c84451ffe8cca4c64bd7d2")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0191660489e4bd8a3e4563173de4a226f3ac736962fdfb70f72cb93ce50f8b9f")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x018c0919618db971f74eb01f293f2daea814b475103373dc7ed8dd4c7b467410")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x035b60253848530e845c8753121577d0ef37002e941c3dc1fb240bd57eadc803")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x01ae99db1575ae91c8b43a9f71a5f362581ad9b413d97fa6fd029134957451d5")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03e6e1d0f3f8a0f728148ebcbd5d7d337d7cb8feb58a37d2d1dfb357e172647b")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x018bc36dffa8f96a659e1a171b55d2706ee3e9ad619e16f5c38dd1f4a209b8f3")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x02c7a3ef1afb6a302b54afc3a107ff9199a16efe9a1cc3ab83fa5b64893de4ed")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x053a7bd889bed07bf5e27dd8e92f6ae85e4fe4e84b0c6dde9856e94469de4bd7")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04d383ff7ffc6318fda704aca35995f86bec5a02ce9a0bf9d3cc0cc2f03ccea9")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x04667b6762fb8ad53d07ef7e8a65b21ca96e0b3503037710d1292519c326f5cd")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x002cc8b43e75cf0b42a93c39ea98bcd46055dccc9589f02eb7fb536422e5921f")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x06b32ee98680871d38751447bfd76086ba4df0e7be59c55f4b2ce25582bf9c60")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03e907927c7182faaa3b3c81358b82e734efac1f0609f0862d635cb1387102a3")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x03f3a5057b3a08975f0253728e512af78d2f437973f6a93793ea5e8424fbc6ea")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x014b491d73724779f8aa74b3fd8aa5821c21e1017224726a7a946bb6ca68d8f5")), - }, - std::array{ - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x05c8278c7bbfc30ae7f60e514fe3b9367aca84c54ad1373861695ea4abb814ef")), - }, - std::array{ - FF(std::string("0x064851937f9836ee5a08a7dde65e44b467018a82ba3bf99bba0b4502755c8074")), - FF(std::string("0x06a9ac84251294769eca450ffb52b441882be77cb85f422ff9ea5e73f1d971dc")), - FF(std::string("0x037ec35b710b0d04c9a2b71f2f7bd098c6a81d991d27f0fc1884f5ca545064de")), - }, - std::array{ - FF(std::string("0x005334f75b052c0235119816883040da72c6d0a61538bdfff46d6a242bfeb7a1")), - FF(std::string("0x05d0af4fcbd9e056c1020cca9d871ae68f80ee4af2ec6547cd49d6dca50aa431")), - FF(std::string("0x030131bce2fba5694114a19c46d24e00b4699dc00f1d53ba5ab99537901b1e65")), - }, - std::array{ - FF(std::string("0x05646a95a7c1ae86b34c0750ed2e641c538f93f13161be3c4957660f2e788965")), - FF(std::string("0x04b9f291d7b430c79fac36230a11f43e78581f5259692b52c90df47b7d4ec01a")), - FF(std::string("0x05006d393d3480f41a98f19127072dc83e00becf6ceb4d73d890e74abae01a13")), - }, - std::array{ - FF(std::string("0x062c9d42199f3b260e7cb8a115143106acf4f702e6b346fd202dc3b26a679d80")), - FF(std::string("0x051274d092db5099f180b1a8a13b7f2c7606836eabd8af54bf1d9ac2dc5717a5")), - FF(std::string("0x061fc552b8eb75e17ad0fb7aaa4ca528f415e14f0d9cdbed861a8db0bfff0c5b")), - }, - }; - - static constexpr std::array TEST_VECTOR_INPUT{ - FF(std::string("0x0000000000000000000000000000000000000000537461726b6e6574486f6e6b")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000000")), - FF(std::string("0x0000000000000000000000000000000000000000000000000000000000000001")), - }; - static constexpr std::array TEST_VECTOR_OUTPUT{ - FF(std::string("0x05b65cb3dd09edcddac6731b71ec2eaa6c2974d97a1d5978a1c97fa1b00c80ff")), - FF(std::string("0x0257539df2ca7f054b6206fa85d6fb92c692ed7f51b34534fcbab8e9cf821071")), - FF(std::string("0x05c6798b795dabcf3dee9ae895a0a48b98458b78c7f7885959261ddd251606f5")), - }; -}; - -} // namespace bb::starknet::crypto -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_permutation.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_permutation.hpp deleted file mode 100644 index ec56f1fffb9..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_permutation.hpp +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once - -#ifdef STARKNET_GARAGA_FLAVORS -#include -#include -#include - -namespace bb::starknet::crypto { - -template class PoseidonPermutation { - public: - static constexpr size_t t = Params::t; - static constexpr size_t d = Params::d; - static constexpr size_t sbox_size = Params::sbox_size; - static constexpr size_t rounds_f = Params::rounds_f; - static constexpr size_t rounds_p = Params::rounds_p; - static constexpr size_t NUM_ROUNDS = Params::rounds_f + Params::rounds_p; - - using FF = typename Params::FF; - using State = std::array; - using RoundConstants = std::array; - using MatrixDiagonal = std::array; - using RoundConstantsContainer = std::array; - - static constexpr MatrixDiagonal internal_matrix_diagonal = Params::internal_matrix_diagonal; - static constexpr RoundConstantsContainer round_constants = Params::round_constants; - - static constexpr void add_round_constants(State& input, const RoundConstants& rc) - { - for (size_t i = 0; i < t; ++i) { - input[i] += rc[i]; - } - } - - static constexpr void matrix_multiplication_internal(State& input) - { - auto sum = input[0]; - for (size_t i = 1; i < t; ++i) { - sum += input[i]; - } - for (size_t i = 0; i < t; ++i) { - input[i] *= internal_matrix_diagonal[i]; - input[i] += sum; - } - } - - static constexpr void apply_single_sbox(FF& input) - { - static_assert(d == 3); - auto xx = input.sqr(); - input *= xx; - } - - static constexpr void apply_sbox(State& input) - { - for (auto& in : input) { - apply_single_sbox(in); - } - } - - static constexpr State permutation(const State& input) - { - State current_state(input); - - constexpr size_t rounds_f_beginning = rounds_f / 2; - for (size_t i = 0; i < rounds_f_beginning; ++i) { - add_round_constants(current_state, round_constants[i]); - apply_sbox(current_state); - matrix_multiplication_internal(current_state); - } - - const size_t p_end = rounds_f_beginning + rounds_p; - for (size_t i = rounds_f_beginning; i < p_end; ++i) { - current_state[2] += round_constants[i][2]; - apply_single_sbox(current_state[2]); - matrix_multiplication_internal(current_state); - } - - for (size_t i = p_end; i < NUM_ROUNDS; ++i) { - add_round_constants(current_state, round_constants[i]); - apply_sbox(current_state); - matrix_multiplication_internal(current_state); - } - - return current_state; - } -}; - -} // namespace bb::starknet::crypto -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_permutation.test.cpp b/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_permutation.test.cpp deleted file mode 100644 index 0dc7bb48be3..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/crypto/poseidon/poseidon_permutation.test.cpp +++ /dev/null @@ -1,60 +0,0 @@ - -#ifdef STARKNET_GARAGA_FLAVORS -#include "poseidon_permutation.hpp" -#include "barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp" -#include "poseidon_params.hpp" -#include - -using namespace bb::starknet; - -namespace { -auto& engine = bb::numeric::get_debug_randomness(); -} - -TEST(PoseidonPermutation, TestVectors) -{ - auto input = crypto::PoseidonStark252BaseFieldParams::TEST_VECTOR_INPUT; - auto expected = crypto::PoseidonStark252BaseFieldParams::TEST_VECTOR_OUTPUT; - auto result = crypto::PoseidonPermutation::permutation(input); - - EXPECT_EQ(result, expected); -} - -TEST(PoseidonPermutation, BasicTests) -{ - using fq = stark252::fq; - - fq a = fq::random_element(&engine); - fq b = fq::random_element(&engine); - fq c = fq::random_element(&engine); - - std::array input1{ a, b, c }; - std::array input2{ c, b, a }; - - auto r0 = crypto::PoseidonPermutation::permutation(input1); - auto r1 = crypto::PoseidonPermutation::permutation(input1); - auto r2 = crypto::PoseidonPermutation::permutation(input2); - - EXPECT_EQ(r0, r1); - EXPECT_NE(r0, r2); -} - -TEST(PoseidonPermutation, ConsistencyCheck) -{ - using fq = stark252::fq; - - fq a(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - fq b(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - fq c(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789")); - - std::array input{ a, b, c }; - auto result = crypto::PoseidonPermutation::permutation(input); - - std::array expected{ - fq(std::string("0x03209a40f2b5e046337b5fae9e1e495dc3d9bcb5602ee9d4bd22aed772eab0f2")), - fq(std::string("0x04fbaa255051a602e8fcaf49614be34440da55ed42b3d8f33909ad0fbf8bce6a")), - fq(std::string("0x01655846c1e8dda470d0171d2d93efe9a71debadd42f9164e54ab90d70e04e48")), - }; - EXPECT_EQ(result, expected); -} -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp deleted file mode 100644 index 0b2241470c0..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/ecc/curves/stark252/stark252.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#ifdef STARKNET_GARAGA_FLAVORS -#pragma once - -#include "barretenberg/ecc/fields/field.hpp" -#include "barretenberg/honk/types/public_inputs_type.hpp" - -namespace bb::starknet::stark252 { - -struct FqParams { - static constexpr uint64_t modulus_0 = 0x0000000000000001ULL; - static constexpr uint64_t modulus_1 = 0x0000000000000000ULL; - static constexpr uint64_t modulus_2 = 0x0000000000000000ULL; - static constexpr uint64_t modulus_3 = 0x0800000000000011ULL; - - static constexpr uint64_t r_squared_0 = 0xfffffd737e000401ULL; - static constexpr uint64_t r_squared_1 = 0x00000001330fffffULL; - static constexpr uint64_t r_squared_2 = 0xffffffffff6f8000ULL; - static constexpr uint64_t r_squared_3 = 0x07ffd4ab5e008810ULL; - - static constexpr uint64_t r_inv = 0xffffffffffffffffULL; - - static constexpr uint64_t r_inv_0 = 0x0000000000000001ULL; - static constexpr uint64_t r_inv_1 = 0x0000000000000000ULL; - static constexpr uint64_t r_inv_2 = 0xf7ffffffffffffefULL; - static constexpr uint64_t r_inv_3 = 0x0800000000000010ULL; - - static constexpr uint64_t modulus_wasm_0 = 0x00000001; - static constexpr uint64_t modulus_wasm_1 = 0x00000000; - static constexpr uint64_t modulus_wasm_2 = 0x00000000; - static constexpr uint64_t modulus_wasm_3 = 0x00000000; - static constexpr uint64_t modulus_wasm_4 = 0x00000000; - static constexpr uint64_t modulus_wasm_5 = 0x00000000; - static constexpr uint64_t modulus_wasm_6 = 0x00440000; - static constexpr uint64_t modulus_wasm_7 = 0x00000000; - static constexpr uint64_t modulus_wasm_8 = 0x00080000; - - static constexpr uint64_t r_squared_wasm_0 = 0xfff5cdf800100001ULL; - static constexpr uint64_t r_squared_wasm_1 = 0x000004cc3fffffffULL; - static constexpr uint64_t r_squared_wasm_2 = 0xfffffffdbe000000ULL; - static constexpr uint64_t r_squared_wasm_3 = 0x0752ad7802200010ULL; - - static constexpr uint64_t r_inv_wasm_0 = 0x00000001; - static constexpr uint64_t r_inv_wasm_1 = 0x00000000; - static constexpr uint64_t r_inv_wasm_2 = 0x00000000; - static constexpr uint64_t r_inv_wasm_3 = 0x00000000; - static constexpr uint64_t r_inv_wasm_4 = 0x00000000; - static constexpr uint64_t r_inv_wasm_5 = 0x1fbc0000; - static constexpr uint64_t r_inv_wasm_6 = 0x0043ffff; - static constexpr uint64_t r_inv_wasm_7 = 0x1ff80000; - static constexpr uint64_t r_inv_wasm_8 = 0x0007ffff; - - // For consistency with bb::fq, if we ever represent an element of bb::stark252::fq in the public inputs, we do so - // as a bigfield element, so with 4 public inputs - static constexpr size_t PUBLIC_INPUTS_SIZE = BIGFIELD_PUBLIC_INPUTS_SIZE; -}; - -using fq = field; - -} // namespace bb::starknet::stark252 -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/flavor/ultra_starknet_flavor.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/flavor/ultra_starknet_flavor.hpp deleted file mode 100644 index c1169d7907d..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/flavor/ultra_starknet_flavor.hpp +++ /dev/null @@ -1,16 +0,0 @@ - -#ifdef STARKNET_GARAGA_FLAVORS -#pragma once - -#include "barretenberg/ext/starknet/transcript/transcript.hpp" -#include "barretenberg/flavor/ultra_keccak_flavor.hpp" - -namespace bb { - -class UltraStarknetFlavor : public UltraKeccakFlavor { - public: - using Transcript = Transcript_; -}; - -} // namespace bb -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp deleted file mode 100644 index daef84c0c27..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef STARKNET_GARAGA_FLAVORS -#pragma once - -#include "barretenberg/ext/starknet/transcript/transcript.hpp" -#include "barretenberg/flavor/ultra_keccak_zk_flavor.hpp" - -namespace bb { - -class UltraStarknetZKFlavor : public UltraKeccakZKFlavor { - public: - using Transcript = starknet::StarknetTranscript; -}; -} // namespace bb -#endif diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/transcript/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/ext/starknet/transcript/CMakeLists.txt deleted file mode 100644 index e4421870ccf..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/transcript/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -barretenberg_module(ext_starknet_transcript ext_starknet_crypto_poseidon) diff --git a/barretenberg/cpp/src/barretenberg/ext/starknet/transcript/transcript.hpp b/barretenberg/cpp/src/barretenberg/ext/starknet/transcript/transcript.hpp deleted file mode 100644 index 6cced4b829a..00000000000 --- a/barretenberg/cpp/src/barretenberg/ext/starknet/transcript/transcript.hpp +++ /dev/null @@ -1,53 +0,0 @@ -#ifdef STARKNET_GARAGA_FLAVORS -#pragma once - -#include "barretenberg/ext/starknet/crypto/poseidon/poseidon.hpp" -#include "barretenberg/transcript/transcript.hpp" - -namespace bb::starknet { - -inline bb::fr starknet_hash_uint256(std::vector const& data) -{ - using Poseidon = crypto::Poseidon; - using FF = Poseidon::FF; - - size_t elem_count = data.size(); - std::vector elems(2 * (1 + elem_count)); - - elems[0] = FF(std::string("0x0000000000000000000000000000000000000000537461726b6e6574486f6e6b")); // "StarknetHonk" - elems[1] = FF(0); - - for (size_t k = 0; k < elem_count; ++k) { - std::vector input = to_buffer(data[k]); - - std::array limb_lo = {}; - std::array limb_hi = {}; - - for (size_t i = 16; i < 32; ++i) { - limb_hi[i] = input[i - 16]; - limb_lo[i] = input[i]; - } - - elems[2 * (1 + k)] = from_buffer(limb_lo); - elems[2 * (1 + k) + 1] = from_buffer(limb_hi); - } - - FF iv = FF(1); - - FF output = Poseidon::hash(elems, iv); - - std::vector result = to_buffer(output); - - auto result_fr = from_buffer(result); - - return result_fr; -} - -struct StarknetTranscriptParams : public bb::KeccakTranscriptParams { - static inline Fr hash(const std::vector& data) { return starknet_hash_uint256(data); } -}; - -using StarknetTranscript = bb::BaseTranscript; - -} // namespace bb::starknet -#endif diff --git a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp index b9324378d26..087f8a00c9f 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/flavor.hpp @@ -35,10 +35,6 @@ class UltraFlavor; class UltraZKFlavor; class ECCVMFlavor; class UltraKeccakFlavor; -#ifdef STARKNET_GARAGA_FLAVORS -class UltraStarknetFlavor; -class UltraStarknetZKFlavor; -#endif class UltraKeccakZKFlavor; class MegaFlavor; class MegaZKFlavor; diff --git a/barretenberg/cpp/src/barretenberg/flavor/flavor_concepts.hpp b/barretenberg/cpp/src/barretenberg/flavor/flavor_concepts.hpp index c8a1af5f7a1..9e710649794 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/flavor_concepts.hpp +++ b/barretenberg/cpp/src/barretenberg/flavor/flavor_concepts.hpp @@ -21,13 +21,8 @@ template struct IsMultilinearBatchingRecursiveFlavorImpl : std::fal template struct IsMultilinearBatchingRecursiveFlavorImpl> : std::true_type {}; -#ifdef STARKNET_GARAGA_FLAVORS -template -concept IsUltraHonk = IsAnyOf; -#else template concept IsUltraHonk = IsAnyOf; -#endif template concept IsUltraOrMegaHonk = IsUltraHonk || IsAnyOf; diff --git a/barretenberg/cpp/src/barretenberg/flavor/flavor_serialization.test.cpp b/barretenberg/cpp/src/barretenberg/flavor/flavor_serialization.test.cpp index c93e49ecd78..fedccd5fa51 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/flavor_serialization.test.cpp +++ b/barretenberg/cpp/src/barretenberg/flavor/flavor_serialization.test.cpp @@ -28,11 +28,7 @@ template class FlavorSerializationTests : public ::testing::Te static void SetUpTestSuite() { bb::srs::init_file_crs_factory(bb::srs::bb_crs_path()); } }; -#ifdef STARKNET_GARAGA_FLAVORS -using FlavorTypes = testing::Types; -#else using FlavorTypes = testing::Types; -#endif TYPED_TEST_SUITE(FlavorSerializationTests, FlavorTypes); // Test msgpack serialization/deserialization of verification keys diff --git a/barretenberg/cpp/src/barretenberg/flavor/native_verification_key.test.cpp b/barretenberg/cpp/src/barretenberg/flavor/native_verification_key.test.cpp index 3fafacf5e86..31da96150f4 100644 --- a/barretenberg/cpp/src/barretenberg/flavor/native_verification_key.test.cpp +++ b/barretenberg/cpp/src/barretenberg/flavor/native_verification_key.test.cpp @@ -16,20 +16,11 @@ template struct VKTestParams { using IO = IO_; }; -#ifdef STARKNET_GARAGA_FLAVORS using TestTypes = testing::Types>, VKTestParams, VKTestParams>, - VKTestParams>, VKTestParams>>; -#else -using TestTypes = - testing::Types>, - VKTestParams, - VKTestParams>, - VKTestParams>>; -#endif template class NativeVerificationKeyTests : public ::testing::Test { public: diff --git a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/CMakeLists.txt index 3c3f7c765b8..d3023f3a778 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/stdlib/hash/poseidon2/CMakeLists.txt @@ -1 +1 @@ -barretenberg_module(stdlib_poseidon2 stdlib_primitives crypto_poseidon2 ext_starknet_crypto_poseidon) +barretenberg_module(stdlib_poseidon2 stdlib_primitives crypto_poseidon2) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp b/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp index 7cdfceccfc5..1725e3ed303 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/primitives/circuit_builders/circuit_builders_fwd.hpp @@ -67,7 +67,4 @@ namespace avm2 { class AvmRecursiveFlavor; } -#ifdef STARKNET_GARAGA_FLAVORS -class UltraStarknetFlavor; -#endif } // namespace bb diff --git a/barretenberg/cpp/src/barretenberg/trace_to_polynomials/trace_to_polynomials.cpp b/barretenberg/cpp/src/barretenberg/trace_to_polynomials/trace_to_polynomials.cpp index 1bc597e61fb..5ed47356bec 100644 --- a/barretenberg/cpp/src/barretenberg/trace_to_polynomials/trace_to_polynomials.cpp +++ b/barretenberg/cpp/src/barretenberg/trace_to_polynomials/trace_to_polynomials.cpp @@ -2,9 +2,6 @@ #include "barretenberg/common/assert.hpp" #include "barretenberg/common/thread.hpp" #include "barretenberg/constants.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_flavor.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp" - #include "barretenberg/flavor/mega_app_flavor.hpp" #include "barretenberg/flavor/mega_avm_flavor.hpp" #include "barretenberg/flavor/mega_flavor.hpp" @@ -200,10 +197,6 @@ void TraceToPolynomials::add_ecc_op_wires_to_prover_instance(Builder& bu template class TraceToPolynomials; template class TraceToPolynomials; template class TraceToPolynomials; -#ifdef STARKNET_GARAGA_FLAVORS -template class TraceToPolynomials; -template class TraceToPolynomials; -#endif template class TraceToPolynomials; template class TraceToPolynomials; template class TraceToPolynomials; diff --git a/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt index 4a59c4aae9e..6351036291d 100644 --- a/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/transcript/CMakeLists.txt @@ -1,7 +1,6 @@ barretenberg_module( transcript crypto_poseidon2 - ext_starknet_crypto_poseidon stdlib_circuit_builders stdlib_primitives stdlib_poseidon2 diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/honk_transcript.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/honk_transcript.test.cpp index b446cf768d6..262290b21e2 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/honk_transcript.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/honk_transcript.test.cpp @@ -18,19 +18,8 @@ using namespace bb; -#ifdef STARKNET_GARAGA_FLAVORS -using FlavorTypes = ::testing::Types; -#else using FlavorTypes = ::testing::Types; -#endif template class HonkTranscriptTests : public ::testing::Test { public: diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp index 25559f35a68..7622377296f 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp @@ -368,10 +368,6 @@ void OinkProver::compute_grand_product_polynomial(ProverInstance& instan template class OinkProver; template class OinkProver; template class OinkProver; -#ifdef STARKNET_GARAGA_FLAVORS -template class OinkProver; -template class OinkProver; -#endif template class OinkProver; template class OinkProver; template class OinkProver; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp index 7ea8b35bf47..331939d1dfa 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_verifier.cpp @@ -1,7 +1,5 @@ #include "barretenberg/ultra_honk/oink_verifier.hpp" #include "barretenberg/common/throw_or_abort.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_flavor.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp" #include "barretenberg/flavor/mega_app_flavor.hpp" #include "barretenberg/flavor/mega_app_recursive_flavor.hpp" #include "barretenberg/flavor/mega_avm_recursive_flavor.hpp" @@ -184,10 +182,6 @@ template void OinkVerifier::complete_grand_product_rou template class OinkVerifier; template class OinkVerifier; template class OinkVerifier; -#ifdef STARKNET_GARAGA_FLAVORS -template class OinkVerifier; -template class OinkVerifier; -#endif template class OinkVerifier; template class OinkVerifier; template class OinkVerifier; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/permutation.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/permutation.test.cpp index 9337886b556..5c995279213 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/permutation.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/permutation.test.cpp @@ -6,23 +6,10 @@ using namespace bb; -#ifdef STARKNET_GARAGA_FLAVORS -using FlavorTypes = testing::Types; -#else using FlavorTypes = testing::Types; -#endif template using PermutationTests = UltraHonkTests; TYPED_TEST_SUITE(PermutationTests, FlavorTypes); -#ifdef STARKNET_GARAGA_FLAVORS -using NonZKFlavorTypes = testing::Types; -#else using NonZKFlavorTypes = testing::Types; -#endif template using PermutationNonZKTests = UltraHonkTests; TYPED_TEST_SUITE(PermutationNonZKTests, NonZKFlavorTypes); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.cpp index bf975b2b492..525cba0986d 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.cpp @@ -396,10 +396,6 @@ void ProverInstance_::populate_memory_records(const Circuit& circuit) template class ProverInstance_; template class ProverInstance_; template class ProverInstance_; -#ifdef STARKNET_GARAGA_FLAVORS -template class ProverInstance_; -template class ProverInstance_; -#endif template class ProverInstance_; template class ProverInstance_; template class ProverInstance_; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.hpp index 81b4b506f77..76e1ef28da8 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/prover_instance.hpp @@ -1,7 +1,5 @@ #pragma once #include "barretenberg/common/assert.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_flavor.hpp" -#include "barretenberg/ext/starknet/flavor/ultra_starknet_zk_flavor.hpp" #include "barretenberg/flavor/flavor.hpp" #include "barretenberg/flavor/mega_flavor.hpp" #include "barretenberg/flavor/mega_zk_flavor.hpp" diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/range_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/range_constraint.test.cpp index 00a685c211c..6018044e455 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/range_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/range_constraint.test.cpp @@ -5,16 +5,7 @@ using namespace bb; -#ifdef STARKNET_GARAGA_FLAVORS -using FlavorTypes = testing::Types; -#else using FlavorTypes = testing::Types; -#endif template using RangeTests = UltraHonkTests; TYPED_TEST_SUITE(RangeTests, FlavorTypes); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/rom_ram.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/rom_ram.test.cpp index 9cfef0f9428..0504d74bdbc 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/rom_ram.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/rom_ram.test.cpp @@ -5,16 +5,7 @@ using namespace bb; -#ifdef STARKNET_GARAGA_FLAVORS -using FlavorTypes = testing::Types; -#else using FlavorTypes = testing::Types; -#endif template class MemoryTests_ : public UltraHonkTests { public: diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp index d590355f1a4..12141674d23 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_honk.test.cpp @@ -11,16 +11,7 @@ using namespace bb; using AggregationState = stdlib::recursion::PairingPoints; -#ifdef STARKNET_GARAGA_FLAVORS -using FlavorTypes = testing::Types; -#else using FlavorTypes = testing::Types; -#endif TYPED_TEST_SUITE(UltraHonkTests, FlavorTypes); /** * @brief Check that size of a ultra honk proof matches the corresponding constant diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp index 9e649bf882c..22302924be0 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.cpp @@ -159,10 +159,6 @@ template void UltraProver_::execute_pcs() template class UltraProver_; template class UltraProver_; template class UltraProver_; -#ifdef STARKNET_GARAGA_FLAVORS -template class UltraProver_; -template class UltraProver_; -#endif template class UltraProver_; template class UltraProver_; template class UltraProver_; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.hpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.hpp index 61e20337fae..99d21e76949 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.hpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_prover.hpp @@ -52,10 +52,6 @@ template class UltraProver_ { using UltraProver = UltraProver_; using UltraZKProver = UltraProver_; using UltraKeccakProver = UltraProver_; -#ifdef STARKNET_GARAGA_FLAVORS -using UltraStarknetProver = UltraProver_; -using UltraStarknetZKProver = UltraProver_; -#endif using UltraKeccakZKProver = UltraProver_; using MegaProver = UltraProver_; using MegaZKProver = UltraProver_; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index f444ce4c2c4..4199fcde2e1 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -288,11 +288,6 @@ template class UltraVerifier_; template class UltraVerifier_; template class UltraVerifier_; // Chonk -#ifdef STARKNET_GARAGA_FLAVORS -template class UltraVerifier_; -template class UltraVerifier_; -#endif - // ===== RECURSIVE FLAVOR INSTANTIATIONS ===== // UltraRecursiveFlavor with DefaultIO diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.hpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.hpp index b4674c3049d..9e5701f5ba3 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.hpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.hpp @@ -229,10 +229,6 @@ using UltraZKVerifier = UltraVerifier_; using UltraRollupVerifier = UltraVerifier_; using UltraKeccakVerifier = UltraVerifier_; using UltraKeccakZKVerifier = UltraVerifier_; -#ifdef STARKNET_GARAGA_FLAVORS -using UltraStarknetVerifier = UltraVerifier_; -using UltraStarknetZKVerifier = UltraVerifier_; -#endif using MegaVerifier = UltraVerifier_; using MegaZKVerifier = UltraVerifier_; using MegaZKRecursiveVerifier = UltraVerifier_, diff --git a/barretenberg/docs/docs/bb-cli-reference.md b/barretenberg/docs/docs/bb-cli-reference.md index 60836d6b172..1afb8124beb 100644 --- a/barretenberg/docs/docs/bb-cli-reference.md +++ b/barretenberg/docs/docs/bb-cli-reference.md @@ -31,7 +31,7 @@ sidebar_position: 1000 - [bb write_vk](#bb-write_vk) ## bb -Barretenberg Your favo(u)rite zkSNARK library written in C++, a perfectly good computer programming language. Aztec Virtual Machine (AVM): disabled AVM Transpiler: enabled Starknet Garaga Extensions: disabled +Barretenberg Your favo(u)rite zkSNARK library written in C++, a perfectly good computer programming language. Aztec Virtual Machine (AVM): disabled AVM Transpiler: enabled **Usage:** ```bash diff --git a/barretenberg/docs/docs/cli_options.md b/barretenberg/docs/docs/cli_options.md index a1370d9a2d1..93757c17d7b 100644 --- a/barretenberg/docs/docs/cli_options.md +++ b/barretenberg/docs/docs/cli_options.md @@ -45,8 +45,6 @@ You can also set it via the `BB_VERIFIER_TARGET` environment variable. | `noir-recursive-no-zk` | poseidon2 | no | no | Noir recursion without privacy, such as aggregating proofs of already-private transactions. | | `noir-rollup` | poseidon2 | yes | IPA | Targeting the Aztec rollup verifier. Enables IPA (Inner Product Argument) proof aggregation across recursive steps. | | `noir-rollup-no-zk` | poseidon2 | no | IPA | Rollup verification without privacy. | -| `starknet` | starknet | yes | no | *Reserved for future use.* Starknet verification via the [Garaga](https://garaga.gitbook.io/garaga) library. Disabled in default builds. | -| `starknet-no-zk` | starknet | no | no | *Reserved for future use.* | :::tip[Working with Solidity] diff --git a/barretenberg/docs/docs/getting_started.md b/barretenberg/docs/docs/getting_started.md index 9b5f2912b61..e7ebb0faee1 100644 --- a/barretenberg/docs/docs/getting_started.md +++ b/barretenberg/docs/docs/getting_started.md @@ -80,16 +80,12 @@ bb prove -b ./target/hello_world.json -w ./target/hello_world.gz --verifier_targ # For recursive verification in Noir circuits (uses poseidon2 hash) bb prove -b ./target/hello_world.json -w ./target/hello_world.gz --verifier_target noir-recursive -o target - -# For Starknet verification via Garaga (reserved for future use — disabled in default builds) -bb prove -b ./target/hello_world.json -w ./target/hello_world.gz --verifier_target starknet -o target ``` Available targets: - `evm` / `evm-no-zk`: Ethereum/Solidity verification (keccak) - `noir-recursive` / `noir-recursive-no-zk`: Recursive verification in Noir circuits (poseidon2) - `noir-rollup` / `noir-rollup-no-zk`: Rollup circuits with IPA accumulation (poseidon2) -- `starknet` / `starknet-no-zk`: Starknet verification via Garaga (reserved for future use) For a detailed explanation of each target, see the [CLI Options guide](./cli_options.md). diff --git a/barretenberg/docs/docs/how_to_guides/on-the-browser.md b/barretenberg/docs/docs/how_to_guides/on-the-browser.md index 0a92f22455f..713dd537499 100644 --- a/barretenberg/docs/docs/how_to_guides/on-the-browser.md +++ b/barretenberg/docs/docs/how_to_guides/on-the-browser.md @@ -56,7 +56,6 @@ UltraHonk supports different verifier targets for different verification environ - `evm` / `evm-no-zk`: For Ethereum/Solidity verification (uses keccak) - `noir-recursive` / `noir-recursive-no-zk`: For recursive verification in Noir circuits (uses poseidon2) - `noir-rollup` / `noir-rollup-no-zk`: For rollup circuits with IPA accumulation (uses poseidon2) -- `starknet` / `starknet-no-zk`: For Starknet verification via Garaga (reserved for future use) #include_code verifier_targets examples/basic.test.ts typescript diff --git a/barretenberg/docs/docs/index.md b/barretenberg/docs/docs/index.md index b51e0f4b2c2..320273b5a2f 100644 --- a/barretenberg/docs/docs/index.md +++ b/barretenberg/docs/docs/index.md @@ -86,7 +86,7 @@ Barretenberg produces Solidity smart contracts meant to be used on several EVM n - BSC - And many others -Several teams have been writing Barretenberg verifier implementations for other frameworks, for example [Starknet's Garaga](https://garaga.gitbook.io/garaga/deploy-your-snark-verifier-on-starknet/noir). +Several teams have been writing Barretenberg verifier implementations for other frameworks, for example [Starknet's Garaga](https://garaga.gitbook.io/garaga/smart-contract-generators/noir). ## Use Cases diff --git a/barretenberg/ts/bb.js/src/barretenberg/backend.ts b/barretenberg/ts/bb.js/src/barretenberg/backend.ts index 3cba2d95baf..dd74372e44a 100644 --- a/barretenberg/ts/bb.js/src/barretenberg/backend.ts +++ b/barretenberg/ts/bb.js/src/barretenberg/backend.ts @@ -22,9 +22,7 @@ export type VerifierTarget = | 'noir-recursive' // Recursive verification in Noir circuits (poseidon2, ZK enabled) | 'noir-recursive-no-zk' // Recursive verification without ZK | 'noir-rollup' // Rollup circuits with IPA accumulation (poseidon2, ZK enabled) - | 'noir-rollup-no-zk' // Rollup circuits without ZK - | 'starknet' // Starknet verification via Garaga (ZK enabled) - | 'starknet-no-zk'; // Starknet without zero-knowledge + | 'noir-rollup-no-zk'; // Rollup circuits without ZK /** * Options for the UltraHonkBackend. @@ -49,10 +47,6 @@ export type UltraHonkBackendOptions = { keccak?: boolean; /** @deprecated Use verifierTarget: 'evm' instead */ keccakZK?: boolean; - /** @deprecated Use verifierTarget: 'starknet-no-zk' instead */ - starknet?: boolean; - /** @deprecated Use verifierTarget: 'starknet' instead */ - starknetZK?: boolean; }; function getProofSettingsFromOptions(options?: UltraHonkBackendOptions): { @@ -63,12 +57,9 @@ function getProofSettingsFromOptions(options?: UltraHonkBackendOptions): { } { // Check for conflicting options - verifierTarget should not be combined with legacy options if (options?.verifierTarget) { - const legacyOptions = [options.keccak, options.keccakZK, options.starknet, options.starknetZK].filter(Boolean); + const legacyOptions = [options.keccak, options.keccakZK].filter(Boolean); if (legacyOptions.length > 0) { - throw new Error( - 'Cannot use verifierTarget with legacy options (keccak, keccakZK, starknet, starknetZK). ' + - 'Use verifierTarget alone.', - ); + throw new Error('Cannot use verifierTarget with legacy options (keccak, keccakZK). Use verifierTarget alone.'); } switch (options.verifierTarget) { @@ -104,33 +95,14 @@ function getProofSettingsFromOptions(options?: UltraHonkBackendOptions): { disableZk: true, optimizedSolidityVerifier: false, }; - case 'starknet': - return { - ipaAccumulation: false, - oracleHashType: 'starknet', - disableZk: false, - optimizedSolidityVerifier: false, - }; - case 'starknet-no-zk': - return { - ipaAccumulation: false, - oracleHashType: 'starknet', - disableZk: true, - optimizedSolidityVerifier: false, - }; } } // Legacy options support (deprecated) return { ipaAccumulation: false, - oracleHashType: - options?.keccak || options?.keccakZK - ? 'keccak' - : options?.starknet || options?.starknetZK - ? 'starknet' - : 'poseidon2', - disableZk: options?.keccak || options?.starknet ? true : false, + oracleHashType: options?.keccak || options?.keccakZK ? 'keccak' : 'poseidon2', + disableZk: options?.keccak ? true : false, optimizedSolidityVerifier: false, }; } diff --git a/docs/docs-words.txt b/docs/docs-words.txt index d4982de77fc..c1c07e22e8e 100644 --- a/docs/docs-words.txt +++ b/docs/docs-words.txt @@ -168,7 +168,6 @@ footgun functionelector funder fusaka -Garaga GASLEFT gasleft genric