|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
Compresses Chonk proofs from vector<fr> to compact byte representations. More...
#include <proof_compression.hpp>
Static Public Member Functions | |
| static size_t | compressed_element_count (size_t mega_num_public_inputs=0) |
| Count the total compressed elements for a Chonk proof. Each element (scalar or commitment, either curve) compresses to exactly 32 bytes. | |
| static size_t | compressed_mega_num_public_inputs (size_t compressed_bytes) |
| Derive mega_num_public_inputs from compressed proof size. | |
| static std::vector< uint8_t > | compress_chonk_proof (const ChonkProof &proof) |
| static ChonkProof | decompress_chonk_proof (const std::vector< uint8_t > &compressed, size_t mega_num_public_inputs) |
Private Types | |
| using | Fr = curve::BN254::ScalarField |
| using | Fq = curve::BN254::BaseField |
Static Private Member Functions | |
| template<typename Field > | |
| static bool | y_is_negative (const Field &y) |
| True if y is in the "upper half" of its field, used for point compression sign bit. | |
| static void | write_u256 (std::vector< uint8_t > &out, const uint256_t &val) |
| static uint256_t | read_u256 (const std::vector< uint8_t > &data, size_t &pos) |
| static Fq | reconstruct_fq (const Fr &lo, const Fr &hi) |
| static std::pair< Fr, Fr > | split_fq (const Fq &val) |
| template<typename ScalarFn , typename CommitmentFn > | |
| static void | walk_mega_zk_proof (ScalarFn &&process_scalar, CommitmentFn &&process_commitment, size_t num_public_inputs) |
| Walk a MegaZK proof (BN254, ZK sumcheck). | |
| template<typename ScalarFn , typename CommitmentFn > | |
| static void | walk_merge_proof (ScalarFn &&process_scalar, CommitmentFn &&process_commitment) |
| Walk a Merge proof (42 Fr, all BN254). | |
| template<typename ScalarFn , typename CommitmentFn > | |
| static void | walk_eccvm_proof (ScalarFn &&process_scalar, CommitmentFn &&process_commitment) |
| Walk an ECCVM proof (all Grumpkin). | |
| template<typename ScalarFn , typename CommitmentFn > | |
| static void | walk_ipa_proof (ScalarFn &&process_scalar, CommitmentFn &&process_commitment) |
| Walk an IPA proof (64 Fr, all Grumpkin). | |
| template<typename ScalarFn , typename CommitmentFn > | |
| static void | walk_translator_proof (ScalarFn &&process_scalar, CommitmentFn &&process_commitment) |
| Walk a Translator proof (all BN254). | |
| template<typename BN254ScalarFn , typename BN254CommFn , typename GrumpkinScalarFn , typename GrumpkinCommFn > | |
| static void | walk_chonk_proof (BN254ScalarFn &&bn254_scalar, BN254CommFn &&bn254_comm, GrumpkinScalarFn &&grumpkin_scalar, GrumpkinCommFn &&grumpkin_comm, size_t mega_num_public_inputs) |
| Walk a full Chonk proof (5 sub-proofs across two curves). | |
Static Private Attributes | |
| static constexpr uint256_t | SIGN_BIT_MASK = uint256_t(1) << 255 |
| static constexpr uint64_t | NUM_LIMB_BITS = 68 |
| static constexpr uint64_t | FQ_SPLIT_BITS = NUM_LIMB_BITS * 2 |
| static constexpr size_t | BN254_FRS_PER_SCALAR = 1 |
| static constexpr size_t | BN254_FRS_PER_COMM = 4 |
| static constexpr size_t | GRUMPKIN_FRS_PER_SCALAR = 2 |
| static constexpr size_t | GRUMPKIN_FRS_PER_COMM = 2 |
| static constexpr size_t | EXPECTED_MEGA_ZK_FRS |
| static constexpr size_t | EXPECTED_MERGE_FRS |
| static constexpr size_t | EXPECTED_ECCVM_FRS |
| static constexpr size_t | EXPECTED_IPA_FRS |
| static constexpr size_t | EXPECTED_TRANSLATOR_FRS |
Compresses Chonk proofs from vector<fr> to compact byte representations.
Compression techniques:
Every element compresses to exactly 32 bytes regardless of type:
Definition at line 32 of file proof_compression.hpp.
|
private |
Definition at line 34 of file proof_compression.hpp.
|
private |
Definition at line 33 of file proof_compression.hpp.
|
inlinestatic |
Definition at line 430 of file proof_compression.hpp.
|
inlinestatic |
Count the total compressed elements for a Chonk proof. Each element (scalar or commitment, either curve) compresses to exactly 32 bytes.
Definition at line 405 of file proof_compression.hpp.
|
inlinestatic |
Derive mega_num_public_inputs from compressed proof size.
| compressed_bytes | Total size of the compressed proof in bytes. |
Definition at line 417 of file proof_compression.hpp.
|
inlinestatic |
Definition at line 493 of file proof_compression.hpp.
|
inlinestaticprivate |
Definition at line 59 of file proof_compression.hpp.
Definition at line 68 of file proof_compression.hpp.
Definition at line 73 of file proof_compression.hpp.
|
inlinestaticprivate |
Walk a full Chonk proof (5 sub-proofs across two curves).
Definition at line 304 of file proof_compression.hpp.
|
inlinestaticprivate |
Walk an ECCVM proof (all Grumpkin).
Layout from ECCVMFlavor::PROOF_LENGTH formula and ECCVM prover code. Grumpkin RoundUnivariateHandler commits to each round univariate and sends 2 evaluations (at 0 and 1), interleaved per round.
Definition at line 168 of file proof_compression.hpp.
|
inlinestaticprivate |
Walk an IPA proof (64 Fr, all Grumpkin).
IPA_PROOF_LENGTH = 4 * CONST_ECCVM_LOG_N + 4
Definition at line 236 of file proof_compression.hpp.
|
inlinestaticprivate |
Walk a MegaZK proof (BN254, ZK sumcheck).
Layout from MegaZKStructuredProofBase and sumcheck prover code.
Definition at line 89 of file proof_compression.hpp.
|
inlinestaticprivate |
Walk a Merge proof (42 Fr, all BN254).
Layout from MergeProver::construct_proof.
Definition at line 142 of file proof_compression.hpp.
|
inlinestaticprivate |
Walk a Translator proof (all BN254).
Layout from TranslatorFlavor::PROOF_LENGTH formula.
Definition at line 254 of file proof_compression.hpp.
|
inlinestaticprivate |
Definition at line 52 of file proof_compression.hpp.
|
inlinestaticprivate |
True if y is in the "upper half" of its field, used for point compression sign bit.
Definition at line 43 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 325 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 324 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 354 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 376 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 331 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 346 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 383 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 40 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 327 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 326 of file proof_compression.hpp.
|
staticconstexprprivate |
Definition at line 39 of file proof_compression.hpp.
Definition at line 36 of file proof_compression.hpp.