pallas_applying/utils/
validation.rs

1//! Types for validating transactions in each era.
2
3#[derive(Debug, Clone)]
4#[non_exhaustive]
5pub enum ValidationError {
6    TxAndProtParamsDiffer,
7    PParamsByronDoesntNeedAccountState,
8    EnvMissingAccountState,
9    UnknownProtParams,
10    Byron(ByronError),
11    ShelleyMA(ShelleyMAError),
12    Alonzo(AlonzoError),
13    Babbage(BabbageError),
14}
15
16#[derive(Debug, Clone)]
17#[non_exhaustive]
18pub enum ByronError {
19    TxInsEmpty,
20    TxOutsEmpty,
21    InputNotInUTxO,
22    OutputWithoutLovelace,
23    UnknownTxSize,
24    UnableToComputeFees,
25    FeesBelowMin,
26    MaxTxSizeExceeded,
27    UnableToProcessWitness,
28    MissingWitness,
29    WrongSignature,
30}
31
32#[derive(Debug, Clone)]
33#[non_exhaustive]
34pub enum ShelleyMAError {
35    TxInsEmpty,
36    InputNotInUTxO,
37    TTLExceeded,
38    AlonzoCompNotShelley,
39    UnknownTxSize,
40    MaxTxSizeExceeded,
41    ValueNotShelley,
42    MinLovelaceUnreached,
43    PreservationOfValue,
44    NegativeValue,
45    FeesBelowMin,
46    WrongEraOutput,
47    AddressDecoding,
48    WrongNetworkID,
49    MetadataHash,
50    MissingVKWitness,
51    MissingScriptWitness,
52    WrongSignature,
53    MintingLacksPolicy,
54    KeyAlreadyRegistered,
55    KeyNotRegistered,
56    PointerInUse,
57    RewardsNotNull,
58    PoolAlreadyRegistered,
59    PoolNotRegistered,
60    PoolCostBelowMin,
61    DuplicateGenesisDelegate,
62    DuplicateGenesisVRF,
63    GenesisKeyNotInMapping,
64    InsufficientForInstantaneousRewards,
65    MIRCertificateTooLateinEpoch,
66    ScriptDenial,
67}
68
69#[derive(Debug, Clone)]
70#[non_exhaustive]
71pub enum AlonzoError {
72    UnknownTxSize,
73    TxInsEmpty,
74    InputNotInUTxO,
75    CollateralNotInUTxO,
76    BlockExceedsValInt,
77    BlockPrecedesValInt,
78    ValIntUpperBoundMissing,
79    FeeBelowMin,
80    CollateralMissing,
81    TooManyCollaterals,
82    CollateralNotVKeyLocked,
83    AddressDecoding,
84    CollateralMinLovelace,
85    NonLovelaceCollateral,
86    NegativeValue,
87    PreservationOfValue,
88    MinLovelaceUnreached,
89    MaxValSizeExceeded,
90    OutputWrongNetworkID,
91    TxWrongNetworkID,
92    RedeemerMissing,
93    TxExUnitsExceeded,
94    MaxTxSizeExceeded,
95    VKWitnessMissing,
96    VKWrongSignature,
97    ReqSignerMissing,
98    ReqSignerWrongSig,
99    ScriptWitnessMissing,
100    MintingLacksPolicy,
101    InputDecoding,
102    UnneededNativeScript,
103    UnneededPlutusScript,
104    UnneededRedeemer,
105    DatumMissing,
106    UnneededDatum,
107    MetadataHash,
108    ScriptIntegrityHash,
109}
110
111#[derive(Debug, Clone)]
112#[non_exhaustive]
113pub enum BabbageError {
114    UnknownTxSize,
115    TxInsEmpty,
116    InputNotInUTxO,
117    CollateralNotInUTxO,
118    ReferenceInputNotInUTxO,
119    RefInputNotInUTxO,
120    BlockPrecedesValInt,
121    BlockExceedsValInt,
122    FeeBelowMin,
123    CollateralMissing,
124    TooManyCollaterals,
125    InputDecoding,
126    CollateralNotVKeyLocked,
127    CollateralMinLovelace,
128    NonLovelaceCollateral,
129    CollateralWrongAssets,
130    NegativeValue,
131    CollateralAnnotation,
132    PreservationOfValue,
133    MinLovelaceUnreached,
134    MaxValSizeExceeded,
135    AddressDecoding,
136    OutputWrongNetworkID,
137    TxWrongNetworkID,
138    TxExUnitsExceeded,
139    RedeemerMissing,
140    UnneededRedeemer,
141    MaxTxSizeExceeded,
142    MintingLacksPolicy,
143    MetadataHash,
144    DatumMissing,
145    UnneededDatum,
146    ScriptWitnessMissing,
147    UnneededNativeScript,
148    UnneededPlutusV1Script,
149    UnneededPlutusV2Script,
150    ReqSignerMissing,
151    ReqSignerWrongSig,
152    VKWitnessMissing,
153    VKWrongSignature,
154    UnsupportedPlutusLanguage,
155    ScriptIntegrityHash,
156}
157
158pub type ValidationResult = Result<(), ValidationError>;