Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
acir_format Namespace Reference

Namespaces

namespace  tests
 

Classes

struct  AcirFormat
 
struct  AcirFormatOriginalOpcodeIndices
 Indices of the original opcode that originated each constraint in AcirFormat. More...
 
struct  AcirProgram
 
struct  AcirProgramStack
 Storage for constaint_systems/witnesses for a stack of acir programs. More...
 
struct  AES128Constraint
 
struct  AES128Input
 
struct  BigIntFromLeBytes
 
struct  BigIntOperation
 
struct  BigIntToLeBytes
 
struct  Blake2sConstraint
 
struct  Blake2sInput
 
struct  Blake3Constraint
 
struct  Blake3Input
 
struct  BlockConstraint
 
class  DSLBigInts
 
struct  EcAdd
 
struct  EcdsaConstraint
 ECDSA constraints. More...
 
class  GateCounter
 Utility class for tracking the gate count of acir constraints. More...
 
struct  HashInput
 
struct  HonkRecursionConstraintsOutput
 
struct  Keccakf1600
 
struct  LogicConstraint
 
struct  MemOp
 
class  ModulusParam
 
struct  MultiScalarMul
 
struct  Poseidon2Constraint
 
struct  ProgramMetadata
 
class  ProofSurgeon
 
struct  RangeConstraint
 
struct  RecursionConstraint
 RecursionConstraint struct contains information required to recursively verify a proof! More...
 
struct  Sha256Compression
 
struct  Sha256Input
 
struct  WitnessOrConstant
 

Typedefs

using WitnessVector = bb::SlabVector< bb::fr >
 
using WitnessVectorStack = std::vector< std::pair< uint32_t, WitnessVector > >
 
using field_ct = stdlib::field_t< Builder >
 
using bn254 = stdlib::bn254< Builder >
 
using PairingPoints = bb::stdlib::recursion::PairingPoints< Builder >
 
using Builder = bb::UltraCircuitBuilder
 
template<typename Builder >
using HonkRecursionConstraintOutput = bb::stdlib::recursion::honk::UltraRecursiveVerifierOutput< Builder >
 

Enumerations

enum  BigIntOperationType { Add , Sub , Mul , Div }
 
enum  ModulusId {
  BN254_FQ = 0 , BN254_FR , SECP256K1_FQ , SECP256K1_FR ,
  SECP256R1_FQ , SECP256R1_FR , UNKNOWN
}
 
enum  BlockType { ROM = 0 , RAM = 1 , CallData = 2 , ReturnData = 3 }
 
enum  PROOF_TYPE {
  PLONK , HONK , OINK , PG ,
  AVM , ROLLUP_HONK , ROOT_ROLLUP_HONK , HONK_ZK ,
  PG_FINAL , PG_TAIL , CIVC
}
 

Functions

template<typename Builder >
void perform_full_IPA_verification (Builder &builder, const std::vector< OpeningClaim< stdlib::grumpkin< Builder > > > &nested_ipa_claims, const std::vector< stdlib::Proof< Builder > > &nested_ipa_proofs)
 Perform full recursive IPA verification.
 
template<typename Builder >
std::pair< OpeningClaim< stdlib::grumpkin< Builder > >, HonkProofhandle_IPA_accumulation (Builder &builder, const std::vector< OpeningClaim< stdlib::grumpkin< Builder > > > &nested_ipa_claims, const std::vector< stdlib::Proof< Builder > > &nested_ipa_proofs)
 Set the IPA claim and proof.
 
template<typename Builder >
void build_constraints (Builder &builder, AcirProgram &program, const ProgramMetadata &metadata)
 
template<typename Builder >
HonkRecursionConstraintsOutput< Builderprocess_honk_recursion_constraints (Builder &builder, AcirFormat &constraint_system, bool has_valid_witness_assignments, GateCounter< Builder > &gate_counter)
 
void process_pg_recursion_constraints (MegaCircuitBuilder &builder, AcirFormat &constraints, std::shared_ptr< ClientIVC > ivc, bool has_valid_witness_assignments, GateCounter< MegaCircuitBuilder > &gate_counter)
 
HonkRecursionConstraintsOutput< Builderprocess_civc_recursion_constraints (Builder &builder, AcirFormat &constraint_system, bool has_valid_witness_assignments, GateCounter< Builder > &gate_counter)
 
HonkRecursionConstraintsOutput< Builderprocess_avm_recursion_constraints (Builder &builder, AcirFormat &constraint_system, bool has_valid_witness_assignments, GateCounter< Builder > &gate_counter)
 
template<>
UltraCircuitBuilder create_circuit (AcirProgram &program, const ProgramMetadata &metadata)
 Specialization for creating an Ultra circuit from an acir program.
 
template<>
MegaCircuitBuilder create_circuit (AcirProgram &program, const ProgramMetadata &metadata)
 Specialization for creating a Mega circuit from an acir program.
 
template void build_constraints< MegaCircuitBuilder > (MegaCircuitBuilder &, AcirProgram &, const ProgramMetadata &)
 
template<typename Builder = bb::UltraCircuitBuilder>
Builder create_circuit (AcirProgram &program, const ProgramMetadata &metadata=ProgramMetadata{})
 
template<typename T >
deserialize_any_format (std::vector< uint8_t > &&buf, std::function< T(msgpack::object const &)> decode_msgpack, std::function< T(std::vector< uint8_t >)> decode_bincode)
 Deserialize buf either based on the first byte interpreted as a Noir serialization format byte, or falling back to bincode if the format cannot be recognized. Currently only msgpack format is expected, or the legacy bincode format.
 
Acir::Program deserialize_program (std::vector< uint8_t > &&buf)
 Deserializes a Program from bytes, trying msgpack or bincode formats.
 
Witnesses::WitnessStack deserialize_witness_stack (std::vector< uint8_t > &&buf)
 Deserializes a WitnessStack from bytes, trying msgpack or bincode formats.
 
poly_triple serialize_arithmetic_gate (Acir::Expression const &arg)
 Construct a poly_tuple for a standard width-3 arithmetic gate from its acir representation.
 
void assign_linear_term (mul_quad_< fr > &gate, int index, uint32_t witness_index, fr const &scaling)
 Assigns a linear term to a specific index in a mul_quad_ gate.
 
std::vector< mul_quad_< fr > > split_into_mul_quad_gates (Acir::Expression const &arg)
 Accumulate the input expression into a serie of quad gates.
 
mul_quad_< frserialize_mul_quad_gate (Acir::Expression const &arg)
 
void constrain_witnesses (Acir::Opcode::AssertZero const &arg, AcirFormat &af)
 
std::pair< uint32_t, uint32_t > is_assert_equal (Acir::Opcode::AssertZero const &arg, poly_triple const &pt, AcirFormat const &af)
 
void handle_arithmetic (Acir::Opcode::AssertZero const &arg, AcirFormat &af, size_t opcode_index)
 
uint32_t get_witness_from_function_input (Acir::FunctionInput input)
 
WitnessOrConstant< bb::frparse_input (Acir::FunctionInput input)
 
void handle_blackbox_func_call (Acir::Opcode::BlackBoxFuncCall const &arg, AcirFormat &af, size_t opcode_index)
 
BlockConstraint handle_memory_init (Acir::Opcode::MemoryInit const &mem_init)
 
bool is_rom (Acir::MemOp const &mem_op)
 
uint32_t poly_to_witness (const poly_triple poly)
 
void handle_memory_op (Acir::Opcode::MemoryOp const &mem_op, AcirFormat &af, BlockConstraint &block)
 
AcirFormat circuit_serde_to_acir_format (Acir::Circuit const &circuit)
 
AcirFormat circuit_buf_to_acir_format (std::vector< uint8_t > &&buf)
 
WitnessVector witness_map_to_witness_vector (Witnesses::WitnessMap const &witness_map)
 Converts from the ACIR-native WitnessMap format to Barretenberg's internal WitnessVector format.
 
WitnessVector witness_buf_to_witness_data (std::vector< uint8_t > &&buf)
 Converts from the ACIR-native WitnessStack format to Barretenberg's internal WitnessVector format.
 
std::vector< AcirFormatprogram_buf_to_acir_format (std::vector< uint8_t > &&buf)
 
WitnessVectorStack witness_buf_to_witness_stack (std::vector< uint8_t > &&buf)
 
AcirProgramStack get_acir_program_stack (std::string const &bytecode_path, std::string const &witness_path)
 
template<typename Builder >
void create_aes128_constraints (Builder &builder, const AES128Constraint &constraint)
 
template void create_aes128_constraints< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const AES128Constraint &constraint)
 
template void create_aes128_constraints< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const AES128Constraint &constraint)
 
HonkRecursionConstraintOutput< Buildercreate_avm2_recursion_constraints_goblin (Builder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 Add constraints associated with recursive verification of an AVM2 proof using Goblin.
 
ModulusId modulus_param_to_id (ModulusParam param)
 
template void create_bigint_operations_constraint< UltraCircuitBuilder > (const BigIntOperation &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigint, bool has_valid_witness_assignments)
 
template void create_bigint_operations_constraint< MegaCircuitBuilder > (const BigIntOperation &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigint, bool has_valid_witness_assignments)
 
template void create_bigint_addition_constraint< UltraCircuitBuilder > (const BigIntOperation &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigint)
 
template void create_bigint_addition_constraint< MegaCircuitBuilder > (const BigIntOperation &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigint)
 
template void create_bigint_sub_constraint< UltraCircuitBuilder > (const BigIntOperation &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigint)
 
template void create_bigint_sub_constraint< MegaCircuitBuilder > (const BigIntOperation &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigint)
 
template void create_bigint_mul_constraint< UltraCircuitBuilder > (const BigIntOperation &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigint)
 
template void create_bigint_mul_constraint< MegaCircuitBuilder > (const BigIntOperation &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigint)
 
template void create_bigint_div_constraint< UltraCircuitBuilder > (const BigIntOperation &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigint, bool has_valid_witness_assignments)
 
template void create_bigint_div_constraint< MegaCircuitBuilder > (const BigIntOperation &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigint, bool has_valid_witness_assignments)
 
template<typename Builder >
void create_bigint_addition_constraint (const BigIntOperation &input, DSLBigInts< Builder > &dsl_bigint)
 
template<typename Builder >
void create_bigint_sub_constraint (const BigIntOperation &input, DSLBigInts< Builder > &dsl_bigint)
 
template<typename Builder >
void create_bigint_mul_constraint (const BigIntOperation &input, DSLBigInts< Builder > &dsl_bigint)
 
template<typename Builder >
void create_bigint_div_constraint (const BigIntOperation &input, DSLBigInts< Builder > &dsl_bigint, bool has_valid_witness_assignments)
 
template<typename Builder >
void create_bigint_operations_constraint (const BigIntOperation &input, DSLBigInts< Builder > &dsl_bigint, bool has_valid_witness_assignments)
 
template<typename Builder >
void create_bigint_from_le_bytes_constraint (Builder &builder, const BigIntFromLeBytes &input, DSLBigInts< Builder > &dsl_bigints)
 
template<typename Builder >
void create_bigint_to_le_bytes_constraint (Builder &builder, const BigIntToLeBytes &input, DSLBigInts< Builder > &dsl_bigints)
 
template void create_bigint_from_le_bytes_constraint< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const BigIntFromLeBytes &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigints)
 
template void create_bigint_from_le_bytes_constraint< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const BigIntFromLeBytes &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigints)
 
template void create_bigint_to_le_bytes_constraint< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const BigIntToLeBytes &input, DSLBigInts< UltraCircuitBuilder > &dsl_bigints)
 
template void create_bigint_to_le_bytes_constraint< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const BigIntToLeBytes &input, DSLBigInts< MegaCircuitBuilder > &dsl_bigints)
 
template<typename Builder >
void create_blake2s_constraints (Builder &builder, const Blake2sConstraint &constraint)
 
template void create_blake2s_constraints< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const Blake2sConstraint &constraint)
 
template void create_blake2s_constraints< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const Blake2sConstraint &constraint)
 
template<typename Builder >
void create_blake3_constraints (Builder &builder, const Blake3Constraint &constraint)
 
template void create_blake3_constraints< bb::UltraCircuitBuilder > (bb::UltraCircuitBuilder &builder, const Blake3Constraint &constraint)
 
template void create_blake3_constraints< bb::MegaCircuitBuilder > (bb::MegaCircuitBuilder &builder, const Blake3Constraint &constraint)
 
template<typename Builder >
stdlib::field_t< Builderpoly_to_field_ct (const poly_triple poly, Builder &builder)
 
template<>
void create_block_constraints (UltraCircuitBuilder &builder, const BlockConstraint &constraint, bool has_valid_witness_assignments)
 Create block constraints; Specialization for Ultra arithmetization.
 
template<>
void create_block_constraints (MegaCircuitBuilder &builder, const BlockConstraint &constraint, bool has_valid_witness_assignments)
 Create block constraints; Specialization for Mega arithmetization.
 
template<typename Builder >
void process_ROM_operations (Builder &builder, const BlockConstraint &constraint, bool has_valid_witness_assignments, std::vector< bb::stdlib::field_t< Builder > > &init)
 
template<typename Builder >
void process_RAM_operations (Builder &builder, const BlockConstraint &constraint, bool has_valid_witness_assignments, std::vector< bb::stdlib::field_t< Builder > > &init)
 
template<typename Builder >
void process_call_data_operations (Builder &builder, const BlockConstraint &constraint, bool has_valid_witness_assignments, std::vector< bb::stdlib::field_t< Builder > > &init)
 
template<typename Builder >
void process_return_data_operations (const BlockConstraint &constraint, std::vector< bb::stdlib::field_t< Builder > > &init)
 
template<typename Builder >
void create_block_constraints (Builder &builder, const BlockConstraint &constraint, bool has_valid_witness_assignments=true)
 
template<typename B >
void read (B &buf, MemOp &mem_op)
 
template<typename B >
void write (B &buf, MemOp const &mem_op)
 
template<typename B >
void read (B &buf, BlockConstraint &constraint)
 
template<typename B >
void write (B &buf, BlockConstraint const &constraint)
 
void create_dummy_vkey_and_proof (Builder &builder, size_t proof_size, size_t public_inputs_size, const std::vector< field_ct > &key_fields, const std::vector< field_ct > &proof_fields)
 Creates a dummy vkey and proof object.
 
HonkRecursionConstraintOutput< Buildercreate_civc_recursion_constraints (Builder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 Add constraints associated with recursive verification of an CIVC proof.
 
template<typename Builder >
void create_ec_add_constraint (Builder &builder, const EcAdd &input, bool has_valid_witness_assignments)
 
template void create_ec_add_constraint< bb::UltraCircuitBuilder > (bb::UltraCircuitBuilder &builder, const EcAdd &input, bool has_valid_witness_assignments)
 
template void create_ec_add_constraint< bb::MegaCircuitBuilder > (bb::MegaCircuitBuilder &builder, const EcAdd &input, bool has_valid_witness_assignments)
 
template<typename Curve >
void create_ecdsa_verify_constraints (typename Curve::Builder &builder, const EcdsaConstraint &input, bool has_valid_witness_assignments)
 Create constraints to verify an ECDSA signature.
 
template<typename Curve >
void create_dummy_ecdsa_constraint (typename Curve::Builder &builder, const std::vector< stdlib::field_t< typename Curve::Builder > > &hashed_message_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &r_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &s_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &pub_x_fields, const std::vector< stdlib::field_t< typename Curve::Builder > > &pub_y_fields, const stdlib::field_t< typename Curve::Builder > &result_field)
 Generate dummy ECDSA constraints when the builder doesn't have witnesses.
 
template void create_ecdsa_verify_constraints< stdlib::secp256k1< UltraCircuitBuilder > > (UltraCircuitBuilder &builder, const EcdsaConstraint &input, bool has_valid_witness_assignments)
 
template void create_ecdsa_verify_constraints< stdlib::secp256k1< MegaCircuitBuilder > > (MegaCircuitBuilder &builder, const EcdsaConstraint &input, bool has_valid_witness_assignments)
 
template void create_ecdsa_verify_constraints< stdlib::secp256r1< UltraCircuitBuilder > > (UltraCircuitBuilder &builder, const EcdsaConstraint &input, bool has_valid_witness_assignments)
 
template void create_ecdsa_verify_constraints< stdlib::secp256r1< MegaCircuitBuilder > > (MegaCircuitBuilder &builder, const EcdsaConstraint &input, bool has_valid_witness_assignments)
 
template void create_dummy_ecdsa_constraint< stdlib::secp256k1< UltraCircuitBuilder > > (UltraCircuitBuilder &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const stdlib::field_t< UltraCircuitBuilder > &)
 
template void create_dummy_ecdsa_constraint< stdlib::secp256r1< UltraCircuitBuilder > > (UltraCircuitBuilder &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const std::vector< stdlib::field_t< UltraCircuitBuilder > > &, const stdlib::field_t< UltraCircuitBuilder > &)
 
template<typename Flavor >
requires (IsRecursiveFlavor<Flavor> && IsUltraHonk<typename Flavor::NativeFlavor>)
HonkRecursionConstraintOutput< typename Flavor::CircuitBuildercreate_honk_recursion_constraints (typename Flavor::CircuitBuilder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 Add constraints required to recursively verify an UltraHonk proof.
 
template HonkRecursionConstraintOutput< UltraCircuitBuildercreate_honk_recursion_constraints< UltraRecursiveFlavor_< UltraCircuitBuilder > > (UltraCircuitBuilder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 
template HonkRecursionConstraintOutput< UltraCircuitBuildercreate_honk_recursion_constraints< UltraRollupRecursiveFlavor_< UltraCircuitBuilder > > (UltraCircuitBuilder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 
template HonkRecursionConstraintOutput< MegaCircuitBuildercreate_honk_recursion_constraints< UltraRecursiveFlavor_< MegaCircuitBuilder > > (MegaCircuitBuilder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 
template HonkRecursionConstraintOutput< MegaCircuitBuildercreate_honk_recursion_constraints< UltraZKRecursiveFlavor_< MegaCircuitBuilder > > (MegaCircuitBuilder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 
template HonkRecursionConstraintOutput< UltraCircuitBuildercreate_honk_recursion_constraints< UltraZKRecursiveFlavor_< UltraCircuitBuilder > > (UltraCircuitBuilder &builder, const RecursionConstraint &input, bool has_valid_witness_assignments)
 
template<typename Builder >
void create_keccak_permutations (Builder &builder, const Keccakf1600 &constraint)
 
template void create_keccak_permutations< bb::UltraCircuitBuilder > (bb::UltraCircuitBuilder &builder, const Keccakf1600 &constraint)
 
template void create_keccak_permutations< bb::MegaCircuitBuilder > (bb::MegaCircuitBuilder &builder, const Keccakf1600 &constraint)
 
template<typename Builder >
void create_logic_gate (Builder &builder, const WitnessOrConstant< bb::fr > a, const WitnessOrConstant< bb::fr > b, const uint32_t result, const size_t num_bits, const bool is_xor_gate)
 
template void create_logic_gate< bb::MegaCircuitBuilder > (bb::MegaCircuitBuilder &builder, const WitnessOrConstant< bb::fr > a, const WitnessOrConstant< bb::fr > b, const uint32_t result, const size_t num_bits, const bool is_xor_gate)
 
template void create_logic_gate< bb::UltraCircuitBuilder > (bb::UltraCircuitBuilder &builder, const WitnessOrConstant< bb::fr > a, const WitnessOrConstant< bb::fr > b, const uint32_t result, const size_t num_bits, const bool is_xor_gate)
 
template<typename Builder >
void create_logic_gate (Builder &builder, WitnessOrConstant< bb::fr > a, WitnessOrConstant< bb::fr > b, uint32_t result, std::size_t num_bits, bool is_xor_gate)
 
void xor_gate (Builder &builder, WitnessOrConstant< bb::fr > a, WitnessOrConstant< bb::fr > b, uint32_t result)
 
void and_gate (Builder &builder, WitnessOrConstant< bb::fr > a, WitnessOrConstant< bb::fr > b, uint32_t result)
 
template<class Curve = curve::BN254>
void populate_field_elements_for_mock_commitments (std::vector< fr > &fields, const size_t &num_commitments)
 Helper to populate a field buffer with fields corresponding to some number of mock commitment values.
 
template<class FF = curve::BN254::ScalarField>
void populate_field_elements (std::vector< fr > &fields, const size_t &num_elements, std::optional< FF > value=std::nullopt)
 Helper to populate a field buffer with some number of field elements.
 
template<typename Flavor , class PublicInputs >
HonkProof create_mock_oink_proof (const size_t inner_public_inputs_size)
 Create a mock oink proof that has the correct structure but is not in general valid.
 
template<typename Flavor >
HonkProof create_mock_decider_proof ()
 Create a mock decider proof that has the correct structure but is not in general valid.
 
template<typename Flavor , class PublicInputs >
HonkProof create_mock_honk_proof (const size_t inner_public_inputs_size)
 Create a mock honk proof that has the correct structure but is not in general valid.
 
template<typename Flavor , class PublicInputs >
HonkProof create_mock_pg_proof ()
 Create a mock PG proof that has the correct structure but is not in general valid.
 
Goblin::MergeProof create_mock_merge_proof ()
 Create a mock merge proof which has the correct structure but is not necessarily valid.
 
template<typename Builder >
HonkProof create_mock_civc_proof (const size_t inner_public_inputs_size)
 
HonkProof create_mock_pre_ipa_proof ()
 Create a mock pre-ipa proof which has the correct structure but is not necessarily valid.
 
HonkProof create_mock_ipa_proof ()
 Create a mock ipa proof which has the correct structure but is not necessarily valid.
 
HonkProof create_mock_translator_proof ()
 Create a mock translator proof which has the correct structure but is not necessarily valid.
 
template<typename Flavor , class PublicInputs >
std::shared_ptr< typename Flavor::VerificationKeycreate_mock_honk_vk (const size_t dyadic_size, const size_t pub_inputs_offset, const size_t inner_public_inputs_size)
 Create a mock MegaHonk VK that has the correct structure.
 
template<typename Flavor >
std::shared_ptr< DeciderVerificationKey_< Flavor > > create_mock_decider_vk ()
 Create a mock Decider verification key for initilization of a mock verifier accumulator.
 
template HonkProof create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::AppIO > (const size_t)
 
template HonkProof create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::KernelIO > (const size_t)
 
template HonkProof create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_oink_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_oink_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_oink_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_oink_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_oink_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO > (const size_t)
 
template HonkProof create_mock_decider_proof< MegaFlavor > ()
 
template HonkProof create_mock_decider_proof< UltraFlavor > ()
 
template HonkProof create_mock_decider_proof< UltraZKFlavor > ()
 
template HonkProof create_mock_decider_proof< UltraRollupFlavor > ()
 
template HonkProof create_mock_decider_proof< TranslatorFlavor > ()
 
template HonkProof create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::AppIO > (const size_t)
 
template HonkProof create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::KernelIO > (const size_t)
 
template HonkProof create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_honk_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_honk_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_honk_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_honk_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > (const size_t)
 
template HonkProof create_mock_honk_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO > (const size_t)
 
template HonkProof create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::AppIO > ()
 
template HonkProof create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::KernelIO > ()
 
template HonkProof create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > > ()
 
template HonkProof create_mock_civc_proof< UltraCircuitBuilder > (const size_t)
 
template HonkProof create_mock_civc_proof< MegaCircuitBuilder > (const size_t)
 
template std::shared_ptr< MegaFlavor::VerificationKeycreate_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::AppIO > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< MegaFlavor::VerificationKeycreate_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::KernelIO > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< MegaFlavor::VerificationKeycreate_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< MegaZKFlavor::VerificationKey > create_mock_honk_vk< MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO< UltraCircuitBuilder > > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< UltraFlavor::VerificationKeycreate_mock_honk_vk< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< UltraZKFlavor::VerificationKey > create_mock_honk_vk< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< UltraFlavor::VerificationKeycreate_mock_honk_vk< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< UltraZKFlavor::VerificationKey > create_mock_honk_vk< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< UltraRollupFlavor::VerificationKeycreate_mock_honk_vk< UltraRollupFlavor, stdlib::recursion::honk::RollupIO > (const size_t, const size_t, const size_t)
 
template std::shared_ptr< DeciderVerificationKey_< MegaFlavor > > create_mock_decider_vk< MegaFlavor > ()
 
template<typename Flavor , class PublicInputs >
bb::HonkProof create_mock_oink_proof (const size_t inner_public_inputs_size=0)
 Create a mock oink proof that has the correct structure but is not in general valid.
 
template<typename Flavor >
bb::HonkProof create_mock_decider_proof ()
 Create a mock decider proof that has the correct structure but is not in general valid.
 
template<typename Flavor , class PublicInputs >
bb::HonkProof create_mock_honk_proof (const size_t inner_public_inputs_size=0)
 Create a mock honk proof that has the correct structure but is not in general valid.
 
template<typename Flavor , class PublicInputs >
bb::HonkProof create_mock_pg_proof ()
 Create a mock PG proof that has the correct structure but is not in general valid.
 
template<typename Builder >
bb::HonkProof create_mock_civc_proof (const size_t inner_public_inputs_size=0)
 
template<typename Flavor >
std::shared_ptr< bb::DeciderVerificationKey_< Flavor > > create_mock_decider_vk ()
 Create a mock Decider verification key for initilization of a mock verifier accumulator.
 
template<typename Builder >
void create_multi_scalar_mul_constraint (Builder &builder, const MultiScalarMul &input, bool has_valid_witness_assignments)
 
template void create_multi_scalar_mul_constraint< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const MultiScalarMul &input, bool has_valid_witness_assignments)
 
template void create_multi_scalar_mul_constraint< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const MultiScalarMul &input, bool has_valid_witness_assignments)
 
std::shared_ptr< ClientIVCcreate_mock_ivc_from_constraints (const std::vector< RecursionConstraint > &constraints, const TraceSettings &trace_settings)
 Create an IVC object with mocked state corresponding to a set of IVC recursion constraints.
 
ClientIVC::VerifierInputs create_mock_verification_queue_entry (const ClientIVC::QUEUE_TYPE verification_type, const TraceSettings &trace_settings, const bool is_kernel)
 Create a mock verification queue entry with proof and VK that have the correct structure but are not necessarily valid.
 
void mock_ivc_accumulation (const std::shared_ptr< ClientIVC > &ivc, ClientIVC::QUEUE_TYPE type, const bool is_kernel)
 Populate an IVC instance with data that mimics the state after a single IVC accumulation (Oink or PG)
 
void populate_dummy_vk_in_constraint (MegaCircuitBuilder &builder, const std::shared_ptr< MegaFlavor::VerificationKey > &mock_verification_key, std::vector< uint32_t > &key_witness_indices)
 Populate VK witness fields from a recursion constraint from a provided VerificationKey.
 
template<typename Builder >
void create_poseidon2_permutations (Builder &builder, const Poseidon2Constraint &constraint)
 
template void create_poseidon2_permutations< UltraCircuitBuilder > (UltraCircuitBuilder &builder, const Poseidon2Constraint &constraint)
 
template void create_poseidon2_permutations< MegaCircuitBuilder > (MegaCircuitBuilder &builder, const Poseidon2Constraint &constraint)
 
template<typename B >
void read (B &buf, RecursionConstraint &constraint)
 
template<typename B >
void write (B &buf, RecursionConstraint const &constraint)
 
uint32_t round_to_nearest_mul_8 (uint32_t num_bits)
 
uint32_t round_to_nearest_byte (uint32_t num_bits)
 
template<typename Builder >
void create_sha256_compression_constraints (Builder &builder, const Sha256Compression &constraint)
 
template void create_sha256_compression_constraints< bb::UltraCircuitBuilder > (bb::UltraCircuitBuilder &builder, const Sha256Compression &constraint)
 
template void create_sha256_compression_constraints< bb::MegaCircuitBuilder > (bb::MegaCircuitBuilder &builder, const Sha256Compression &constraint)
 
template<typename T >
std::vector< uint32_t > add_to_witness_and_track_indices (WitnessVector &witness, std::span< const T > input)
 Append values to a witness vector and track their indices.
 
template<typename T , std::size_t N>
std::array< uint32_t, N > add_to_witness_and_track_indices (WitnessVector &witness, std::span< const T > input)
 Append values to a witness vector and track their indices.
 
template<typename Builder , typename FF >
bb::stdlib::cycle_group< Builderto_grumpkin_point (const WitnessOrConstant< FF > &input_x, const WitnessOrConstant< FF > &input_y, const WitnessOrConstant< FF > &input_infinite, bool has_valid_witness_assignments, Builder &builder)
 
template bb::stdlib::cycle_group< UltraCircuitBuilderto_grumpkin_point (const WitnessOrConstant< fr > &input_x, const WitnessOrConstant< fr > &input_y, const WitnessOrConstant< fr > &input_infinite, bool has_valid_witness_assignments, UltraCircuitBuilder &builder)
 
template bb::stdlib::cycle_group< MegaCircuitBuilderto_grumpkin_point (const WitnessOrConstant< fr > &input_x, const WitnessOrConstant< fr > &input_y, const WitnessOrConstant< fr > &input_infinite, bool has_valid_witness_assignments, MegaCircuitBuilder &builder)
 
template<typename Builder , typename FF >
bb::stdlib::field_t< Builderto_field_ct (const WitnessOrConstant< FF > &input, Builder &builder)
 

Typedef Documentation

◆ bn254

Definition at line 31 of file avm2_recursion_constraint.cpp.

◆ Builder

◆ field_ct

◆ HonkRecursionConstraintOutput

◆ PairingPoints

◆ WitnessVector

Definition at line 166 of file acir_format.hpp.

◆ WitnessVectorStack

using acir_format::WitnessVectorStack = typedef std::vector<std::pair<uint32_t, WitnessVector> >

Definition at line 167 of file acir_format.hpp.

Enumeration Type Documentation

◆ BigIntOperationType

Enumerator
Add 
Sub 
Mul 
Div 

Definition at line 30 of file bigint_constraint.hpp.

◆ BlockType

Enumerator
ROM 
RAM 
CallData 
ReturnData 

Definition at line 20 of file block_constraint.hpp.

◆ ModulusId

Enumerates the supported modulus types for big integer operations. Specifies whether a bigint refers to a BN254/SECP256K1/SECP256R1 Fq or Fr modulus.

Enumerator
BN254_FQ 
BN254_FR 
SECP256K1_FQ 
SECP256K1_FR 
SECP256R1_FQ 
SECP256R1_FR 
UNKNOWN 

Definition at line 54 of file bigint_constraint.hpp.

◆ PROOF_TYPE

Enumerator
PLONK 
HONK 
OINK 
PG 
AVM 
ROLLUP_HONK 
ROOT_ROLLUP_HONK 
HONK_ZK 
PG_FINAL 
PG_TAIL 
CIVC 

Definition at line 19 of file recursion_constraint.hpp.

Function Documentation

◆ add_to_witness_and_track_indices() [1/2]

template<typename T >
std::vector< uint32_t > acir_format::add_to_witness_and_track_indices ( WitnessVector witness,
std::span< const T >  input 
)

Append values to a witness vector and track their indices.

This function is useful in mocking situations, when we need to add dummy variables to a builder.

Template Parameters
T
Parameters
witness
input
Returns
std::vector<uint32_t>

Definition at line 48 of file utils.hpp.

◆ add_to_witness_and_track_indices() [2/2]

template<typename T , std::size_t N>
std::array< uint32_t, N > acir_format::add_to_witness_and_track_indices ( WitnessVector witness,
std::span< const T >  input 
)

Append values to a witness vector and track their indices.

This function is useful in mocking situations, when we need to add dummy variables to a builder.

Template Parameters
T
N
Parameters
witness
input
Returns
std::array<uint32_t, N>

Definition at line 72 of file utils.hpp.

◆ and_gate()

void acir_format::and_gate ( Builder builder,
WitnessOrConstant< bb::fr a,
WitnessOrConstant< bb::fr b,
uint32_t  result 
)

◆ assign_linear_term()

void acir_format::assign_linear_term ( mul_quad_< fr > &  gate,
int  index,
uint32_t  witness_index,
fr const &  scaling 
)

Assigns a linear term to a specific index in a mul_quad_ gate.

Parameters
scalingThe scaling factor to apply to the linear term.
Note
This function is used internally to update the fields of a mul_quad_ gate with a linear term.
Parameters
gateThe mul_quad_ gate to assign the linear term to.
indexThe index of the linear term to assign (0 for a, 1 for b, 2 for c, 3 for d).
witness_indexThe witness index to assign to the linear term.
Returns
nothing, the input gate is modified in place.
Note
It fails if index is 4 or more.

Definition at line 219 of file acir_to_constraint_buf.cpp.

◆ build_constraints()

template<typename Builder >
void acir_format::build_constraints ( Builder builder,
AcirProgram program,
const ProgramMetadata metadata 
)

Definition at line 88 of file acir_format.cpp.

◆ build_constraints< MegaCircuitBuilder >()

◆ circuit_buf_to_acir_format()

AcirFormat acir_format::circuit_buf_to_acir_format ( std::vector< uint8_t > &&  buf)

Definition at line 967 of file acir_to_constraint_buf.cpp.

◆ circuit_serde_to_acir_format()

AcirFormat acir_format::circuit_serde_to_acir_format ( Acir::Circuit const &  circuit)

Definition at line 921 of file acir_to_constraint_buf.cpp.

◆ constrain_witnesses()

void acir_format::constrain_witnesses ( Acir::Opcode::AssertZero const &  arg,
AcirFormat af 
)

Definition at line 416 of file acir_to_constraint_buf.cpp.

◆ create_aes128_constraints()

template<typename Builder >
void acir_format::create_aes128_constraints ( Builder builder,
const AES128Constraint constraint 
)

Definition at line 18 of file aes128_constraint.cpp.

◆ create_aes128_constraints< MegaCircuitBuilder >()

template void acir_format::create_aes128_constraints< MegaCircuitBuilder > ( MegaCircuitBuilder builder,
const AES128Constraint constraint 
)

◆ create_aes128_constraints< UltraCircuitBuilder >()

template void acir_format::create_aes128_constraints< UltraCircuitBuilder > ( UltraCircuitBuilder builder,
const AES128Constraint constraint 
)

◆ create_avm2_recursion_constraints_goblin()

HonkRecursionConstraintOutput< Builder > acir_format::create_avm2_recursion_constraints_goblin ( Builder builder,
const RecursionConstraint input,
bool  has_valid_witness_assignments 
)

Add constraints associated with recursive verification of an AVM2 proof using Goblin.

Parameters
builder
input
input_points_accumulator_indices
has_valid_witness_assignments
Returns
HonkRecursionConstraintOutput {pairing agg object, ipa claim, ipa proof}

Definition at line 127 of file avm2_recursion_constraint.cpp.

◆ create_bigint_addition_constraint()

template<typename Builder >
void acir_format::create_bigint_addition_constraint ( const BigIntOperation input,
DSLBigInts< Builder > &  dsl_bigint 
)

Definition at line 74 of file bigint_constraint.cpp.

◆ create_bigint_addition_constraint< MegaCircuitBuilder >()

◆ create_bigint_addition_constraint< UltraCircuitBuilder >()

◆ create_bigint_div_constraint()

template<typename Builder >
void acir_format::create_bigint_div_constraint ( const BigIntOperation input,
DSLBigInts< Builder > &  dsl_bigint,
bool  has_valid_witness_assignments 
)

Definition at line 212 of file bigint_constraint.cpp.

◆ create_bigint_div_constraint< MegaCircuitBuilder >()

template void acir_format::create_bigint_div_constraint< MegaCircuitBuilder > ( const BigIntOperation input,
DSLBigInts< MegaCircuitBuilder > &  dsl_bigint,
bool  has_valid_witness_assignments 
)

◆ create_bigint_div_constraint< UltraCircuitBuilder >()

template void acir_format::create_bigint_div_constraint< UltraCircuitBuilder > ( const BigIntOperation input,
DSLBigInts< UltraCircuitBuilder > &  dsl_bigint,
bool  has_valid_witness_assignments 
)

◆ create_bigint_from_le_bytes_constraint()

template<typename Builder >
void acir_format::create_bigint_from_le_bytes_constraint ( Builder builder,
const BigIntFromLeBytes input,
DSLBigInts< Builder > &  dsl_bigints 
)

Definition at line 296 of file bigint_constraint.cpp.

◆ create_bigint_from_le_bytes_constraint< MegaCircuitBuilder >()

◆ create_bigint_from_le_bytes_constraint< UltraCircuitBuilder >()

◆ create_bigint_mul_constraint()

template<typename Builder >
void acir_format::create_bigint_mul_constraint ( const BigIntOperation input,
DSLBigInts< Builder > &  dsl_bigint 
)

Definition at line 166 of file bigint_constraint.cpp.

◆ create_bigint_mul_constraint< MegaCircuitBuilder >()

◆ create_bigint_mul_constraint< UltraCircuitBuilder >()

◆ create_bigint_operations_constraint()

template<typename Builder >
void acir_format::create_bigint_operations_constraint ( const BigIntOperation input,
DSLBigInts< Builder > &  dsl_bigint,
bool  has_valid_witness_assignments 
)

Definition at line 268 of file bigint_constraint.cpp.

◆ create_bigint_operations_constraint< MegaCircuitBuilder >()

template void acir_format::create_bigint_operations_constraint< MegaCircuitBuilder > ( const BigIntOperation input,
DSLBigInts< MegaCircuitBuilder > &  dsl_bigint,
bool  has_valid_witness_assignments 
)

◆ create_bigint_operations_constraint< UltraCircuitBuilder >()

template void acir_format::create_bigint_operations_constraint< UltraCircuitBuilder > ( const BigIntOperation input,
DSLBigInts< UltraCircuitBuilder > &  dsl_bigint,
bool  has_valid_witness_assignments 
)

◆ create_bigint_sub_constraint()

template<typename Builder >
void acir_format::create_bigint_sub_constraint ( const BigIntOperation input,
DSLBigInts< Builder > &  dsl_bigint 
)

Definition at line 120 of file bigint_constraint.cpp.

◆ create_bigint_sub_constraint< MegaCircuitBuilder >()

◆ create_bigint_sub_constraint< UltraCircuitBuilder >()

◆ create_bigint_to_le_bytes_constraint()

template<typename Builder >
void acir_format::create_bigint_to_le_bytes_constraint ( Builder builder,
const BigIntToLeBytes input,
DSLBigInts< Builder > &  dsl_bigints 
)

Definition at line 381 of file bigint_constraint.cpp.

◆ create_bigint_to_le_bytes_constraint< MegaCircuitBuilder >()

◆ create_bigint_to_le_bytes_constraint< UltraCircuitBuilder >()

◆ create_blake2s_constraints()

template<typename Builder >
void acir_format::create_blake2s_constraints ( Builder builder,
const Blake2sConstraint constraint 
)

Definition at line 16 of file blake2s_constraint.cpp.

◆ create_blake2s_constraints< MegaCircuitBuilder >()

template void acir_format::create_blake2s_constraints< MegaCircuitBuilder > ( MegaCircuitBuilder builder,
const Blake2sConstraint constraint 
)

◆ create_blake2s_constraints< UltraCircuitBuilder >()

◆ create_blake3_constraints()

template<typename Builder >
void acir_format::create_blake3_constraints ( Builder builder,
const Blake3Constraint constraint 
)

Definition at line 15 of file blake3_constraint.cpp.

◆ create_blake3_constraints< bb::MegaCircuitBuilder >()

◆ create_blake3_constraints< bb::UltraCircuitBuilder >()

◆ create_block_constraints() [1/3]

template<typename Builder >
void acir_format::create_block_constraints ( Builder builder,
const BlockConstraint constraint,
bool  has_valid_witness_assignments = true 
)

◆ create_block_constraints() [2/3]

template<>
void acir_format::create_block_constraints ( MegaCircuitBuilder builder,
const BlockConstraint constraint,
bool  has_valid_witness_assignments 
)

Create block constraints; Specialization for Mega arithmetization.

Definition at line 73 of file block_constraint.cpp.

◆ create_block_constraints() [3/3]

template<>
void acir_format::create_block_constraints ( UltraCircuitBuilder builder,
const BlockConstraint constraint,
bool  has_valid_witness_assignments 
)

Create block constraints; Specialization for Ultra arithmetization.

Ultra does not support DataBus operations so calldata/returndata are treated as ROM ops

Definition at line 40 of file block_constraint.cpp.

◆ create_circuit() [1/3]

template<>
UltraCircuitBuilder acir_format::create_circuit ( AcirProgram program,
const ProgramMetadata metadata 
)

Specialization for creating an Ultra circuit from an acir program.

Parameters
programconstraints and optionally a witness
metadataadditional data needed to construct the circuit

Definition at line 675 of file acir_format.cpp.

◆ create_circuit() [2/3]

template<>
MegaCircuitBuilder acir_format::create_circuit ( AcirProgram program,
const ProgramMetadata metadata 
)

Specialization for creating a Mega circuit from an acir program.

Parameters
programconstraints and optionally a witness
metadataadditional data needed to construct the circuit

Definition at line 696 of file acir_format.cpp.

◆ create_circuit() [3/3]

template<typename Builder = bb::UltraCircuitBuilder>
Builder acir_format::create_circuit ( AcirProgram program,
const ProgramMetadata metadata = ProgramMetadata{} 
)

◆ create_civc_recursion_constraints()

HonkRecursionConstraintOutput< Builder > acir_format::create_civc_recursion_constraints ( Builder builder,
const RecursionConstraint input,
bool  has_valid_witness_assignments 
)

Add constraints associated with recursive verification of an CIVC proof.

Parameters
builder
input
input_points_accumulator_indices
has_valid_witness_assignments
Returns
HonkRecursionConstraintOutput {pairing agg object, ipa claim, ipa proof}

Definition at line 85 of file civc_recursion_constraints.cpp.

◆ create_dummy_ecdsa_constraint()

template<typename Curve >
void acir_format::create_dummy_ecdsa_constraint ( typename Curve::Builder &  builder,
const std::vector< stdlib::field_t< typename Curve::Builder > > &  hashed_message_fields,
const std::vector< stdlib::field_t< typename Curve::Builder > > &  r_fields,
const std::vector< stdlib::field_t< typename Curve::Builder > > &  s_fields,
const std::vector< stdlib::field_t< typename Curve::Builder > > &  pub_x_fields,
const std::vector< stdlib::field_t< typename Curve::Builder > > &  pub_y_fields,
const stdlib::field_t< typename Curve::Builder > &  result_field 
)

Generate dummy ECDSA constraints when the builder doesn't have witnesses.

To avoid firing asserts, the public key must be a point on the curve

Definition at line 116 of file ecdsa_constraints.cpp.

◆ create_dummy_ecdsa_constraint< stdlib::secp256k1< UltraCircuitBuilder > >()

template void acir_format::create_dummy_ecdsa_constraint< stdlib::secp256k1< UltraCircuitBuilder > > ( UltraCircuitBuilder ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const stdlib::field_t< UltraCircuitBuilder > &   
)

◆ create_dummy_ecdsa_constraint< stdlib::secp256r1< UltraCircuitBuilder > >()

template void acir_format::create_dummy_ecdsa_constraint< stdlib::secp256r1< UltraCircuitBuilder > > ( UltraCircuitBuilder ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const std::vector< stdlib::field_t< UltraCircuitBuilder > > &  ,
const stdlib::field_t< UltraCircuitBuilder > &   
)

◆ create_dummy_vkey_and_proof()

void acir_format::create_dummy_vkey_and_proof ( Builder builder,
size_t  proof_size,
size_t  public_inputs_size,
const std::vector< field_ct > &  key_fields,
const std::vector< field_ct > &  proof_fields 
)

Creates a dummy vkey and proof object.

Populates the key and proof vectors with dummy values in the write_vk case when we don't have a valid witness. The bulk of the logic is setting up certain values correctly like the circuit size, number of public inputs, aggregation object, and commitments.

Parameters
builder
proof_sizeSize of proof with NO public inputs
public_inputs_sizeTotal size of public inputs including aggregation object
key_fields
proof_fields

Definition at line 36 of file civc_recursion_constraints.cpp.

◆ create_ec_add_constraint()

template<typename Builder >
void acir_format::create_ec_add_constraint ( Builder builder,
const EcAdd input,
bool  has_valid_witness_assignments 
)

Definition at line 17 of file ec_operations.cpp.

◆ create_ec_add_constraint< bb::MegaCircuitBuilder >()

template void acir_format::create_ec_add_constraint< bb::MegaCircuitBuilder > ( bb::MegaCircuitBuilder builder,
const EcAdd input,
bool  has_valid_witness_assignments 
)

◆ create_ec_add_constraint< bb::UltraCircuitBuilder >()

template void acir_format::create_ec_add_constraint< bb::UltraCircuitBuilder > ( bb::UltraCircuitBuilder builder,
const EcAdd input,
bool  has_valid_witness_assignments 
)

◆ create_ecdsa_verify_constraints()

template<typename Curve >
void acir_format::create_ecdsa_verify_constraints ( typename Curve::Builder &  builder,
const EcdsaConstraint input,
bool  has_valid_witness_assignments 
)

Create constraints to verify an ECDSA signature.

Given and ECDSA constraint system, add to the builder constraints that verify the ECDSA signature. We perform the following operations:

  1. Reconstruct byte arrays from builder variables (we enforce that each variable fits in one byte and stack them in a vector) and the boolean result from the corresponding builder variable
  2. Reconstruct the public key from the byte representations (big-endian, 32-byte numbers) of the \(x\) and \(y\) coordinates.
  3. Enforce uniqueness of the representation of the public key by asserting \(x < q\) and \(y < q\), where \(q\) is the modulus of the base field of the elliptic curve we are working with.
  4. Verify the signature against the public key and the hash of the message. We return a bool_t bearing witness to whether the signature verification was successfull or not.
  5. Enforce that the result of the signature verification matches the expected result.
Template Parameters
Curve
Parameters
builder
input
has_valid_witness_assignments

Definition at line 38 of file ecdsa_constraints.cpp.

◆ create_ecdsa_verify_constraints< stdlib::secp256k1< MegaCircuitBuilder > >()

template void acir_format::create_ecdsa_verify_constraints< stdlib::secp256k1< MegaCircuitBuilder > > ( MegaCircuitBuilder builder,
const EcdsaConstraint input,
bool  has_valid_witness_assignments 
)

◆ create_ecdsa_verify_constraints< stdlib::secp256k1< UltraCircuitBuilder > >()

template void acir_format::create_ecdsa_verify_constraints< stdlib::secp256k1< UltraCircuitBuilder > > ( UltraCircuitBuilder builder,
const EcdsaConstraint input,
bool  has_valid_witness_assignments 
)

◆ create_ecdsa_verify_constraints< stdlib::secp256r1< MegaCircuitBuilder > >()

template void acir_format::create_ecdsa_verify_constraints< stdlib::secp256r1< MegaCircuitBuilder > > ( MegaCircuitBuilder builder,
const EcdsaConstraint input,
bool  has_valid_witness_assignments 
)

◆ create_ecdsa_verify_constraints< stdlib::secp256r1< UltraCircuitBuilder > >()

template void acir_format::create_ecdsa_verify_constraints< stdlib::secp256r1< UltraCircuitBuilder > > ( UltraCircuitBuilder builder,
const EcdsaConstraint input,
bool  has_valid_witness_assignments 
)

◆ create_honk_recursion_constraints()

template<typename Flavor >
requires (IsRecursiveFlavor<Flavor> && IsUltraHonk<typename Flavor::NativeFlavor>)
HonkRecursionConstraintOutput< typename Flavor::CircuitBuilder > acir_format::create_honk_recursion_constraints ( typename Flavor::CircuitBuilder builder,
const RecursionConstraint input,
bool  has_valid_witness_assignments 
)

Add constraints required to recursively verify an UltraHonk proof.

Parameters
builder
input
input_points_accumulator_indices.The aggregation object coming from previous Honk recursion constraints.
has_valid_witness_assignment.Do we have witnesses or are we just generating keys?

Definition at line 104 of file honk_recursion_constraint.cpp.

◆ create_honk_recursion_constraints< UltraRecursiveFlavor_< MegaCircuitBuilder > >()

◆ create_honk_recursion_constraints< UltraRecursiveFlavor_< UltraCircuitBuilder > >()

◆ create_honk_recursion_constraints< UltraRollupRecursiveFlavor_< UltraCircuitBuilder > >()

◆ create_honk_recursion_constraints< UltraZKRecursiveFlavor_< MegaCircuitBuilder > >()

◆ create_honk_recursion_constraints< UltraZKRecursiveFlavor_< UltraCircuitBuilder > >()

◆ create_keccak_permutations()

template<typename Builder >
void acir_format::create_keccak_permutations ( Builder builder,
const Keccakf1600 constraint 
)

Definition at line 14 of file keccak_constraint.cpp.

◆ create_keccak_permutations< bb::MegaCircuitBuilder >()

◆ create_keccak_permutations< bb::UltraCircuitBuilder >()

◆ create_logic_gate() [1/2]

template<typename Builder >
void acir_format::create_logic_gate ( Builder builder,
const WitnessOrConstant< bb::fr a,
const WitnessOrConstant< bb::fr b,
const uint32_t  result,
const size_t  num_bits,
const bool  is_xor_gate 
)

Definition at line 13 of file logic_constraint.cpp.

◆ create_logic_gate() [2/2]

template<typename Builder >
void acir_format::create_logic_gate ( Builder builder,
WitnessOrConstant< bb::fr a,
WitnessOrConstant< bb::fr b,
uint32_t  result,
std::size_t  num_bits,
bool  is_xor_gate 
)

◆ create_logic_gate< bb::MegaCircuitBuilder >()

template void acir_format::create_logic_gate< bb::MegaCircuitBuilder > ( bb::MegaCircuitBuilder builder,
const WitnessOrConstant< bb::fr a,
const WitnessOrConstant< bb::fr b,
const uint32_t  result,
const size_t  num_bits,
const bool  is_xor_gate 
)

◆ create_logic_gate< bb::UltraCircuitBuilder >()

template void acir_format::create_logic_gate< bb::UltraCircuitBuilder > ( bb::UltraCircuitBuilder builder,
const WitnessOrConstant< bb::fr a,
const WitnessOrConstant< bb::fr b,
const uint32_t  result,
const size_t  num_bits,
const bool  is_xor_gate 
)

◆ create_mock_civc_proof() [1/2]

template<typename Builder >
HonkProof acir_format::create_mock_civc_proof ( const size_t  inner_public_inputs_size)

Definition at line 241 of file mock_verifier_inputs.cpp.

◆ create_mock_civc_proof() [2/2]

template<typename Builder >
bb::HonkProof acir_format::create_mock_civc_proof ( const size_t  inner_public_inputs_size = 0)

Definition at line 241 of file mock_verifier_inputs.cpp.

◆ create_mock_civc_proof< MegaCircuitBuilder >()

◆ create_mock_civc_proof< UltraCircuitBuilder >()

◆ create_mock_decider_proof() [1/2]

template<typename Flavor >
HonkProof acir_format::create_mock_decider_proof ( )

Create a mock decider proof that has the correct structure but is not in general valid.

Definition at line 93 of file mock_verifier_inputs.cpp.

◆ create_mock_decider_proof() [2/2]

template<typename Flavor >
bb::HonkProof acir_format::create_mock_decider_proof ( )

Create a mock decider proof that has the correct structure but is not in general valid.

Definition at line 93 of file mock_verifier_inputs.cpp.

◆ create_mock_decider_proof< MegaFlavor >()

◆ create_mock_decider_proof< TranslatorFlavor >()

◆ create_mock_decider_proof< UltraFlavor >()

◆ create_mock_decider_proof< UltraRollupFlavor >()

◆ create_mock_decider_proof< UltraZKFlavor >()

◆ create_mock_decider_vk() [1/2]

template<typename Flavor >
std::shared_ptr< DeciderVerificationKey_< Flavor > > acir_format::create_mock_decider_vk ( )

Create a mock Decider verification key for initilization of a mock verifier accumulator.

Definition at line 445 of file mock_verifier_inputs.cpp.

◆ create_mock_decider_vk() [2/2]

template<typename Flavor >
std::shared_ptr< bb::DeciderVerificationKey_< Flavor > > acir_format::create_mock_decider_vk ( )

Create a mock Decider verification key for initilization of a mock verifier accumulator.

Definition at line 445 of file mock_verifier_inputs.cpp.

◆ create_mock_decider_vk< MegaFlavor >()

◆ create_mock_honk_proof() [1/2]

template<typename Flavor , class PublicInputs >
HonkProof acir_format::create_mock_honk_proof ( const size_t  inner_public_inputs_size)

Create a mock honk proof that has the correct structure but is not in general valid.

Parameters
inner_public_inputs_sizeNumber of public inputs coming from the ACIR constraints

Definition at line 167 of file mock_verifier_inputs.cpp.

◆ create_mock_honk_proof() [2/2]

template<typename Flavor , class PublicInputs >
bb::HonkProof acir_format::create_mock_honk_proof ( const size_t  inner_public_inputs_size)

Create a mock honk proof that has the correct structure but is not in general valid.

Parameters
inner_public_inputs_sizeNumber of public inputs coming from the ACIR constraints

Definition at line 167 of file mock_verifier_inputs.cpp.

◆ create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::AppIO >()

◆ create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > >()

◆ create_mock_honk_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >()

◆ create_mock_honk_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > >()

◆ create_mock_honk_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > >()

◆ create_mock_honk_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO >()

◆ create_mock_honk_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > >()

◆ create_mock_honk_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > >()

◆ create_mock_honk_vk()

template<typename Flavor , class PublicInputs >
std::shared_ptr< typename Flavor::VerificationKey > acir_format::create_mock_honk_vk ( const size_t  dyadic_size,
const size_t  pub_inputs_offset,
const size_t  inner_public_inputs_size 
)

Create a mock MegaHonk VK that has the correct structure.

Parameters
dyadic_sizeDyadic size of the circuit for which we generate a vk
pub_inputs_offestIndicating whether the circuit has a first zero row
inner_public_inputs_sizeNumber of public inputs coming from the ACIR constraints

Definition at line 424 of file mock_verifier_inputs.cpp.

◆ create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::AppIO >()

template std::shared_ptr< MegaFlavor::VerificationKey > acir_format::create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::AppIO > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > >()

template std::shared_ptr< MegaFlavor::VerificationKey > acir_format::create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::KernelIO >()

template std::shared_ptr< MegaFlavor::VerificationKey > acir_format::create_mock_honk_vk< MegaFlavor, stdlib::recursion::honk::KernelIO > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO< UltraCircuitBuilder > >()

template std::shared_ptr< MegaZKFlavor::VerificationKey > acir_format::create_mock_honk_vk< MegaZKFlavor, stdlib::recursion::honk::HidingKernelIO< UltraCircuitBuilder > > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > >()

template std::shared_ptr< UltraFlavor::VerificationKey > acir_format::create_mock_honk_vk< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > >()

template std::shared_ptr< UltraFlavor::VerificationKey > acir_format::create_mock_honk_vk< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< UltraRollupFlavor, stdlib::recursion::honk::RollupIO >()

template std::shared_ptr< UltraRollupFlavor::VerificationKey > acir_format::create_mock_honk_vk< UltraRollupFlavor, stdlib::recursion::honk::RollupIO > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > >()

template std::shared_ptr< UltraZKFlavor::VerificationKey > acir_format::create_mock_honk_vk< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_honk_vk< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > >()

template std::shared_ptr< UltraZKFlavor::VerificationKey > acir_format::create_mock_honk_vk< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > > ( const size_t  ,
const size_t  ,
const size_t   
)

◆ create_mock_ipa_proof()

bb::HonkProof acir_format::create_mock_ipa_proof ( )

Create a mock ipa proof which has the correct structure but is not necessarily valid.

An ECCVM proof is made of a pre-ipa proof and an ipa-proof. Here we mock the ipa part.

Returns
HonkProof

Definition at line 369 of file mock_verifier_inputs.cpp.

◆ create_mock_ivc_from_constraints()

std::shared_ptr< ClientIVC > acir_format::create_mock_ivc_from_constraints ( const std::vector< RecursionConstraint > &  constraints,
const TraceSettings trace_settings 
)

Create an IVC object with mocked state corresponding to a set of IVC recursion constraints.

Construction of a kernel circuit requires two inputs: kernel prgram acir constraints and an IVC instance containing state needed to complete the kernel logic, e.g. proofs for input to recursive verifiers. To construct verification keys for kernel circuits without running a full IVC, we mock the IVC state corresponding to a provided set of IVC recurson constraints. For example, if the constraints contain a single PG recursive verification, we initialize an IVC with mocked data for the verifier accumulator, the folding proof, the circuit verification key, and a merge proof.

Note
There are only three valid combinations of IVC recursion constraints for a kernel program. See below for details.
Parameters
constraintsIVC recursion constraints from a kernel circuit
trace_settings
Returns
ClientIVC

Definition at line 40 of file pg_recursion_constraint.cpp.

◆ create_mock_merge_proof()

bb::Goblin::MergeProof acir_format::create_mock_merge_proof ( )

Create a mock merge proof which has the correct structure but is not necessarily valid.

Returns
Goblin::MergeProof

Definition at line 209 of file mock_verifier_inputs.cpp.

◆ create_mock_oink_proof() [1/2]

template<typename Flavor , class PublicInputs >
HonkProof acir_format::create_mock_oink_proof ( const size_t  inner_public_inputs_size)

Create a mock oink proof that has the correct structure but is not in general valid.

Parameters
inner_public_inputs_sizeNumber of public inputs coming from the ACIR constraints

Definition at line 67 of file mock_verifier_inputs.cpp.

◆ create_mock_oink_proof() [2/2]

template<typename Flavor , class PublicInputs >
bb::HonkProof acir_format::create_mock_oink_proof ( const size_t  inner_public_inputs_size)

Create a mock oink proof that has the correct structure but is not in general valid.

Parameters
inner_public_inputs_sizeNumber of public inputs coming from the ACIR constraints

Definition at line 67 of file mock_verifier_inputs.cpp.

◆ create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::AppIO >()

◆ create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > >()

◆ create_mock_oink_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >()

◆ create_mock_oink_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > >()

◆ create_mock_oink_proof< UltraFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > >()

◆ create_mock_oink_proof< UltraRollupFlavor, stdlib::recursion::honk::RollupIO >()

◆ create_mock_oink_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< MegaCircuitBuilder > >()

◆ create_mock_oink_proof< UltraZKFlavor, stdlib::recursion::honk::DefaultIO< UltraCircuitBuilder > >()

◆ create_mock_pg_proof() [1/2]

template<typename Flavor , class PublicInputs >
HonkProof acir_format::create_mock_pg_proof ( )

Create a mock PG proof that has the correct structure but is not in general valid.

Definition at line 188 of file mock_verifier_inputs.cpp.

◆ create_mock_pg_proof() [2/2]

template<typename Flavor , class PublicInputs >
bb::HonkProof acir_format::create_mock_pg_proof ( )

Create a mock PG proof that has the correct structure but is not in general valid.

Definition at line 188 of file mock_verifier_inputs.cpp.

◆ create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::AppIO >()

◆ create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::HidingKernelIO< MegaCircuitBuilder > >()

◆ create_mock_pg_proof< MegaFlavor, stdlib::recursion::honk::KernelIO >()

◆ create_mock_pre_ipa_proof()

bb::HonkProof acir_format::create_mock_pre_ipa_proof ( )

Create a mock pre-ipa proof which has the correct structure but is not necessarily valid.

An ECCVM proof is made of a pre-ipa proof and an ipa-proof. Here we mock the pre-ipa part.

Returns
HonkProof

Definition at line 264 of file mock_verifier_inputs.cpp.

◆ create_mock_translator_proof()

bb::HonkProof acir_format::create_mock_translator_proof ( )

Create a mock translator proof which has the correct structure but is not necessarily valid.

Returns
HonkProof

Definition at line 393 of file mock_verifier_inputs.cpp.

◆ create_mock_verification_queue_entry()

ClientIVC::VerifierInputs acir_format::create_mock_verification_queue_entry ( const ClientIVC::QUEUE_TYPE  verification_type,
const TraceSettings trace_settings,
const bool  is_kernel 
)

Create a mock verification queue entry with proof and VK that have the correct structure but are not necessarily valid.

Definition at line 98 of file pg_recursion_constraint.cpp.

◆ create_multi_scalar_mul_constraint()

template<typename Builder >
void acir_format::create_multi_scalar_mul_constraint ( Builder builder,
const MultiScalarMul input,
bool  has_valid_witness_assignments 
)

Definition at line 20 of file multi_scalar_mul.cpp.

◆ create_multi_scalar_mul_constraint< MegaCircuitBuilder >()

template void acir_format::create_multi_scalar_mul_constraint< MegaCircuitBuilder > ( MegaCircuitBuilder builder,
const MultiScalarMul input,
bool  has_valid_witness_assignments 
)

◆ create_multi_scalar_mul_constraint< UltraCircuitBuilder >()

template void acir_format::create_multi_scalar_mul_constraint< UltraCircuitBuilder > ( UltraCircuitBuilder builder,
const MultiScalarMul input,
bool  has_valid_witness_assignments 
)

◆ create_poseidon2_permutations()

template<typename Builder >
void acir_format::create_poseidon2_permutations ( Builder builder,
const Poseidon2Constraint constraint 
)

Definition at line 17 of file poseidon2_constraint.cpp.

◆ create_poseidon2_permutations< MegaCircuitBuilder >()

◆ create_poseidon2_permutations< UltraCircuitBuilder >()

◆ create_sha256_compression_constraints()

template<typename Builder >
void acir_format::create_sha256_compression_constraints ( Builder builder,
const Sha256Compression constraint 
)

Definition at line 15 of file sha256_constraint.cpp.

◆ create_sha256_compression_constraints< bb::MegaCircuitBuilder >()

◆ create_sha256_compression_constraints< bb::UltraCircuitBuilder >()

◆ deserialize_any_format()

template<typename T >
T acir_format::deserialize_any_format ( std::vector< uint8_t > &&  buf,
std::function< T(msgpack::object const &)>  decode_msgpack,
std::function< T(std::vector< uint8_t >)>  decode_bincode 
)

Deserialize buf either based on the first byte interpreted as a Noir serialization format byte, or falling back to bincode if the format cannot be recognized. Currently only msgpack format is expected, or the legacy bincode format.

Note
Due to the lack of exception handling available to us in Wasm we can't try bincode format and if it fails try msgpack; instead we have to make a decision and commit to it.

Definition at line 40 of file acir_to_constraint_buf.cpp.

◆ deserialize_program()

Acir::Program acir_format::deserialize_program ( std::vector< uint8_t > &&  buf)

Deserializes a Program from bytes, trying msgpack or bincode formats.

Note
Ignores the Brillig parts of the bytecode when using msgpack.

Definition at line 89 of file acir_to_constraint_buf.cpp.

◆ deserialize_witness_stack()

Witnesses::WitnessStack acir_format::deserialize_witness_stack ( std::vector< uint8_t > &&  buf)

Deserializes a WitnessStack from bytes, trying msgpack or bincode formats.

Definition at line 113 of file acir_to_constraint_buf.cpp.

◆ get_acir_program_stack()

AcirProgramStack acir_format::get_acir_program_stack ( std::string const &  bytecode_path,
std::string const &  witness_path 
)

Definition at line 1039 of file acir_to_constraint_buf.cpp.

◆ get_witness_from_function_input()

uint32_t acir_format::get_witness_from_function_input ( Acir::FunctionInput  input)

Definition at line 524 of file acir_to_constraint_buf.cpp.

◆ handle_arithmetic()

void acir_format::handle_arithmetic ( Acir::Opcode::AssertZero const &  arg,
AcirFormat af,
size_t  opcode_index 
)

Definition at line 446 of file acir_to_constraint_buf.cpp.

◆ handle_blackbox_func_call()

void acir_format::handle_blackbox_func_call ( Acir::Opcode::BlackBoxFuncCall const &  arg,
AcirFormat af,
size_t  opcode_index 
)

Definition at line 560 of file acir_to_constraint_buf.cpp.

◆ handle_IPA_accumulation()

template<typename Builder >
std::pair< OpeningClaim< stdlib::grumpkin< Builder > >, HonkProof > acir_format::handle_IPA_accumulation ( Builder builder,
const std::vector< OpeningClaim< stdlib::grumpkin< Builder > > > &  nested_ipa_claims,
const std::vector< stdlib::Proof< Builder > > &  nested_ipa_proofs 
)

Set the IPA claim and proof.

Template Parameters
Builder
Parameters
builder
nested_ipa_claims
nested_ipa_proofs

Definition at line 458 of file acir_format.cpp.

◆ handle_memory_init()

BlockConstraint acir_format::handle_memory_init ( Acir::Opcode::MemoryInit const &  mem_init)

Definition at line 832 of file acir_to_constraint_buf.cpp.

◆ handle_memory_op()

void acir_format::handle_memory_op ( Acir::Opcode::MemoryOp const &  mem_op,
AcirFormat af,
BlockConstraint block 
)

Definition at line 878 of file acir_to_constraint_buf.cpp.

◆ is_assert_equal()

std::pair< uint32_t, uint32_t > acir_format::is_assert_equal ( Acir::Opcode::AssertZero const &  arg,
poly_triple const &  pt,
AcirFormat const &  af 
)

Definition at line 430 of file acir_to_constraint_buf.cpp.

◆ is_rom()

bool acir_format::is_rom ( Acir::MemOp const &  mem_op)

Definition at line 864 of file acir_to_constraint_buf.cpp.

◆ mock_ivc_accumulation()

void acir_format::mock_ivc_accumulation ( const std::shared_ptr< ClientIVC > &  ivc,
ClientIVC::QUEUE_TYPE  type,
const bool  is_kernel 
)

Populate an IVC instance with data that mimics the state after a single IVC accumulation (Oink or PG)

Mock state consists of a mock verification queue entry of type OINK (proof, VK) and a mocked merge proof

Parameters
ivc
num_public_inputs_appnum pub inputs in accumulated app, excluding fixed components, e.g. pairing points

Definition at line 157 of file pg_recursion_constraint.cpp.

◆ modulus_param_to_id()

ModulusId acir_format::modulus_param_to_id ( ModulusParam  param)

Definition at line 19 of file bigint_constraint.cpp.

◆ parse_input()

WitnessOrConstant< bb::fr > acir_format::parse_input ( Acir::FunctionInput  input)

Definition at line 530 of file acir_to_constraint_buf.cpp.

◆ perform_full_IPA_verification()

template<typename Builder >
void acir_format::perform_full_IPA_verification ( Builder builder,
const std::vector< OpeningClaim< stdlib::grumpkin< Builder > > > &  nested_ipa_claims,
const std::vector< stdlib::Proof< Builder > > &  nested_ipa_proofs 
)

Perform full recursive IPA verification.

Template Parameters
Builder
Parameters
builder
nested_ipa_claims
nested_ipa_proofs

Definition at line 427 of file acir_format.cpp.

◆ poly_to_field_ct()

template<typename Builder >
stdlib::field_t< Builder > acir_format::poly_to_field_ct ( const poly_triple  poly,
Builder builder 
)

Definition at line 18 of file block_constraint.cpp.

◆ poly_to_witness()

uint32_t acir_format::poly_to_witness ( const poly_triple  poly)

Definition at line 870 of file acir_to_constraint_buf.cpp.

◆ populate_dummy_vk_in_constraint()

void acir_format::populate_dummy_vk_in_constraint ( MegaCircuitBuilder builder,
const std::shared_ptr< MegaFlavor::VerificationKey > &  mock_verification_key,
std::vector< uint32_t > &  key_witness_indices 
)

Populate VK witness fields from a recursion constraint from a provided VerificationKey.

Parameters
builder
mock_verification_key
key_witness_indices

Definition at line 179 of file pg_recursion_constraint.cpp.

◆ populate_field_elements()

template<class FF = curve::BN254::ScalarField>
void acir_format::populate_field_elements ( std::vector< fr > &  fields,
const size_t &  num_elements,
std::optional< FF value = std::nullopt 
)

Helper to populate a field buffer with some number of field elements.

Parameters
fieldsfield buffer to append field elements to
num_elementsnumber of mock field elements to append
valueoptional mock value appended

Definition at line 50 of file mock_verifier_inputs.cpp.

◆ populate_field_elements_for_mock_commitments()

template<class Curve = curve::BN254>
void acir_format::populate_field_elements_for_mock_commitments ( std::vector< fr > &  fields,
const size_t &  num_commitments 
)

Helper to populate a field buffer with fields corresponding to some number of mock commitment values.

Parameters
fieldsfield buffer to append mock commitment values to
num_commitmentsnumber of mock commitments to append

Definition at line 31 of file mock_verifier_inputs.cpp.

◆ process_avm_recursion_constraints()

HonkRecursionConstraintsOutput< Builder > acir_format::process_avm_recursion_constraints ( Builder builder,
AcirFormat constraint_system,
bool  has_valid_witness_assignments,
GateCounter< Builder > &  gate_counter 
)

Definition at line 647 of file acir_format.cpp.

◆ process_call_data_operations()

template<typename Builder >
void acir_format::process_call_data_operations ( Builder builder,
const BlockConstraint constraint,
bool  has_valid_witness_assignments,
std::vector< bb::stdlib::field_t< Builder > > &  init 
)

Definition at line 164 of file block_constraint.cpp.

◆ process_civc_recursion_constraints()

HonkRecursionConstraintsOutput< Builder > acir_format::process_civc_recursion_constraints ( Builder builder,
AcirFormat constraint_system,
bool  has_valid_witness_assignments,
GateCounter< Builder > &  gate_counter 
)

Definition at line 623 of file acir_format.cpp.

◆ process_honk_recursion_constraints()

template<typename Builder >
HonkRecursionConstraintsOutput< Builder > acir_format::process_honk_recursion_constraints ( Builder builder,
AcirFormat constraint_system,
bool  has_valid_witness_assignments,
GateCounter< Builder > &  gate_counter 
)

Definition at line 511 of file acir_format.cpp.

◆ process_pg_recursion_constraints()

void acir_format::process_pg_recursion_constraints ( MegaCircuitBuilder builder,
AcirFormat constraints,
std::shared_ptr< ClientIVC ivc,
bool  has_valid_witness_assignments,
GateCounter< MegaCircuitBuilder > &  gate_counter 
)

Definition at line 553 of file acir_format.cpp.

◆ process_RAM_operations()

template<typename Builder >
void acir_format::process_RAM_operations ( Builder builder,
const BlockConstraint constraint,
bool  has_valid_witness_assignments,
std::vector< bb::stdlib::field_t< Builder > > &  init 
)

Definition at line 135 of file block_constraint.cpp.

◆ process_return_data_operations()

template<typename Builder >
void acir_format::process_return_data_operations ( const BlockConstraint constraint,
std::vector< bb::stdlib::field_t< Builder > > &  init 
)

Definition at line 204 of file block_constraint.cpp.

◆ process_ROM_operations()

template<typename Builder >
void acir_format::process_ROM_operations ( Builder builder,
const BlockConstraint constraint,
bool  has_valid_witness_assignments,
std::vector< bb::stdlib::field_t< Builder > > &  init 
)

Definition at line 105 of file block_constraint.cpp.

◆ program_buf_to_acir_format()

std::vector< AcirFormat > acir_format::program_buf_to_acir_format ( std::vector< uint8_t > &&  buf)

Definition at line 1015 of file acir_to_constraint_buf.cpp.

◆ read() [1/3]

template<typename B >
void acir_format::read ( B &  buf,
BlockConstraint constraint 
)
inline

Definition at line 73 of file block_constraint.hpp.

◆ read() [2/3]

template<typename B >
void acir_format::read ( B &  buf,
MemOp mem_op 
)
inline

Definition at line 57 of file block_constraint.hpp.

◆ read() [3/3]

template<typename B >
void acir_format::read ( B &  buf,
RecursionConstraint constraint 
)
inline

Definition at line 79 of file recursion_constraint.hpp.

◆ round_to_nearest_byte()

uint32_t acir_format::round_to_nearest_byte ( uint32_t  num_bits)

Definition at line 23 of file round.cpp.

◆ round_to_nearest_mul_8()

uint32_t acir_format::round_to_nearest_mul_8 ( uint32_t  num_bits)

Definition at line 12 of file round.cpp.

◆ serialize_arithmetic_gate()

poly_triple acir_format::serialize_arithmetic_gate ( Acir::Expression const &  arg)

Construct a poly_tuple for a standard width-3 arithmetic gate from its acir representation.

Parameters
argacir representation of an 3-wire arithmetic operation
Returns
poly_triple
Note
In principle Acir::Expression can accommodate arbitrarily many quadratic and linear terms but in practice the ones processed here have a max of 1 and 3 respectively, in accordance with the standard width-3 arithmetic gate.

Definition at line 138 of file acir_to_constraint_buf.cpp.

◆ serialize_mul_quad_gate()

mul_quad_< fr > acir_format::serialize_mul_quad_gate ( Acir::Expression const &  arg)

Definition at line 345 of file acir_to_constraint_buf.cpp.

◆ split_into_mul_quad_gates()

std::vector< mul_quad_< fr > > acir_format::split_into_mul_quad_gates ( Acir::Expression const &  arg)

Accumulate the input expression into a serie of quad gates.

Definition at line 244 of file acir_to_constraint_buf.cpp.

◆ to_field_ct()

template<typename Builder , typename FF >
bb::stdlib::field_t< Builder > acir_format::to_field_ct ( const WitnessOrConstant< FF > &  input,
Builder builder 
)

Definition at line 31 of file witness_constant.hpp.

◆ to_grumpkin_point() [1/3]

template<typename Builder , typename FF >
bb::stdlib::cycle_group< Builder > acir_format::to_grumpkin_point ( const WitnessOrConstant< FF > &  input_x,
const WitnessOrConstant< FF > &  input_y,
const WitnessOrConstant< FF > &  input_infinite,
bool  has_valid_witness_assignments,
Builder builder 
)

Definition at line 15 of file witness_constant.cpp.

◆ to_grumpkin_point() [2/3]

template bb::stdlib::cycle_group< MegaCircuitBuilder > acir_format::to_grumpkin_point ( const WitnessOrConstant< fr > &  input_x,
const WitnessOrConstant< fr > &  input_y,
const WitnessOrConstant< fr > &  input_infinite,
bool  has_valid_witness_assignments,
MegaCircuitBuilder builder 
)

◆ to_grumpkin_point() [3/3]

template bb::stdlib::cycle_group< UltraCircuitBuilder > acir_format::to_grumpkin_point ( const WitnessOrConstant< fr > &  input_x,
const WitnessOrConstant< fr > &  input_y,
const WitnessOrConstant< fr > &  input_infinite,
bool  has_valid_witness_assignments,
UltraCircuitBuilder builder 
)

◆ witness_buf_to_witness_data()

WitnessVector acir_format::witness_buf_to_witness_data ( std::vector< uint8_t > &&  buf)

Converts from the ACIR-native WitnessStack format to Barretenberg's internal WitnessVector format.

Parameters
bufSerialized representation of a WitnessStack.
Returns
A WitnessVector equivalent to the last WitnessMap in the stack.
Note
This transformation results in all unassigned witnesses within the WitnessMap being assigned the value 0. Converting the WitnessVector back to a WitnessMap is unlikely to return the exact same WitnessMap.

Definition at line 1004 of file acir_to_constraint_buf.cpp.

◆ witness_buf_to_witness_stack()

WitnessVectorStack acir_format::witness_buf_to_witness_stack ( std::vector< uint8_t > &&  buf)

Definition at line 1028 of file acir_to_constraint_buf.cpp.

◆ witness_map_to_witness_vector()

WitnessVector acir_format::witness_map_to_witness_vector ( Witnesses::WitnessMap const &  witness_map)

Converts from the ACIR-native WitnessMap format to Barretenberg's internal WitnessVector format.

Parameters
witness_mapACIR-native WitnessMap deserialized from a buffer
Returns
A WitnessVector equivalent to the passed WitnessMap.
Note
This transformation results in all unassigned witnesses within the WitnessMap being assigned the value 0. Converting the WitnessVector back to a WitnessMap is unlikely to return the exact same WitnessMap.

Definition at line 986 of file acir_to_constraint_buf.cpp.

◆ write() [1/3]

template<typename B >
void acir_format::write ( B &  buf,
BlockConstraint const &  constraint 
)
inline

Definition at line 83 of file block_constraint.hpp.

◆ write() [2/3]

template<typename B >
void acir_format::write ( B &  buf,
MemOp const &  mem_op 
)
inline

Definition at line 65 of file block_constraint.hpp.

◆ write() [3/3]

template<typename B >
void acir_format::write ( B &  buf,
RecursionConstraint const &  constraint 
)
inline

Definition at line 88 of file recursion_constraint.hpp.

◆ xor_gate()

void acir_format::xor_gate ( Builder builder,
WitnessOrConstant< bb::fr a,
WitnessOrConstant< bb::fr b,
uint32_t  result 
)