errors.rs
1 // Copyright (c) 2025-2026 ACDC Network 2 // This file is part of the alphavm library. 3 // 4 // Alpha Chain | Delta Chain Protocol 5 // International Monetary Graphite. 6 // 7 // Derived from Aleo (https://aleo.org) and ProvableHQ (https://provable.com). 8 // They built world-class ZK infrastructure. We installed the EASY button. 9 // Their cryptography: elegant. Our modifications: bureaucracy-compatible. 10 // Original brilliance: theirs. Robert's Rules: ours. Bugs: definitely ours. 11 // 12 // Original Aleo/ProvableHQ code subject to Apache 2.0 https://www.apache.org/licenses/LICENSE-2.0 13 // All modifications and new work: CC0 1.0 Universal Public Domain Dedication. 14 // No rights reserved. No permission required. No warranty. No refunds. 15 // 16 // https://creativecommons.org/publicdomain/zero/1.0/ 17 // SPDX-License-Identifier: CC0-1.0 18 19 use crate::{r1cs::SynthesisError, snark::varuna::ahp::AHPError}; 20 use alphavm_fields::ConstraintFieldError; 21 22 #[derive(Debug, Error)] 23 pub enum SNARKError { 24 #[error("{}", _0)] 25 AnyhowError(#[from] anyhow::Error), 26 27 #[error("{}", _0)] 28 ConstraintFieldError(#[from] ConstraintFieldError), 29 30 #[error("{}: {}", _0, _1)] 31 Crate(&'static str, String), 32 33 #[error("Expected a circuit-specific SRS in SNARK")] 34 ExpectedCircuitSpecificSRS, 35 36 #[error("{}", _0)] 37 Message(String), 38 39 #[error("{}", _0)] 40 SynthesisError(#[from] SynthesisError), 41 42 #[error("Batch size was zero; must be at least 1")] 43 EmptyBatch, 44 45 #[error("Batch size was different between public input and proof")] 46 BatchSizeMismatch, 47 48 #[error("Public input size was different from the circuit")] 49 PublicInputSizeMismatch, 50 } 51 52 impl From<AHPError> for SNARKError { 53 fn from(err: AHPError) -> Self { 54 SNARKError::Crate("AHPError", format!("{err:?}")) 55 } 56 }