Skip to main content

zinc_piop/ideal_check/
structs.rs

1use crypto_primitives::PrimeField;
2use zinc_poly::univariate::dynamic::over_field::{DynamicPolyVecF, DynamicPolynomialF};
3use zinc_transcript::traits::{ConstTranscribable, GenTranscribable, Transcribable};
4
5#[derive(Clone, Debug, PartialEq, Eq)]
6pub struct Proof<F: PrimeField> {
7    pub combined_mle_values: Vec<DynamicPolynomialF<F>>,
8}
9
10impl<F> GenTranscribable for Proof<F>
11where
12    F: PrimeField,
13    F::Inner: ConstTranscribable,
14    F::Modulus: ConstTranscribable,
15{
16    fn read_transcription_bytes_exact(bytes: &[u8]) -> Self {
17        let combined_mle_values = DynamicPolyVecF::read_transcription_bytes_exact(bytes).0;
18        Self {
19            combined_mle_values,
20        }
21    }
22
23    fn write_transcription_bytes_exact(&self, buf: &mut [u8]) {
24        DynamicPolyVecF::reinterpret(&self.combined_mle_values)
25            .write_transcription_bytes_exact(buf);
26    }
27}
28
29impl<F> Transcribable for Proof<F>
30where
31    F: PrimeField,
32    F::Inner: ConstTranscribable,
33    F::Modulus: ConstTranscribable,
34{
35    fn get_num_bytes(&self) -> usize {
36        DynamicPolyVecF::reinterpret(&self.combined_mle_values).get_num_bytes()
37    }
38}
39
40#[derive(Clone, Debug)]
41pub struct ProverState<F: PrimeField> {
42    pub evaluation_point: Vec<F>,
43}
44
45#[derive(Clone, Debug)]
46pub struct VerifierSubclaim<F: PrimeField> {
47    pub evaluation_point: Vec<F>,
48    pub values: Vec<DynamicPolynomialF<F>>,
49}