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

Classes

struct  AesDecrypt
 AES-128 CBC decryption. More...
 
struct  AesEncrypt
 AES-128 CBC encryption. More...
 
class  BBApiChonkTest
 
struct  BBApiRequest
 
class  BBApiUltraHonkTest
 
struct  Blake2s
 Compute Blake2s hash. More...
 
struct  Blake2sToField
 Compute Blake2s hash and convert to field element. More...
 
struct  Bn254FqSqrt
 Compute square root of a BN254 Fq (base field) element. More...
 
struct  Bn254FrSqrt
 Compute square root of a BN254 Fr (scalar field) element. More...
 
struct  Bn254G1FromCompressed
 Decompress a BN254 G1 point from compressed form. More...
 
struct  Bn254G1IsOnCurve
 Check if a BN254 G1 point is on the curve. More...
 
struct  Bn254G1Mul
 Multiply a BN254 G1 point by a scalar. More...
 
struct  Bn254G2Mul
 Multiply a BN254 G2 point by a scalar. More...
 
struct  ChonkAccumulate
 Accumulate the previously loaded circuit into the IVC proof. More...
 
struct  ChonkCheckPrecomputedVk
 Verify that a precomputed verification key matches the circuit. More...
 
struct  ChonkComputeIvcVk
 Compute IVC verification key for the complete proof. More...
 
struct  ChonkComputeStandaloneVk
 Compute standalone verification key for a circuit. More...
 
struct  ChonkLoad
 Load a circuit into the Chonk instance for accumulation. More...
 
struct  ChonkProve
 Generate a proof for all accumulated circuits. More...
 
struct  ChonkStart
 Initialize a new Chonk instance for incremental proof accumulation. More...
 
struct  ChonkStats
 Get gate counts for a circuit. More...
 
struct  ChonkVerify
 Verify a Chonk proof with its verification key. More...
 
struct  CircuitComputeVk
 
struct  CircuitInput
 A circuit to be used in either ultrahonk or Chonk proving. More...
 
struct  CircuitInputNoVK
 A circuit to be used in either ultrahonk or chonk verification key derivation. More...
 
struct  CircuitProve
 Represents a request to generate a proof. Currently, UltraHonk is the only proving system supported by BB (after plonk was deprecated and removed). This is used for one-shot proving, not our "IVC" scheme, Chonk. For that, use the Chonk* commands. More...
 
struct  CircuitStats
 Consolidated command for retrieving circuit information. Combines gate count, circuit size, and other metadata into a single command. More...
 
struct  CircuitVerify
 Verify a proof against a verification key and public inputs. More...
 
struct  CircuitWriteSolidityVerifier
 Command to generate Solidity verifier contract. More...
 
struct  EcdsaSecp256k1ComputePublicKey
 Compute ECDSA public key from private key for secp256k1. More...
 
struct  EcdsaSecp256k1ConstructSignature
 Construct an ECDSA signature for secp256k1. More...
 
struct  EcdsaSecp256k1RecoverPublicKey
 Recover public key from ECDSA signature for secp256k1. More...
 
struct  EcdsaSecp256k1VerifySignature
 Verify an ECDSA signature for secp256k1. More...
 
struct  EcdsaSecp256r1ComputePublicKey
 Compute ECDSA public key from private key for secp256r1. More...
 
struct  EcdsaSecp256r1ConstructSignature
 Construct an ECDSA signature for secp256r1. More...
 
struct  EcdsaSecp256r1RecoverPublicKey
 Recover public key from ECDSA signature for secp256r1. More...
 
struct  EcdsaSecp256r1VerifySignature
 Verify an ECDSA signature for secp256r1. More...
 
struct  ErrorResponse
 Error response returned when a command fails. More...
 
struct  GrumpkinAdd
 Add two Grumpkin points. More...
 
struct  GrumpkinBatchMul
 Multiply multiple Grumpkin points by a single scalar. More...
 
struct  GrumpkinGetRandomFr
 Get a random Grumpkin field element (BN254 Fr) More...
 
struct  GrumpkinMul
 Multiply a Grumpkin point by a scalar. More...
 
struct  GrumpkinReduce512
 Reduce a 512-bit value modulo Grumpkin scalar field (BN254 Fr) More...
 
struct  MegaVkAsFields
 Convert a MegaFlavor verification key to field elements representation. Used for private function verification keys which use MegaFlavor (127 fields). More...
 
struct  PedersenCommit
 Compute Pedersen commitment to field elements. More...
 
struct  PedersenHash
 Compute Pedersen hash of field elements. More...
 
struct  PedersenHashBuffer
 Compute Pedersen hash of raw buffer. More...
 
struct  Poseidon2Hash
 Compute Poseidon2 hash of input field elements. More...
 
struct  Poseidon2HashAccumulate
 Compute accumulated Poseidon2 hash. More...
 
struct  Poseidon2Permutation
 Compute Poseidon2 permutation on state (4 field elements) More...
 
struct  ProofSystemSettings
 
struct  SchnorrComputePublicKey
 Compute Schnorr public key from private key. More...
 
struct  SchnorrConstructSignature
 Construct a Schnorr signature. More...
 
struct  SchnorrVerifySignature
 Verify a Schnorr signature. More...
 
struct  Secp256k1GetRandomFr
 Get a random Secp256k1 field element. More...
 
struct  Secp256k1Mul
 Multiply a Secp256k1 point by a scalar. More...
 
struct  Secp256k1Reduce512
 Reduce a 512-bit value modulo Secp256k1 scalar field. More...
 
struct  Shutdown
 
struct  SrsInitGrumpkinSrs
 Initialize Grumpkin SRS with Grumpkin points. More...
 
struct  SrsInitSrs
 Initialize BN254 SRS with G1 and G2 points. More...
 
struct  VkAsFields
 Convert a verification key to field elements representation. WORKTODO(bbapi): this should become mostly obsolete with having the verification keys always reported as field elements as well, and having a simpler serialization method. More...
 

Typedefs

using Command = NamedUnion< CircuitProve, CircuitComputeVk, CircuitStats, CircuitVerify, ChonkComputeStandaloneVk, ChonkComputeIvcVk, ChonkStart, ChonkLoad, ChonkAccumulate, ChonkProve, ChonkVerify, VkAsFields, MegaVkAsFields, CircuitWriteSolidityVerifier, ChonkCheckPrecomputedVk, ChonkStats, Poseidon2Hash, Poseidon2Permutation, Poseidon2HashAccumulate, PedersenCommit, PedersenHash, PedersenHashBuffer, Blake2s, Blake2sToField, AesEncrypt, AesDecrypt, GrumpkinMul, GrumpkinAdd, GrumpkinBatchMul, GrumpkinGetRandomFr, GrumpkinReduce512, Secp256k1Mul, Secp256k1GetRandomFr, Secp256k1Reduce512, Bn254FrSqrt, Bn254FqSqrt, Bn254G1Mul, Bn254G2Mul, Bn254G1IsOnCurve, Bn254G1FromCompressed, SchnorrComputePublicKey, SchnorrConstructSignature, SchnorrVerifySignature, EcdsaSecp256k1ComputePublicKey, EcdsaSecp256r1ComputePublicKey, EcdsaSecp256k1ConstructSignature, EcdsaSecp256r1ConstructSignature, EcdsaSecp256k1RecoverPublicKey, EcdsaSecp256r1RecoverPublicKey, EcdsaSecp256k1VerifySignature, EcdsaSecp256r1VerifySignature, SrsInitSrs, SrsInitGrumpkinSrs, Shutdown >
 
using CommandResponse = NamedUnion< ErrorResponse, CircuitProve::Response, CircuitComputeVk::Response, CircuitStats::Response, CircuitVerify::Response, ChonkComputeStandaloneVk::Response, ChonkComputeIvcVk::Response, ChonkStart::Response, ChonkLoad::Response, ChonkAccumulate::Response, ChonkProve::Response, ChonkVerify::Response, VkAsFields::Response, MegaVkAsFields::Response, CircuitWriteSolidityVerifier::Response, ChonkCheckPrecomputedVk::Response, ChonkStats::Response, Poseidon2Hash::Response, Poseidon2Permutation::Response, Poseidon2HashAccumulate::Response, PedersenCommit::Response, PedersenHash::Response, PedersenHashBuffer::Response, Blake2s::Response, Blake2sToField::Response, AesEncrypt::Response, AesDecrypt::Response, GrumpkinMul::Response, GrumpkinAdd::Response, GrumpkinBatchMul::Response, GrumpkinGetRandomFr::Response, GrumpkinReduce512::Response, Secp256k1Mul::Response, Secp256k1GetRandomFr::Response, Secp256k1Reduce512::Response, Bn254FrSqrt::Response, Bn254FqSqrt::Response, Bn254G1Mul::Response, Bn254G2Mul::Response, Bn254G1IsOnCurve::Response, Bn254G1FromCompressed::Response, SchnorrComputePublicKey::Response, SchnorrConstructSignature::Response, SchnorrVerifySignature::Response, EcdsaSecp256k1ComputePublicKey::Response, EcdsaSecp256r1ComputePublicKey::Response, EcdsaSecp256k1ConstructSignature::Response, EcdsaSecp256r1ConstructSignature::Response, EcdsaSecp256k1RecoverPublicKey::Response, EcdsaSecp256r1RecoverPublicKey::Response, EcdsaSecp256k1VerifySignature::Response, EcdsaSecp256r1VerifySignature::Response, SrsInitSrs::Response, SrsInitGrumpkinSrs::Response, Shutdown::Response >
 

Enumerations

enum class  VkPolicy { DEFAULT , CHECK , RECOMPUTE , REWRITE }
 Policy for handling verification keys during IVC accumulation. More...
 
enum class  OracleHashType { POSEIDON2 , KECCAK , STARKNET }
 Convert oracle hash type string to enum for internal use. More...
 

Functions

 TEST_F (BBApiChonkTest, StandaloneVerificationKeySerialization)
 
 TEST_F (BBApiChonkTest, ChonkVkSerialization)
 
std::string get_msgpack_schema_as_json ()
 
CommandResponse execute (BBApiRequest &request, Command &&command)
 Executes a command by visiting a variant of all possible commands.
 
OracleHashType parse_oracle_hash_type (const std::string &type)
 
VkPolicy parse_vk_policy (const std::string &policy)
 Convert VK policy string to enum for internal use.
 
template<typename Flavor >
acir_format::ProgramMetadata _create_program_metadata ()
 
template<typename Flavor , typename Circuit = typename Flavor::CircuitBuilder>
Circuit _compute_circuit (std::vector< uint8_t > &&bytecode, std::vector< uint8_t > &&witness)
 
template<typename Flavor >
std::shared_ptr< ProverInstance_< Flavor > > _compute_prover_instance (std::vector< uint8_t > &&bytecode, std::vector< uint8_t > &&witness)
 
template<typename Flavor >
CircuitProve::Response _prove (std::vector< uint8_t > &&bytecode, std::vector< uint8_t > &&witness, std::vector< uint8_t > &&vk_bytes)
 
template<typename Flavor >
bool _verify (const bool ipa_accumulation, const std::vector< uint8_t > &vk_bytes, const std::vector< uint256_t > &public_inputs, const std::vector< uint256_t > &proof)
 
template<typename Flavor , typename Circuit = typename Flavor::CircuitBuilder>
CircuitStats::Response _stats (std::vector< uint8_t > &&bytecode, bool include_gates_per_opcode)
 
 TEST_F (BBApiUltraHonkTest, CircuitProve)
 
 TEST_F (BBApiUltraHonkTest, ParallelComputeVk)
 
CommandResponse bbapi (Command &&command)
 Main API function that processes commands and returns responses.
 

Typedef Documentation

◆ Command

◆ CommandResponse

using bb::bbapi::CommandResponse = typedef NamedUnion<ErrorResponse, CircuitProve::Response, CircuitComputeVk::Response, CircuitStats::Response, CircuitVerify::Response, ChonkComputeStandaloneVk::Response, ChonkComputeIvcVk::Response, ChonkStart::Response, ChonkLoad::Response, ChonkAccumulate::Response, ChonkProve::Response, ChonkVerify::Response, VkAsFields::Response, MegaVkAsFields::Response, CircuitWriteSolidityVerifier::Response, ChonkCheckPrecomputedVk::Response, ChonkStats::Response, Poseidon2Hash::Response, Poseidon2Permutation::Response, Poseidon2HashAccumulate::Response, PedersenCommit::Response, PedersenHash::Response, PedersenHashBuffer::Response, Blake2s::Response, Blake2sToField::Response, AesEncrypt::Response, AesDecrypt::Response, GrumpkinMul::Response, GrumpkinAdd::Response, GrumpkinBatchMul::Response, GrumpkinGetRandomFr::Response, GrumpkinReduce512::Response, Secp256k1Mul::Response, Secp256k1GetRandomFr::Response, Secp256k1Reduce512::Response, Bn254FrSqrt::Response, Bn254FqSqrt::Response, Bn254G1Mul::Response, Bn254G2Mul::Response, Bn254G1IsOnCurve::Response, Bn254G1FromCompressed::Response, SchnorrComputePublicKey::Response, SchnorrConstructSignature::Response, SchnorrVerifySignature::Response, EcdsaSecp256k1ComputePublicKey::Response, EcdsaSecp256r1ComputePublicKey::Response, EcdsaSecp256k1ConstructSignature::Response, EcdsaSecp256r1ConstructSignature::Response, EcdsaSecp256k1RecoverPublicKey::Response, EcdsaSecp256r1RecoverPublicKey::Response, EcdsaSecp256k1VerifySignature::Response, EcdsaSecp256r1VerifySignature::Response, SrsInitSrs::Response, SrsInitGrumpkinSrs::Response, Shutdown::Response>

Definition at line 71 of file bbapi_execute.hpp.

Enumeration Type Documentation

◆ OracleHashType

enum class bb::bbapi::OracleHashType
strong

Convert oracle hash type string to enum for internal use.

Enumerator
POSEIDON2 
KECCAK 
STARKNET 

Definition at line 117 of file bbapi_shared.hpp.

◆ VkPolicy

enum class bb::bbapi::VkPolicy
strong

Policy for handling verification keys during IVC accumulation.

Enumerator
DEFAULT 
CHECK 
RECOMPUTE 
REWRITE 

Definition at line 23 of file bbapi_shared.hpp.

Function Documentation

◆ _compute_circuit()

template<typename Flavor , typename Circuit = typename Flavor::CircuitBuilder>
Circuit bb::bbapi::_compute_circuit ( std::vector< uint8_t > &&  bytecode,
std::vector< uint8_t > &&  witness 
)

Definition at line 43 of file bbapi_ultra_honk.cpp.

◆ _compute_prover_instance()

template<typename Flavor >
std::shared_ptr< ProverInstance_< Flavor > > bb::bbapi::_compute_prover_instance ( std::vector< uint8_t > &&  bytecode,
std::vector< uint8_t > &&  witness 
)

Definition at line 55 of file bbapi_ultra_honk.cpp.

◆ _create_program_metadata()

template<typename Flavor >
acir_format::ProgramMetadata bb::bbapi::_create_program_metadata ( )

Definition at line 35 of file bbapi_ultra_honk.cpp.

◆ _prove()

template<typename Flavor >
CircuitProve::Response bb::bbapi::_prove ( std::vector< uint8_t > &&  bytecode,
std::vector< uint8_t > &&  witness,
std::vector< uint8_t > &&  vk_bytes 
)

Definition at line 68 of file bbapi_ultra_honk.cpp.

◆ _stats()

template<typename Flavor , typename Circuit = typename Flavor::CircuitBuilder>
CircuitStats::Response bb::bbapi::_stats ( std::vector< uint8_t > &&  bytecode,
bool  include_gates_per_opcode 
)

Definition at line 271 of file bbapi_ultra_honk.cpp.

◆ _verify()

template<typename Flavor >
bool bb::bbapi::_verify ( const bool  ipa_accumulation,
const std::vector< uint8_t > &  vk_bytes,
const std::vector< uint256_t > &  public_inputs,
const std::vector< uint256_t > &  proof 
)

Definition at line 130 of file bbapi_ultra_honk.cpp.

◆ bbapi()

CommandResponse bb::bbapi::bbapi ( Command &&  command)

Main API function that processes commands and returns responses.

Parameters
commandThe command to execute
Returns
CommandResponse The response from executing the command

Definition at line 24 of file c_bind.cpp.

◆ execute()

CommandResponse bb::bbapi::execute ( BBApiRequest request,
Command &&  command 
)
inline

Executes a command by visiting a variant of all possible commands.

Parameters
commandThe command to execute, consumed by this function.
requestThe circuit registry (acting as the request context).
Returns
A variant of all possible command responses.

Definition at line 134 of file bbapi_execute.hpp.

◆ get_msgpack_schema_as_json()

std::string bb::bbapi::get_msgpack_schema_as_json ( )

Definition at line 11 of file bbapi_execute.cpp.

◆ parse_oracle_hash_type()

OracleHashType bb::bbapi::parse_oracle_hash_type ( const std::string &  type)
inline

Definition at line 119 of file bbapi_shared.hpp.

◆ parse_vk_policy()

VkPolicy bb::bbapi::parse_vk_policy ( const std::string &  policy)
inline

Convert VK policy string to enum for internal use.

Definition at line 133 of file bbapi_shared.hpp.

◆ TEST_F() [1/4]

bb::bbapi::TEST_F ( BBApiChonkTest  ,
ChonkVkSerialization   
)

Definition at line 36 of file bbapi_chonk.test.cpp.

◆ TEST_F() [2/4]

bb::bbapi::TEST_F ( BBApiChonkTest  ,
StandaloneVerificationKeySerialization   
)

Definition at line 17 of file bbapi_chonk.test.cpp.

◆ TEST_F() [3/4]

bb::bbapi::TEST_F ( BBApiUltraHonkTest  ,
CircuitProve   
)

Definition at line 31 of file bbapi_ultra_honk.test.cpp.

◆ TEST_F() [4/4]

bb::bbapi::TEST_F ( BBApiUltraHonkTest  ,
ParallelComputeVk   
)

Definition at line 73 of file bbapi_ultra_honk.test.cpp.