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