arnaucube
arnaucube/hyperplonkPublic Self-hosted repository
hyperplonk/poly-iop/src/lib.rs
poly-iop/src/lib.rsRaw
 1use ark_ff::PrimeField;
 2use std::marker::PhantomData;
 3
 4mod errors;
 5mod perm_check;
 6mod structs;
 7mod sum_check;
 8mod transcript;
 9mod utils;
10mod virtual_poly;
11mod zero_check;
12
13pub use errors::PolyIOPErrors;
14pub use sum_check::SumCheck;
15pub use virtual_poly::VirtualPolynomial;
16pub use zero_check::ZeroCheck;
17
18#[derive(Clone, Debug, Default, Copy)]
19/// Struct for PolyIOP protocol.
20/// It has an associated type `F` that defines the prime field the multi-variate
21/// polynomial operates on.
22///
23/// An PolyIOP may be instantiated with one of the following:
24/// - SumCheck protocol.
25/// - ZeroCheck protocol.
26/// - PermutationCheck protocol.
27///
28/// Those individual protocol may have similar or identical APIs.
29/// The systematic way to invoke specific protocol is, for example
30///     `<PolyIOP<F> as SumCheck<F>>::prove()`
31pub struct PolyIOP<F: PrimeField> {
32    /// Associated field
33    #[doc(hidden)]
34    phantom: PhantomData<F>,
35}