Skip to main content

zip_plus/
lib.rs

1pub mod code;
2pub mod pcs;
3pub mod pcs_transcript;
4pub mod utils;
5
6pub mod merkle;
7
8use std::io::ErrorKind;
9
10use crypto_primitives::FieldError;
11use thiserror::Error;
12
13#[derive(Clone, Debug, PartialEq, Error)]
14pub enum ZipError {
15    #[error("Invalid PCS param: {0}")]
16    InvalidPcsParam(String),
17    #[error("Invalid commitment opening: {0}")]
18    InvalidPcsOpen(String),
19    #[error("Bad Snark: {0}")]
20    InvalidSnark(String),
21    #[error("Serialization Error: {0}")]
22    Serialization(String),
23    #[error("Transcript failure: {1}")]
24    Transcript(ErrorKind, String),
25    #[error("Error during polynomial evaluation: {0}")]
26    PolynomialEvaluationError(zinc_poly::EvaluationError),
27    #[error("Error during inner product computation: {0}")]
28    InnerProductError(zinc_utils::inner_product::InnerProductError),
29}
30
31impl From<zinc_poly::EvaluationError> for ZipError {
32    fn from(err: zinc_poly::EvaluationError) -> Self {
33        ZipError::PolynomialEvaluationError(err)
34    }
35}
36
37impl From<FieldError> for ZipError {
38    fn from(err: FieldError) -> Self {
39        ZipError::InvalidSnark(format!("Field error: {err}"))
40    }
41}
42
43impl From<zinc_utils::inner_product::InnerProductError> for ZipError {
44    fn from(err: zinc_utils::inner_product::InnerProductError) -> Self {
45        ZipError::InnerProductError(err)
46    }
47}