Skip to main content

dory_pcs/
proof.rs

1//! Dory proof structure
2//!
3//! A Dory proof consists of:
4//! - VMV message (PCS transform)
5//! - Multiple rounds of reduce messages (log n rounds)
6//! - Final scalar product message
7
8use crate::messages::*;
9
10/// A complete Dory evaluation proof
11///
12/// The proof demonstrates that a committed polynomial evaluates to a specific value
13/// at a given point. It consists of messages from the interactive protocol made
14/// non-interactive via Fiat-Shamir.
15///
16/// The proof includes the matrix dimensions (nu, sigma) used during proof generation,
17/// which the verifier uses to ensure consistency with the evaluation point.
18#[derive(Clone, Debug)]
19pub struct DoryProof<G1, G2, GT> {
20    /// Vector-Matrix-Vector message for PCS transformation
21    pub vmv_message: VMVMessage<G1, GT>,
22
23    /// First reduce messages for each round (nu rounds total)
24    pub first_messages: Vec<FirstReduceMessage<G1, G2, GT>>,
25
26    /// Second reduce messages for each round (nu rounds total)
27    pub second_messages: Vec<SecondReduceMessage<G1, G2, GT>>,
28
29    /// Final scalar product message
30    pub final_message: ScalarProductMessage<G1, G2>,
31
32    /// Log₂ of number of rows in the coefficient matrix
33    pub nu: usize,
34
35    /// Log₂ of number of columns in the coefficient matrix
36    pub sigma: usize,
37}