kimchi_stubs/
lib.rs

1//! The Marlin_plonk_stubs crate exports some functionalities
2//! and structures from the following the Rust crates to OCaml:
3//!
4//! * [Proof-systems](https://github.com/o1-labs/proof-systems),
5//!   a PLONK implementation.
6//! * [Arkworks](http://arkworks.rs/),
7//!   a math library that Proof-systems builds on top of.
8//!
9
10// Allow lints from ocaml derive macros until upstream crates are updated.
11// See https://github.com/o1-labs/mina-rust/issues/1954
12#![allow(non_local_definitions)]
13#![allow(unexpected_cfgs)]
14
15extern crate libc;
16
17/// Caml helpers
18#[macro_use]
19pub mod caml;
20
21/// Arkworks types
22pub mod arkworks;
23
24/// Utils
25pub mod urs_utils; // TODO: move this logic to proof-systems
26
27/// Vectors
28pub mod field_vector;
29pub mod gate_vector;
30
31/// Curves
32pub mod projective;
33
34/// SRS
35pub mod srs;
36
37/// Indexes
38pub mod pasta_fp_plonk_index;
39pub mod pasta_fq_plonk_index;
40
41/// Verifier indexes/keys
42pub mod plonk_verifier_index;
43
44pub mod pasta_fp_plonk_verifier_index;
45pub mod pasta_fq_plonk_verifier_index;
46
47/// Oracles
48pub mod oracles;
49
50/// Proofs
51pub mod pasta_fp_plonk_proof;
52pub mod pasta_fq_plonk_proof;
53
54/// Poseidon
55pub mod pasta_fp_poseidon;
56pub mod pasta_fq_poseidon;
57
58/// Linearization helpers
59pub mod linearization;
60
61/// Handy re-exports
62pub use {
63    kimchi::circuits::{
64        gate::{caml::CamlCircuitGate, CurrOrNext, GateType},
65        scalars::caml::CamlRandomOracles,
66        wires::caml::CamlWire,
67    },
68    kimchi::proof::caml::CamlProofEvaluations,
69    kimchi::prover::caml::{
70        CamlLookupCommitments, CamlProofWithPublic, CamlProverCommitments, CamlProverProof,
71    },
72    mina_poseidon::sponge::caml::CamlScalarChallenge,
73    poly_commitment::{commitment::caml::CamlPolyComm, ipa::caml::CamlOpeningProof},
74};