use crate::field::field::Field; use crate::target::Target; pub struct Hash { elements: Vec, } pub struct HashTarget { elements: Vec, } pub struct Proof2 { /// Merkle root of LDEs of wire values. pub wires_root: Hash, /// Merkle root of LDEs of Z, in the context of Plonk's permutation argument. pub plonk_z_root: Hash, /// Merkle root of LDEs of the quotient polynomial components. pub plonk_t_root: Hash, /// Purported values of each polynomial at each challenge point. pub openings: Vec>, // TODO: FRI Merkle proofs. } pub struct ProofTarget2 { /// Merkle root of LDEs of wire values. pub wires_root: HashTarget, /// Merkle root of LDEs of Z, in the context of Plonk's permutation argument. pub plonk_z_root: HashTarget, /// Merkle root of LDEs of the quotient polynomial components. pub plonk_t_root: HashTarget, /// Purported values of each polynomial at each challenge point. pub openings: Vec, /// A FRI argument for each FRI query. pub fri_proofs: Vec, } /// Represents a single FRI query, i.e. a path through the reduction tree. pub struct FriProofTarget { /// Merkle proofs for the original purported codewords, i.e. the subject of the LDT. pub initial_merkle_proofs: Vec, /// Merkle proofs for the reduced polynomials that were sent in the commit phase. pub intermediate_merkle_proofs: Vec, /// The final polynomial in point-value form. pub final_poly: Vec, } pub struct MerkleProofTarget { pub leaf: Vec, pub siblings: Vec, // TODO: Also need left/right turn info. } /// The purported values of each polynomial at a single point. pub struct OpeningSet { pub constants: Vec, pub plonk_sigmas: Vec, pub wires: Vec, // TODO: One or multiple? pub plonk_z: Vec, pub plonk_t: Vec, } /// The purported values of each polynomial at a single point. pub struct OpeningSetTarget { pub constants: Vec, pub plonk_sigmas: Vec, pub wires: Vec, // TODO: One or multiple? pub plonk_z: Vec, pub plonk_t: Vec, }