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