binius_core/constraint_system/
mod.rs1pub mod channel;
4mod common;
5pub mod error;
6pub mod exp;
7mod prove;
8pub mod validate;
9mod verify;
10
11use binius_field::{BinaryField128b, TowerField};
12use binius_macros::SerializeBytes;
13use binius_utils::{DeserializeBytes, SerializationError, SerializationMode};
14use channel::{ChannelId, Flush};
15use exp::Exp;
16pub use prove::prove;
17pub use verify::verify;
18
19use crate::oracle::{ConstraintSet, MultilinearOracleSet, OracleId};
20
21#[derive(Debug, Clone, SerializeBytes)]
29pub struct ConstraintSystem<F: TowerField> {
30 pub oracles: MultilinearOracleSet<F>,
31 pub table_constraints: Vec<ConstraintSet<F>>,
32 pub non_zero_oracle_ids: Vec<OracleId>,
33 pub flushes: Vec<Flush<F>>,
34 pub exponents: Vec<Exp<F>>,
35 pub max_channel_id: ChannelId,
36}
37
38impl DeserializeBytes for ConstraintSystem<BinaryField128b> {
39 fn deserialize(
40 mut read_buf: impl bytes::Buf,
41 mode: SerializationMode,
42 ) -> Result<Self, SerializationError>
43 where
44 Self: Sized,
45 {
46 Ok(Self {
47 oracles: DeserializeBytes::deserialize(&mut read_buf, mode)?,
48 table_constraints: DeserializeBytes::deserialize(&mut read_buf, mode)?,
49 non_zero_oracle_ids: DeserializeBytes::deserialize(&mut read_buf, mode)?,
50 flushes: DeserializeBytes::deserialize(&mut read_buf, mode)?,
51 exponents: DeserializeBytes::deserialize(&mut read_buf, mode)?,
52 max_channel_id: DeserializeBytes::deserialize(&mut read_buf, mode)?,
53 })
54 }
55}
56
57impl<F: TowerField> ConstraintSystem<F> {
58 pub const fn no_base_constraints(self) -> Self {
59 self
60 }
61}
62
63#[derive(Debug, Clone)]
65pub struct Proof {
66 pub transcript: Vec<u8>,
67}
68
69impl Proof {
70 pub fn get_proof_size(&self) -> usize {
71 self.transcript.len()
72 }
73}