//! cyb-lens-core โ€” Lens trait, types, and transcript for polynomial commitment.
//!
//! This crate defines the shared interface that all polynomial commitment
//! constructions implement. Consumers (nox, zheng, bbg) depend on this crate
//! for the trait; they depend on a specific construction crate only when
//! instantiating it.

mod transcript;
mod types;

pub use strata_proof::Reduce;
pub use transcript::Transcript;
pub use types::{Commitment, Field, MultilinearPoly, Opening, Ring, Semiring};

/// Polynomial commitment scheme โ€” commit to a multilinear polynomial,
/// prove evaluations, verify without seeing the polynomial.
///
/// Four constructions implement this trait directly:
/// - Brakedown (cyb-lens-brakedown) over Goldilocks
/// - Binius (cyb-lens-binius) over Fโ‚‚ยนยฒโธ
/// - Ikat (cyb-lens-ikat) over Goldilocks (NTT slots)
/// - Porphyry (cyb-lens-porphyry) over F_q
///
/// Assayer (cyb-lens-assayer) is a wrapper protocol that delegates
/// commitment to Brakedown โ€” it does not implement this trait.
pub trait Lens<F: Field> {
    /// Commit to a multilinear polynomial.
    /// Returns a 32-byte hemera digest.
    /// Cost: O(N) field operations where N = 2^num_vars.
    fn commit(poly: &MultilinearPoly<F>) -> Commitment;

    /// Produce a proof that poly(point) = value.
    fn open(poly: &MultilinearPoly<F>, point: &[F], transcript: &mut Transcript) -> Opening;

    /// Check that a committed polynomial evaluates to value at point.
    fn verify(
        commitment: &Commitment,
        point: &[F],
        value: F,
        proof: &Opening,
        transcript: &mut Transcript,
    ) -> bool;

    /// Amortize multiple openings into one proof.
    fn batch_open(
        poly: &MultilinearPoly<F>,
        points: &[(Vec<F>, F)],
        transcript: &mut Transcript,
    ) -> Opening;

    /// Verify a batch opening.
    fn batch_verify(
        commitment: &Commitment,
        points: &[(Vec<F>, F)],
        proof: &Opening,
        transcript: &mut Transcript,
    ) -> bool;
}

Dimensions

trident/src/lib.rs
lens/src/lib.rs
bbg/src/lib.rs
optica/src/lib.rs
zheng/src/lib.rs
nox/rs/lib.rs
lens/brakedown/src/lib.rs
hemera/rs/src/lib.rs
lens/binius/src/lib.rs
cyb/src-tauri/src/lib.rs
lens/ikat/src/lib.rs
rs/core/src/lib.rs
lens/assayer/src/lib.rs
rs/macros/src/lib.rs
rs/mir-format/src/lib.rs
lens/porphyry/src/lib.rs
hemera/wgsl/src/lib.rs
cw-cyber/contracts/cw-cyber-subgraph/src/lib.rs
cw-cyber/contracts/hub-channels/src/lib.rs
trident/editor/zed/src/lib.rs
cw-cyber/contracts/std-test/src/lib.rs
rs/tests/macro-integration/src/lib.rs
cw-cyber/contracts/cw-cyber-gift/src/lib.rs
cw-cyber/contracts/litium-core/src/lib.rs
cw-cyber/contracts/graph-filter/src/lib.rs
cw-cyber/contracts/hub-networks/src/lib.rs
cw-cyber/packages/hub-base/src/lib.rs
cw-cyber/packages/cyber-std/src/lib.rs
cw-cyber/contracts/litium-mine/src/lib.rs
cw-cyber/packages/cyber-std-test/src/lib.rs
cw-cyber/contracts/cw-cyber-passport/src/lib.rs
cw-cyber/contracts/litium-stake/src/lib.rs
cw-cyber/contracts/hub-skills/src/lib.rs
cw-cyber/contracts/hub-protocols/src/lib.rs
cw-cyber/contracts/litium-wrap/src/lib.rs
cw-cyber/contracts/hub-libs/src/lib.rs
cw-cyber/contracts/cybernet/src/lib.rs
cw-cyber/contracts/litium-refer/src/lib.rs
cw-cyber/contracts/hub-tokens/src/lib.rs

Local Graph