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

Classes

struct  BBApiRequest
 
class  BBApiUltraHonkTest
 
struct  CircuitComputeVk
 
struct  CircuitInput
 A circuit to be used in either ultrahonk or ClientIVC-honk proving. More...
 
struct  CircuitInputNoVK
 A circuit to be used in either ultrahonk or chonk (ClientIVC+honk) 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, ClientIVC-honk. For that, use the ClientIVC* 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  ClientIvcAccumulate
 Accumulate the previously loaded circuit into the IVC proof. More...
 
struct  ClientIvcCheckPrecomputedVk
 Verify that a precomputed verification key matches the circuit. More...
 
struct  ClientIvcComputeIvcVk
 Compute IVC verification key for the complete proof. More...
 
struct  ClientIvcComputeStandaloneVk
 Compute standalone verification key for a circuit. More...
 
struct  ClientIvcLoad
 Load a circuit into the ClientIVC instance for accumulation. More...
 
struct  ClientIvcProve
 Generate a proof for all accumulated circuits. More...
 
struct  ClientIvcStart
 Initialize a new ClientIVC instance for incremental proof accumulation. More...
 
struct  ClientIvcStats
 Get gate counts for a circuit. More...
 
struct  ClientIvcVerify
 Verify a ClientIVC proof with its verification key. More...
 
struct  ProofSystemSettings
 
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, ClientIvcComputeStandaloneVk, ClientIvcComputeIvcVk, ClientIvcStart, ClientIvcLoad, ClientIvcAccumulate, ClientIvcProve, ClientIvcVerify, VkAsFields, CircuitWriteSolidityVerifier, ClientIvcCheckPrecomputedVk, ClientIvcStats >
 
using CommandResponse = NamedUnion< CircuitProve::Response, CircuitComputeVk::Response, CircuitStats::Response, CircuitVerify::Response, ClientIvcComputeStandaloneVk::Response, ClientIvcComputeIvcVk::Response, ClientIvcStart::Response, ClientIvcLoad::Response, ClientIvcAccumulate::Response, ClientIvcProve::Response, ClientIvcVerify::Response, VkAsFields::Response, CircuitWriteSolidityVerifier::Response, ClientIvcCheckPrecomputedVk::Response, ClientIvcStats::Response >
 

Enumerations

enum class  OracleHashType { POSEIDON2 , KECCAK , STARKNET }
 Convert oracle hash type string to enum for internal use. More...
 

Functions

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)
 
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< DeciderProvingKey_< Flavor > > _compute_proving_key (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)
 
 TEST_F (BBApiUltraHonkTest, CircuitProve)
 
CommandResponse bbapi (Command &&command)
 Main API function that processes commands and returns responses.
 

Typedef Documentation

◆ Command

◆ CommandResponse

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 102 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 50 of file bbapi_ultra_honk.cpp.

◆ _compute_proving_key()

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

Definition at line 62 of file bbapi_ultra_honk.cpp.

◆ _create_program_metadata()

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

Definition at line 31 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 76 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 138 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 28 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 50 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 104 of file bbapi_shared.hpp.

◆ TEST_F()

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

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