20#ifdef STARKNET_GARAGA_FLAVORS
21#include "barretenberg/flavor/ultra_starknet_flavor.hpp"
22#include "barretenberg/flavor/ultra_starknet_zk_flavor.hpp"
32#if !defined(__wasm__) && !defined(_WIN32)
33#define BB_HAS_BATCH_VERIFIER_SERVICE
44template <
typename VK>
inline void validate_vk_size(
const std::vector<uint8_t>& vk_bytes)
46 const size_t expected_size = VK::calc_num_data_types() *
sizeof(
bb::fr);
47 if (vk_bytes.size() != expected_size) {
155 if (
type ==
"keccak") {
158 if (
type ==
"starknet") {
169 if (policy ==
"check") {
172 if (policy ==
"recompute") {
175 if (policy ==
"rewrite") {
181#ifdef BB_HAS_BATCH_VERIFIER_SERVICE
183class ChonkBatchVerifierService;
199#ifdef BB_HAS_BATCH_VERIFIER_SERVICE
218#define BBAPI_ERROR(request, msg) \
220 (request).error_message = (msg); \
249template <
typename Flavor>
256 for (
const auto& val : public_inputs) {
258 throw_or_abort(
"Non-canonical public input: value >= field modulus");
261 for (
const auto& val : proof) {
263 throw_or_abort(
"Non-canonical proof element: value >= field modulus");
267 result.reserve(public_inputs.size() + proof.size());
268 result.insert(
result.end(), public_inputs.begin(), public_inputs.end());
269 result.insert(
result.end(), proof.begin(), proof.end());
278 auto fields =
vk.to_field_elements();
301 throw_or_abort(
"Rollup circuits (ipa_accumulation=true) must use oracle_hash_type='poseidon2', got '" +
347#ifdef STARKNET_GARAGA_FLAVORS
350 return operation.template operator()<UltraStarknetFlavor,
DefaultIO>();
352 return operation.template operator()<UltraStarknetZKFlavor,
DefaultIO>();
Manages the data that is propagated on the public inputs of an application/function circuit.
typename Curve::ScalarField FF
The data that is propagated on the public inputs of a rollup circuit.
Child class of UltraFlavor that runs with ZK Sumcheck.
OracleHashType
Convert oracle hash type string to enum for internal use.
VkPolicy
Policy for handling verification keys during IVC accumulation.
void validate_rollup_settings(const ProofSystemSettings &settings)
Validate rollup circuit settings.
std::vector< uint256_t > vk_to_uint256_fields(const VK &vk)
Convert VK to uint256 field elements, handling flavor-specific return types.
VkPolicy parse_vk_policy(const std::string &policy)
Convert VK policy string to enum for internal use.
Flavor::Transcript::Proof concatenate_proof(const std::vector< uint256_t > &public_inputs, const std::vector< uint256_t > &proof)
Concatenate public inputs and proof into a complete proof for verification.
auto dispatch_by_settings(const ProofSystemSettings &settings, Operation &&operation)
Dispatch to the correct Flavor and IO type based on proof system settings.
OracleHashType parse_oracle_hash_type(const std::string &type)
void validate_vk_size(const std::vector< uint8_t > &vk_bytes)
Validate verification key size before deserialization.
field< Bn254FrParams > fr
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string to_string(bb::avm2::ValueTag tag)
std::string loaded_circuit_name
CircuitKind loaded_circuit_kind
std::shared_ptr< ChonkBatchVerifierService > batch_verifier_service
std::string error_message
std::shared_ptr< ChonkStepProcessor > ivc_in_progress
std::vector< uint8_t > loaded_circuit_vk
std::optional< acir_format::AcirFormat > loaded_circuit_constraints
Error response returned when a command fails.
SERIALIZATION_FIELDS(message)
bool operator==(const ErrorResponse &) const =default
static constexpr const char MSGPACK_SCHEMA_NAME[]
bool ipa_accumulation
Optional flag to indicate if the proof should be generated with IPA accumulation (i....
SERIALIZATION_FIELDS(ipa_accumulation, oracle_hash_type, disable_zk, optimized_solidity_verifier)
bool operator==(const ProofSystemSettings &other) const =default
bool optimized_solidity_verifier
std::string oracle_hash_type
The oracle hash type to be used for the proof.
bool disable_zk
Flag to disable blinding of the proof. Useful for cases that don't require privacy,...
static constexpr const char MSGPACK_SCHEMA_NAME[]
bool operator==(const Response &) const =default
void msgpack(auto &&pack_fn)
void msgpack(auto &&pack_fn)
static constexpr const char MSGPACK_SCHEMA_NAME[]
bool operator==(const Shutdown &) const =default
Response execute(const BBApiRequest &) &&
static constexpr uint256_t modulus
void throw_or_abort(std::string const &err)