|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
RecursionConstraint struct contains information required to recursively verify a proof. More...
#include <recursion_constraint.hpp>
Public Attributes | |
| std::vector< uint32_t > | key |
| std::vector< uint32_t > | proof |
| std::vector< uint32_t > | public_inputs |
| uint32_t | key_hash |
| uint32_t | proof_type |
| WitnessOrConstant< bb::fr > | predicate |
Friends | |
| bool | operator== (RecursionConstraint const &lhs, RecursionConstraint const &rhs)=default |
RecursionConstraint struct contains information required to recursively verify a proof.
The recursive verifier algorithm produces an aggregation object representing 2 G1 points, which in the code is called PairingPoints. The smart contract Verifier must be aware of this aggregation object in order to complete the recursive verification. We output the PairingPoints object to avoid perfoming pairing calculations in-circuit.
NOTE: Each recursive verification outputs a different PairingPoints object. If a circuit performs multiple recursive verifications we aggregate the PairingPoints into a single PairingPoints using random challenges.
NOTE: If a circuit C recursively verifies a proof \(\pi\) which is the output of another recursive verification, then \(\pi\) contains among its public inputs a PairingPoints object \(P\). Then, C extracts \(P\) from the public inputs, recursively verifies the proof \(\pi\) producing a PairingPoints objects \(P'\), and then aggregates \(P, P'\) to produce a new PairingPoints object \(P_{out}\) which is added to the public inputs of C.
| key | the indices of the verification key of the circuit whose proof is recursively verified |
| proof | the indices of the proof being recursively verified |
| public_inputs | the indices of the public inputs of the proof being recursively verified |
| key_hash | the index of the hash of the verification key of the circuit whose proof is being recursively verified |
| proof_type | the type of the proof being recursively verified |
| predicate | witness or constant determining whether the recursive verification constraint is active |
Definition at line 119 of file recursion_constraint.hpp.
|
friend |
| std::vector<uint32_t> acir_format::RecursionConstraint::key |
Definition at line 120 of file recursion_constraint.hpp.
| uint32_t acir_format::RecursionConstraint::key_hash |
Definition at line 123 of file recursion_constraint.hpp.
| WitnessOrConstant<bb::fr> acir_format::RecursionConstraint::predicate |
Definition at line 125 of file recursion_constraint.hpp.
| std::vector<uint32_t> acir_format::RecursionConstraint::proof |
Definition at line 121 of file recursion_constraint.hpp.
| uint32_t acir_format::RecursionConstraint::proof_type |
Definition at line 124 of file recursion_constraint.hpp.
| std::vector<uint32_t> acir_format::RecursionConstraint::public_inputs |
Definition at line 122 of file recursion_constraint.hpp.