pessimistic_proof/
error.rs1use serde::{Deserialize, Serialize};
2use sp1_sdk::SP1VerificationError;
3
4#[derive(Clone, Debug, Serialize, Deserialize, thiserror::Error, PartialEq, Eq)]
5pub enum ProofVerificationError {
6 #[error("Version mismatch: {0}")]
7 VersionMismatch(String),
8
9 #[error("Core machine verification error: {0}")]
10 Core(String),
11
12 #[error("Recursion verification error: {0}")]
13 Recursion(String),
14
15 #[error("Plonk verification error: {0}")]
16 Plonk(String),
17
18 #[error("Groth16 verification error: {0}")]
19 Groth16(String),
20
21 #[error("Invalid public values")]
22 InvalidPublicValues,
23
24 #[error("Other error: {0}")]
25 Other(String),
26}
27
28impl From<SP1VerificationError> for ProofVerificationError {
29 fn from(err: SP1VerificationError) -> Self {
30 match err {
31 SP1VerificationError::VersionMismatch(version) => {
32 ProofVerificationError::VersionMismatch(version)
33 }
34 SP1VerificationError::Core(core) => ProofVerificationError::Core(core.to_string()),
35 SP1VerificationError::Recursion(recursion) => {
36 ProofVerificationError::Recursion(recursion.to_string())
37 }
38 SP1VerificationError::Plonk(error) => ProofVerificationError::Plonk(error.to_string()),
39 SP1VerificationError::Groth16(error) => {
40 ProofVerificationError::Groth16(error.to_string())
41 }
42 SP1VerificationError::InvalidPublicValues => {
43 ProofVerificationError::InvalidPublicValues
44 }
45 SP1VerificationError::Other(error) => ProofVerificationError::Other(error.to_string()),
46 }
47 }
48}