snarkvm_algorithms/
errors.rs

1// Copyright 2024 Aleo Network Foundation
2// This file is part of the snarkVM library.
3
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at:
7
8// http://www.apache.org/licenses/LICENSE-2.0
9
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16use crate::{r1cs::SynthesisError, snark::varuna::ahp::AHPError};
17use snarkvm_fields::ConstraintFieldError;
18
19#[derive(Debug, Error)]
20pub enum SNARKError {
21    #[error("{}", _0)]
22    AnyhowError(#[from] anyhow::Error),
23
24    #[error("{}", _0)]
25    ConstraintFieldError(#[from] ConstraintFieldError),
26
27    #[error("{}: {}", _0, _1)]
28    Crate(&'static str, String),
29
30    #[error("Expected a circuit-specific SRS in SNARK")]
31    ExpectedCircuitSpecificSRS,
32
33    #[error("{}", _0)]
34    Message(String),
35
36    #[error("{}", _0)]
37    SynthesisError(#[from] SynthesisError),
38
39    #[error("Batch size was zero; must be at least 1")]
40    EmptyBatch,
41
42    #[error("Batch size was different between public input and proof")]
43    BatchSizeMismatch,
44
45    #[error("Public input size was different from the circuit")]
46    PublicInputSizeMismatch,
47
48    #[error("Circuit not found")]
49    CircuitNotFound,
50}
51
52impl From<AHPError> for SNARKError {
53    fn from(err: AHPError) -> Self {
54        SNARKError::Crate("AHPError", format!("{err:?}"))
55    }
56}