|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
#include <ultra_verifier.hpp>
Classes | |
| struct | PaddingData |
| Result of padding computation. More... | |
| struct | ReductionResult |
| Result of reducing ultra proof to pairing points check. Contains pairing points and the aggrefate result of intermediate checks. More... | |
Public Types | |
| using | FF = typename Flavor::FF |
| using | Commitment = typename Flavor::Commitment |
| using | Curve = typename Flavor::Curve |
| using | VerificationKey = typename Flavor::VerificationKey |
| using | Transcript = typename Flavor::Transcript |
| using | Instance = VerifierInstance_< Flavor > |
| using | Builder = std::conditional_t< IsRecursive, typename Flavor::CircuitBuilder, void > |
| using | PairingPoints = std::conditional_t< IsRecursive, stdlib::recursion::PairingPoints< Curve >, bb::PairingPoints< Curve > > |
| using | PublicInputs = std::vector< FF > |
| using | Proof = typename Transcript::Proof |
| using | Output = std::conditional_t< IsRecursive, stdlib::recursion::honk::UltraRecursiveVerifierOutput< Builder >, UltraVerifierOutput< Flavor > > |
| using | IPACurve = std::conditional_t< IsRecursive, stdlib::grumpkin< Builder >, curve::Grumpkin > |
| using | IPAClaim = OpeningClaim< IPACurve > |
| using | VKAndHash = typename Flavor::VKAndHash |
| A constructor for native and recursive verifiers. | |
Public Member Functions | |
| UltraVerifier_ (const std::shared_ptr< VKAndHash > &vk_and_hash, const std::shared_ptr< Transcript > &transcript=std::make_shared< Transcript >()) | |
| PaddingData | process_padding () const |
| Compute log_n and padding indicator array based on flavor configuration. | |
| ReductionResult | reduce_to_pairing_check (const Proof &proof) |
| Reduce ultra proof to verification claims (works for both native and recursive) | |
| std::pair< Proof, Proof > | split_rollup_proof (const Proof &combined_proof) const |
| Split a combined rollup proof into honk and IPA components. | |
| bool | verify_ipa (const Proof &ipa_proof, const IPAClaim &ipa_claim) |
| Verify IPA proof for rollup circuits (native verifier only) | |
| Output | verify_proof (const Proof &proof) |
| Perform ultra verification. | |
| const std::shared_ptr< Transcript > & | get_transcript () const |
| Get the transcript (for accessing manifest in tests) | |
| const std::shared_ptr< Instance > & | get_verifier_instance () const |
| Get the verifier instance (for accessing VK and witness commitments in Chonk/Goblin) | |
| const PublicInputs & | get_public_inputs () const |
| Get public inputs from the verifier instance. | |
| const Flavor::WitnessCommitments & | get_witness_commitments () const |
| Get witness commitments from the verifier instance. | |
| const Commitment & | get_calldata_commitment () const |
| Get calldata commitment (MegaFlavor only) | |
| auto | get_ecc_op_wires () const |
| Get ECC op wire commitments as an array (MegaFlavor only) | |
Static Public Attributes | |
| static constexpr bool | IsRecursive = IsRecursiveFlavor<Flavor> |
Private Attributes | |
| std::shared_ptr< VKAndHash > | vk_and_hash |
| std::shared_ptr< Instance > | verifier_instance |
| std::shared_ptr< Transcript > | transcript |
| std::shared_ptr< Transcript > | ipa_transcript |
| Builder * | builder |
Definition at line 82 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Builder = std::conditional_t<IsRecursive, typename Flavor::CircuitBuilder, void> |
Definition at line 94 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Commitment = typename Flavor::Commitment |
Definition at line 85 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Curve = typename Flavor::Curve |
Definition at line 86 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::FF = typename Flavor::FF |
Definition at line 84 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Instance = VerifierInstance_<Flavor> |
Definition at line 89 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::IPAClaim = OpeningClaim<IPACurve> |
Definition at line 108 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::IPACurve = std::conditional_t<IsRecursive, stdlib::grumpkin<Builder>, curve::Grumpkin> |
Definition at line 107 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Output = std::conditional_t<IsRecursive, stdlib::recursion::honk::UltraRecursiveVerifierOutput<Builder>, UltraVerifierOutput<Flavor> > |
Definition at line 102 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::PairingPoints = std::conditional_t<IsRecursive, stdlib::recursion::PairingPoints<Curve>, bb::PairingPoints<Curve> > |
Definition at line 95 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Proof = typename Transcript::Proof |
Definition at line 99 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::PublicInputs = std::vector<FF> |
Definition at line 98 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::Transcript = typename Flavor::Transcript |
Definition at line 88 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::VerificationKey = typename Flavor::VerificationKey |
Definition at line 87 of file ultra_verifier.hpp.
| using bb::UltraVerifier_< Flavor, IO >::VKAndHash = typename Flavor::VKAndHash |
A constructor for native and recursive verifiers.
| vk_and_hash | Contains verification key and its hash |
| transcript | Transcript instance (optional, defaults to new transcript) |
Definition at line 134 of file ultra_verifier.hpp.
|
inlineexplicit |
Definition at line 135 of file ultra_verifier.hpp.
|
inline |
Get calldata commitment (MegaFlavor only)
Definition at line 221 of file ultra_verifier.hpp.
|
inline |
Get ECC op wire commitments as an array (MegaFlavor only)
Definition at line 230 of file ultra_verifier.hpp.
|
inline |
Get public inputs from the verifier instance.
Definition at line 208 of file ultra_verifier.hpp.
|
inline |
Get the transcript (for accessing manifest in tests)
Definition at line 198 of file ultra_verifier.hpp.
|
inline |
Get the verifier instance (for accessing VK and witness commitments in Chonk/Goblin)
Definition at line 203 of file ultra_verifier.hpp.
|
inline |
Get witness commitments from the verifier instance.
Definition at line 213 of file ultra_verifier.hpp.
| UltraVerifier_< Flavor, IO >::PaddingData bb::UltraVerifier_< Flavor, IO >::process_padding | ( | ) | const |
Compute log_n and padding indicator array based on flavor configuration.
Handles all combinations of native/recursive, ZK/non-ZK, and padding/no-padding:
Definition at line 30 of file ultra_verifier.cpp.
| UltraVerifier_< Flavor, IO >::ReductionResult bb::UltraVerifier_< Flavor, IO >::reduce_to_pairing_check | ( | const Proof & | proof | ) |
Reduce ultra proof to verification claims (works for both native and recursive)
Contains all shared verification logic: Oink, Sumcheck, Shplemini
Definition at line 124 of file ultra_verifier.cpp.
| std::pair< typename UltraVerifier_< Flavor, IO >::Proof, typename UltraVerifier_< Flavor, IO >::Proof > bb::UltraVerifier_< Flavor, IO >::split_rollup_proof | ( | const Proof & | combined_proof | ) | const |
Split a combined rollup proof into honk and IPA components.
| combined_proof | The concatenated [honk_proof | ipa_proof] |
Definition at line 74 of file ultra_verifier.cpp.
| UltraVerifier_< Flavor, IO >::Output bb::UltraVerifier_< Flavor, IO >::verify_proof | ( | const Proof & | proof | ) |
Perform ultra verification.
For Rollup flavors, the proof is expected to be a combined [honk_proof | ipa_proof] and will be split internally. For non-Rollup flavors, the proof is used as-is.
| proof | The proof (combined with IPA for Rollup flavors) |
For Rollup flavors, splits the combined proof internally.
Definition at line 214 of file ultra_verifier.cpp.
|
private |
Definition at line 243 of file ultra_verifier.hpp.
|
private |
Definition at line 240 of file ultra_verifier.hpp.
|
staticconstexpr |
Definition at line 91 of file ultra_verifier.hpp.
|
private |
Definition at line 239 of file ultra_verifier.hpp.
|
private |
Definition at line 238 of file ultra_verifier.hpp.
|
private |
Definition at line 237 of file ultra_verifier.hpp.