essential_check/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
//! Core logic for validating [`Predicate`][crate::types::predicate::Predicate]s,
//! [`Solution`][crate::types::solution::Solution]s and
//! [`SolutionData`][crate::types::solution::SolutionData] against associated predicates.
//!
//! Typical usage is to first validate predicates and solutions independently in
//! full prior to validating against one another with `solution::check_predicates`.
//!
//! ## Predicate Validation
//!
//! - [`predicate::check_signed_contract`] validates a signed contract.
//! - [`predicate::check_contract`] validates a contract.
//! - [`predicate::check`] validate an individual predicate.
//! - [`predicate::check_state_reads`] validate a predicate's state read bytecode.
//! - [`predicate::check_constraints`] validate a predicate's constraint bytecode.
//!
//! ## Solution Validation
//!
//! - [`solution::check`] validates an unsigned solution.
//! - [`solution::check_data`] validates a solution's data slice.
//! - [`solution::check_state_mutations`] validates a solution's state mutation slice.
//!
//! ## Solution + Predicate Validation
//!
//! - [`solution::check_predicates`] validates a solution's data against their associated predicates.
//! - [`solution::check_predicate`] validates a single solution data against an associated predicate.
//! - [`solution::check_predicate_constraints`] the predicate constraint checking part of solution
//! data validation.
//! - [`solution::check_decision_variable_lengths`] checks the expected number of
//! decision variables.
#![deny(missing_docs)]
#![deny(unsafe_code)]
#[doc(inline)]
pub use essential_constraint_vm as constraint_vm;
#[doc(inline)]
pub use essential_sign as sign;
#[doc(inline)]
pub use essential_state_read_vm as state_read_vm;
#[doc(inline)]
pub use essential_types as types;
pub mod predicate;
pub mod solution;