Skip to main content

dig_clvm/consensus/
error.rs

1//! Validation error types.
2
3use chia_protocol::Bytes32;
4use chia_sdk_driver::DriverError;
5use clvmr::cost::Cost;
6
7/// Errors produced by spend bundle and block validation.
8#[derive(Debug, thiserror::Error)]
9pub enum ValidationError {
10    #[error("CLVM execution failed: {0}")]
11    Clvm(String),
12
13    #[error("Coin not found: {0}")]
14    CoinNotFound(Bytes32),
15
16    #[error("Coin already spent: {0}")]
17    AlreadySpent(Bytes32),
18
19    #[error("Double spend in bundle: {0}")]
20    DoubleSpend(Bytes32),
21
22    #[error("Puzzle hash mismatch: {0}")]
23    PuzzleHashMismatch(Bytes32),
24
25    #[error("Signature verification failed")]
26    SignatureFailed,
27
28    #[error("Conservation violation: input={input}, output={output}")]
29    ConservationViolation { input: u64, output: u64 },
30
31    #[error("Cost exceeded: limit={limit}, consumed={consumed}")]
32    CostExceeded { limit: Cost, consumed: Cost },
33
34    #[error("Driver error: {0}")]
35    Driver(#[from] DriverError),
36}