Skip to main content

dpp/errors/consensus/basic/
basic_error.rs

1use crate::errors::ProtocolError;
2use bincode::{Decode, DecodeUntrusted, Encode};
3use platform_serialization_derive::{
4    PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize,
5};
6use thiserror::Error;
7
8use crate::consensus::basic::contract_group::{
9    ContractGroupMemberNotInContractError, ContractGroupMembershipsOverLimitError,
10    DuplicateContractGroupMembershipError, InvalidContractGroupAdminsError,
11    InvalidContractGroupDescriptionLengthError, InvalidContractGroupNameLengthError,
12    RedundantContractGroupMembershipError,
13};
14use crate::consensus::basic::data_contract::data_contract_max_depth_exceed_error::DataContractMaxDepthExceedError;
15use crate::consensus::basic::data_contract::{
16    ContestedUniqueIndexOnMutableDocumentTypeError, ContestedUniqueIndexWithUniqueIndexError,
17    DataContractHaveNewUniqueIndexError, DataContractImmutablePropertiesUpdateError,
18    DataContractInvalidIndexDefinitionUpdateError, DataContractInvalidRequiredFieldsUpdateError,
19    DataContractTokenConfigurationUpdateError, DataContractUniqueIndicesChangedError,
20    DecimalsOverLimitError, DuplicateIndexError, DuplicateIndexNameError,
21    GroupExceedsMaxMembersError, GroupHasTooFewMembersError, GroupMemberHasPowerOfZeroError,
22    GroupMemberHasPowerOverLimitError, GroupNonUnilateralMemberPowerHasLessThanRequiredPowerError,
23    GroupPositionDoesNotExistError, GroupRequiredPowerIsInvalidError,
24    GroupTotalPowerLessThanRequiredError, IncompatibleDataContractSchemaError,
25    IncompatibleDocumentTypeSchemaError, IncompatibleRe2PatternError, InvalidCompoundIndexError,
26    InvalidDataContractIdError, InvalidDataContractVersionError, InvalidDocumentTypeNameError,
27    InvalidDocumentTypeRequiredSecurityLevelError, InvalidIndexPropertyTypeError,
28    InvalidIndexedPropertyConstraintError, InvalidKeywordCharacterError,
29    InvalidTokenBaseSupplyError, InvalidTokenDistributionFunctionDivideByZeroError,
30    InvalidTokenDistributionFunctionIncoherenceError,
31    InvalidTokenDistributionFunctionInvalidParameterError,
32    InvalidTokenDistributionFunctionInvalidParameterTupleError, InvalidTokenLanguageCodeError,
33    InvalidTokenNameCharacterError, InvalidTokenNameLengthError, MainGroupIsNotDefinedError,
34    NewTokensDestinationIdentityOptionRequiredError, NonContiguousContractGroupPositionsError,
35    NonContiguousContractTokenPositionsError, RedundantDocumentPaidForByTokenWithContractId,
36    SystemPropertyIndexAlreadyPresentError, UndefinedIndexPropertyError,
37    UniqueIndicesLimitReachedError, UnknownDocumentCreationRestrictionModeError,
38    UnknownGasFeesPaidByError, UnknownSecurityLevelError, UnknownStorageKeyRequirementsError,
39    UnknownTradeModeError, UnknownTransferableTypeError,
40};
41use crate::consensus::basic::data_contract::{
42    InvalidJsonSchemaRefError, TokenPaymentByBurningOnlyAllowedOnInternalTokenError,
43    UnknownDocumentActionTokenEffectError,
44};
45use crate::consensus::basic::decode::{
46    ProtocolVersionParsingError, SerializedObjectParsingError, VersionError,
47};
48use crate::consensus::basic::document::{
49    ContestedDocumentsTemporarilyNotAllowedError, DataContractNotPresentError,
50    DocumentCreationNotAllowedError, DocumentFieldMaxSizeExceededError,
51    DocumentTransitionsAreAbsentError, DuplicateDocumentTransitionsWithIdsError,
52    DuplicateDocumentTransitionsWithIndicesError, InconsistentCompoundIndexDataError,
53    InvalidDocumentTransitionActionError, InvalidDocumentTransitionIdError,
54    InvalidDocumentTypeError, MaxDocumentsTransitionsExceededError,
55    MissingDataContractIdBasicError, MissingDocumentTransitionActionError,
56    MissingDocumentTransitionTypeError, MissingDocumentTypeError,
57    MissingPositionsInDocumentTypePropertiesError, NonceOutOfBoundsError,
58};
59use crate::consensus::basic::identity::ContractGroupBoundKeyNotAllowedInShieldedIdentityCreationError;
60use crate::consensus::basic::identity::IdentityKeyLimitsUpdateEmptyError;
61use crate::consensus::basic::identity::IdentityPublicKeyLimitsNotAllowedInShieldedIdentityCreationError;
62use crate::consensus::basic::identity::{
63    DataContractBoundsNotPresentError, DisablingKeyIdAlsoBeingAddedInSameTransitionError,
64    DuplicatedIdentityPublicKeyBasicError, DuplicatedIdentityPublicKeyIdBasicError,
65    IdentityAssetLockProofLockedTransactionMismatchError,
66    IdentityAssetLockStateTransitionReplayError, IdentityAssetLockTransactionIsNotFoundError,
67    IdentityAssetLockTransactionOutPointAlreadyConsumedError,
68    IdentityAssetLockTransactionOutPointNotEnoughBalanceError,
69    IdentityAssetLockTransactionOutputNotFoundError,
70    IdentityAssetLockTransactionTooManyInputsError, IdentityCreditTransferToSelfError,
71    IdentityPublicKeyLimitsNotAllowedError, InvalidAssetLockProofCoreChainHeightError,
72    InvalidAssetLockProofTransactionHeightError, InvalidAssetLockTransactionOutputReturnSizeError,
73    InvalidCreditWithdrawalTransitionCoreFeeError,
74    InvalidCreditWithdrawalTransitionOutputScriptError,
75    InvalidIdentityAssetLockProofChainLockValidationError,
76    InvalidIdentityAssetLockTransactionError, InvalidIdentityAssetLockTransactionOutputError,
77    InvalidIdentityCreditTransferAmountError, InvalidIdentityCreditWithdrawalTransitionAmountError,
78    InvalidIdentityKeySignatureError, InvalidIdentityPublicKeyBudgetError,
79    InvalidIdentityPublicKeyDataError, InvalidIdentityPublicKeySecurityLevelError,
80    InvalidIdentityUpdateTransitionDisableKeysError, InvalidIdentityUpdateTransitionEmptyError,
81    InvalidInstantAssetLockProofError, InvalidInstantAssetLockProofSignatureError,
82    InvalidKeyPurposeForContractBoundsError, MissingMasterPublicKeyError,
83    NotImplementedCreditWithdrawalTransitionPoolingError, TooManyMasterPublicKeyError,
84    WithdrawalOutputScriptNotAllowedWhenSigningWithOwnerKeyError,
85};
86use crate::consensus::basic::invalid_identifier_error::InvalidIdentifierError;
87use crate::consensus::basic::state_transition::{
88    FeeStrategyDuplicateError, FeeStrategyEmptyError, FeeStrategyIndexOutOfBoundsError,
89    FeeStrategyTooManyStepsError, InputBelowMinimumError, InputOutputBalanceMismatchError,
90    InputWitnessCountMismatchError, InputsNotLessThanOutputsError, InsufficientFundingAmountError,
91    InvalidRemainderOutputCountError, InvalidStateTransitionTypeError,
92    MissingStateTransitionTypeError, OutputAddressAlsoInputError, OutputBelowMinimumError,
93    OutputsNotGreaterThanInputsError, ShieldedEmptyProofError,
94    ShieldedEncryptedNoteSizeMismatchError, ShieldedImplicitFeeCapExceededError,
95    ShieldedInvalidDenominationError, ShieldedInvalidValueBalanceError, ShieldedNoActionsError,
96    ShieldedTooManyActionsError, ShieldedZeroAnchorError, StateTransitionMaxSizeExceededError,
97    StateTransitionNotActiveError, TransitionNoInputsError, TransitionNoOutputsError,
98    TransitionOverMaxInputsError, TransitionOverMaxOutputsError, WithdrawalBalanceMismatchError,
99    WithdrawalBelowMinAmountError,
100};
101use crate::consensus::basic::{
102    IncompatibleProtocolVersionError, UnsupportedFeatureError, UnsupportedProtocolVersionError,
103};
104use crate::consensus::ConsensusError;
105
106use super::data_contract::{
107    DuplicateKeywordsError, InvalidDescriptionLengthError, InvalidKeywordLengthError,
108    TooManyKeywordsError,
109};
110use crate::consensus::basic::group::GroupActionNotAllowedOnTransitionError;
111use crate::consensus::basic::overflow_error::OverflowError;
112use crate::consensus::basic::token::{
113    ChoosingTokenMintRecipientNotAllowedError, ContractHasNoTokensError,
114    DestinationIdentityForTokenMintingNotSetError, InvalidActionIdError, InvalidTokenAmountError,
115    InvalidTokenConfigUpdateNoChangeError, InvalidTokenDistributionBlockIntervalTooShortError,
116    InvalidTokenDistributionEpochIntervalTooShortError,
117    InvalidTokenDistributionTimeIntervalNotMinuteAlignedError,
118    InvalidTokenDistributionTimeIntervalTooShortError, InvalidTokenIdError,
119    InvalidTokenNoteTooBigError, InvalidTokenPositionError, MissingDefaultLocalizationError,
120    TokenNoteOnlyAllowedWhenProposerError, TokenPricingScheduleEmptyError,
121    TokenTransferToOurselfError,
122};
123use crate::consensus::basic::unsupported_version_error::UnsupportedVersionError;
124use crate::consensus::basic::value_error::ValueError;
125use crate::consensus::basic::{
126    json_schema_compilation_error::JsonSchemaCompilationError, json_schema_error::JsonSchemaError,
127};
128use crate::consensus::state::identity::master_public_key_update_error::MasterPublicKeyUpdateError;
129use crate::data_contract::errors::DataContractError;
130
131#[allow(clippy::large_enum_variant)]
132#[derive(
133    Error,
134    Debug,
135    PlatformSerialize,
136    PlatformDeserializeTrusted,
137    PlatformDeserializeUntrusted,
138    Encode,
139    Decode,
140    PartialEq,
141    Clone,
142    DecodeUntrusted,
143)]
144pub enum BasicError {
145    /*
146
147    DO NOT CHANGE ORDER OF VARIANTS WITHOUT INTRODUCING OF NEW VERSION
148
149    */
150    // Decoding
151    #[error(transparent)]
152    ProtocolVersionParsingError(ProtocolVersionParsingError),
153
154    #[error(transparent)]
155    VersionError(VersionError),
156
157    #[error(transparent)]
158    ContractError(DataContractError),
159
160    #[error(transparent)]
161    UnknownSecurityLevelError(UnknownSecurityLevelError),
162
163    #[error(transparent)]
164    UnknownStorageKeyRequirementsError(UnknownStorageKeyRequirementsError),
165
166    #[error(transparent)]
167    UnknownTransferableTypeError(UnknownTransferableTypeError),
168
169    #[error(transparent)]
170    UnknownTradeModeError(UnknownTradeModeError),
171
172    #[error(transparent)]
173    UnknownDocumentCreationRestrictionModeError(UnknownDocumentCreationRestrictionModeError),
174
175    #[error(transparent)]
176    SerializedObjectParsingError(SerializedObjectParsingError),
177
178    #[error(transparent)]
179    UnsupportedProtocolVersionError(UnsupportedProtocolVersionError),
180
181    #[error(transparent)]
182    UnsupportedVersionError(UnsupportedVersionError),
183
184    #[error(transparent)]
185    IncompatibleProtocolVersionError(IncompatibleProtocolVersionError),
186
187    // Structure error
188    #[error(transparent)]
189    JsonSchemaCompilationError(JsonSchemaCompilationError),
190
191    #[error(transparent)]
192    JsonSchemaError(JsonSchemaError),
193
194    #[error(transparent)]
195    InvalidIdentifierError(InvalidIdentifierError),
196
197    #[error(transparent)]
198    ValueError(ValueError),
199
200    // DataContract
201    #[error(transparent)]
202    DataContractMaxDepthExceedError(DataContractMaxDepthExceedError),
203
204    #[error(transparent)]
205    DuplicateIndexError(DuplicateIndexError),
206
207    #[error(transparent)]
208    IncompatibleRe2PatternError(IncompatibleRe2PatternError),
209
210    #[error(transparent)]
211    InvalidCompoundIndexError(InvalidCompoundIndexError),
212
213    #[error(transparent)]
214    InvalidDataContractIdError(InvalidDataContractIdError),
215
216    #[error(transparent)]
217    InvalidIndexedPropertyConstraintError(InvalidIndexedPropertyConstraintError),
218
219    #[error(transparent)]
220    InvalidIndexPropertyTypeError(InvalidIndexPropertyTypeError),
221
222    #[error(transparent)]
223    InvalidJsonSchemaRefError(InvalidJsonSchemaRefError),
224
225    #[error(transparent)]
226    SystemPropertyIndexAlreadyPresentError(SystemPropertyIndexAlreadyPresentError),
227
228    #[error(transparent)]
229    UndefinedIndexPropertyError(UndefinedIndexPropertyError),
230
231    #[error(transparent)]
232    UniqueIndicesLimitReachedError(UniqueIndicesLimitReachedError),
233
234    #[error(transparent)]
235    DuplicateIndexNameError(DuplicateIndexNameError),
236
237    #[error(transparent)]
238    InvalidDataContractVersionError(InvalidDataContractVersionError),
239
240    #[error(transparent)]
241    IncompatibleDataContractSchemaError(IncompatibleDataContractSchemaError),
242
243    #[error(transparent)]
244    DataContractImmutablePropertiesUpdateError(DataContractImmutablePropertiesUpdateError),
245
246    #[error(transparent)]
247    DataContractUniqueIndicesChangedError(DataContractUniqueIndicesChangedError),
248
249    #[error(transparent)]
250    DataContractInvalidIndexDefinitionUpdateError(DataContractInvalidIndexDefinitionUpdateError),
251
252    #[error(transparent)]
253    DataContractHaveNewUniqueIndexError(DataContractHaveNewUniqueIndexError),
254
255    // Document
256    #[error(transparent)]
257    DataContractNotPresentError(DataContractNotPresentError),
258
259    #[error(transparent)]
260    DocumentCreationNotAllowedError(DocumentCreationNotAllowedError),
261
262    #[error(transparent)]
263    DataContractBoundsNotPresentError(DataContractBoundsNotPresentError),
264
265    #[error(transparent)]
266    DuplicateDocumentTransitionsWithIdsError(DuplicateDocumentTransitionsWithIdsError),
267
268    #[error(transparent)]
269    DuplicateDocumentTransitionsWithIndicesError(DuplicateDocumentTransitionsWithIndicesError),
270
271    #[error(transparent)]
272    NonceOutOfBoundsError(NonceOutOfBoundsError),
273
274    #[error(transparent)]
275    InconsistentCompoundIndexDataError(InconsistentCompoundIndexDataError),
276
277    #[error(transparent)]
278    InvalidDocumentTransitionActionError(InvalidDocumentTransitionActionError),
279
280    #[error(transparent)]
281    InvalidDocumentTransitionIdError(InvalidDocumentTransitionIdError),
282
283    #[error(transparent)]
284    InvalidDocumentTypeError(InvalidDocumentTypeError),
285
286    #[error(transparent)]
287    MissingPositionsInDocumentTypePropertiesError(MissingPositionsInDocumentTypePropertiesError),
288
289    #[error(transparent)]
290    MissingDataContractIdBasicError(MissingDataContractIdBasicError),
291
292    #[error(transparent)]
293    MissingDocumentTransitionActionError(MissingDocumentTransitionActionError),
294
295    #[error(transparent)]
296    MissingDocumentTransitionTypeError(MissingDocumentTransitionTypeError),
297
298    #[error(transparent)]
299    MissingDocumentTypeError(MissingDocumentTypeError),
300
301    #[error(transparent)]
302    MaxDocumentsTransitionsExceededError(MaxDocumentsTransitionsExceededError),
303
304    // Identity
305    #[error(transparent)]
306    DuplicatedIdentityPublicKeyBasicError(DuplicatedIdentityPublicKeyBasicError),
307
308    #[error(transparent)]
309    DuplicatedIdentityPublicKeyIdBasicError(DuplicatedIdentityPublicKeyIdBasicError),
310
311    #[error(transparent)]
312    DisablingKeyIdAlsoBeingAddedInSameTransitionError(
313        DisablingKeyIdAlsoBeingAddedInSameTransitionError,
314    ),
315
316    #[error(transparent)]
317    IdentityAssetLockProofLockedTransactionMismatchError(
318        IdentityAssetLockProofLockedTransactionMismatchError,
319    ),
320
321    #[error(transparent)]
322    IdentityAssetLockTransactionIsNotFoundError(IdentityAssetLockTransactionIsNotFoundError),
323
324    #[error(transparent)]
325    IdentityAssetLockTransactionOutPointAlreadyConsumedError(
326        IdentityAssetLockTransactionOutPointAlreadyConsumedError,
327    ),
328
329    #[error(transparent)]
330    IdentityAssetLockTransactionOutPointNotEnoughBalanceError(
331        IdentityAssetLockTransactionOutPointNotEnoughBalanceError,
332    ),
333
334    #[error(transparent)]
335    IdentityAssetLockStateTransitionReplayError(IdentityAssetLockStateTransitionReplayError),
336
337    #[error(transparent)]
338    IdentityAssetLockTransactionOutputNotFoundError(
339        IdentityAssetLockTransactionOutputNotFoundError,
340    ),
341
342    #[error(transparent)]
343    InvalidAssetLockProofCoreChainHeightError(InvalidAssetLockProofCoreChainHeightError),
344
345    #[error(transparent)]
346    InvalidIdentityAssetLockProofChainLockValidationError(
347        InvalidIdentityAssetLockProofChainLockValidationError,
348    ),
349
350    #[error(transparent)]
351    InvalidAssetLockProofTransactionHeightError(InvalidAssetLockProofTransactionHeightError),
352
353    #[error(transparent)]
354    InvalidAssetLockTransactionOutputReturnSizeError(
355        InvalidAssetLockTransactionOutputReturnSizeError,
356    ),
357
358    #[error(transparent)]
359    InvalidIdentityAssetLockTransactionError(InvalidIdentityAssetLockTransactionError),
360
361    #[error(transparent)]
362    InvalidIdentityAssetLockTransactionOutputError(InvalidIdentityAssetLockTransactionOutputError),
363
364    #[error(transparent)]
365    InvalidIdentityPublicKeyDataError(InvalidIdentityPublicKeyDataError),
366
367    #[error(transparent)]
368    InvalidInstantAssetLockProofError(InvalidInstantAssetLockProofError),
369
370    #[error(transparent)]
371    InvalidInstantAssetLockProofSignatureError(InvalidInstantAssetLockProofSignatureError),
372
373    #[error(transparent)]
374    MissingMasterPublicKeyError(MissingMasterPublicKeyError),
375
376    #[error(transparent)]
377    TooManyMasterPublicKeyError(TooManyMasterPublicKeyError),
378
379    #[error(transparent)]
380    MasterPublicKeyUpdateError(MasterPublicKeyUpdateError),
381
382    #[error(transparent)]
383    InvalidDocumentTypeRequiredSecurityLevelError(InvalidDocumentTypeRequiredSecurityLevelError),
384
385    #[error(transparent)]
386    InvalidIdentityPublicKeySecurityLevelError(InvalidIdentityPublicKeySecurityLevelError),
387
388    #[error(transparent)]
389    InvalidIdentityKeySignatureError(InvalidIdentityKeySignatureError),
390
391    #[error(transparent)]
392    InvalidIdentityCreditTransferAmountError(InvalidIdentityCreditTransferAmountError),
393
394    #[error(transparent)]
395    InvalidCreditWithdrawalTransitionOutputScriptError(
396        InvalidCreditWithdrawalTransitionOutputScriptError,
397    ),
398
399    #[error(transparent)]
400    WithdrawalOutputScriptNotAllowedWhenSigningWithOwnerKeyError(
401        WithdrawalOutputScriptNotAllowedWhenSigningWithOwnerKeyError,
402    ),
403
404    #[error(transparent)]
405    InvalidCreditWithdrawalTransitionCoreFeeError(InvalidCreditWithdrawalTransitionCoreFeeError),
406
407    #[error(transparent)]
408    InvalidIdentityCreditWithdrawalTransitionAmountError(
409        InvalidIdentityCreditWithdrawalTransitionAmountError,
410    ),
411
412    #[error(transparent)]
413    InvalidIdentityUpdateTransitionEmptyError(InvalidIdentityUpdateTransitionEmptyError),
414
415    #[error(transparent)]
416    InvalidIdentityUpdateTransitionDisableKeysError(
417        InvalidIdentityUpdateTransitionDisableKeysError,
418    ),
419
420    #[error(transparent)]
421    NotImplementedCreditWithdrawalTransitionPoolingError(
422        NotImplementedCreditWithdrawalTransitionPoolingError,
423    ),
424
425    // State Transition
426    #[error(transparent)]
427    InvalidStateTransitionTypeError(InvalidStateTransitionTypeError),
428
429    #[error(transparent)]
430    MissingStateTransitionTypeError(MissingStateTransitionTypeError),
431
432    #[error(transparent)]
433    DocumentFieldMaxSizeExceededError(DocumentFieldMaxSizeExceededError),
434
435    #[error(transparent)]
436    StateTransitionMaxSizeExceededError(StateTransitionMaxSizeExceededError),
437
438    #[error(transparent)]
439    DocumentTransitionsAreAbsentError(DocumentTransitionsAreAbsentError),
440
441    #[error(transparent)]
442    IdentityCreditTransferToSelfError(IdentityCreditTransferToSelfError),
443
444    #[error(transparent)]
445    InvalidDocumentTypeNameError(InvalidDocumentTypeNameError),
446
447    #[error(transparent)]
448    IncompatibleDocumentTypeSchemaError(IncompatibleDocumentTypeSchemaError),
449
450    #[error(transparent)]
451    ContestedUniqueIndexOnMutableDocumentTypeError(ContestedUniqueIndexOnMutableDocumentTypeError),
452
453    #[error(transparent)]
454    ContestedUniqueIndexWithUniqueIndexError(ContestedUniqueIndexWithUniqueIndexError),
455
456    #[error(transparent)]
457    OverflowError(OverflowError),
458
459    #[error(transparent)]
460    UnsupportedFeatureError(UnsupportedFeatureError),
461
462    #[error(transparent)]
463    ContestedDocumentsTemporarilyNotAllowedError(ContestedDocumentsTemporarilyNotAllowedError),
464
465    #[error(transparent)]
466    DataContractTokenConfigurationUpdateError(DataContractTokenConfigurationUpdateError),
467
468    #[error(transparent)]
469    NonContiguousContractTokenPositionsError(NonContiguousContractTokenPositionsError),
470
471    #[error(transparent)]
472    NonContiguousContractGroupPositionsError(NonContiguousContractGroupPositionsError),
473
474    #[error(transparent)]
475    InvalidTokenBaseSupplyError(InvalidTokenBaseSupplyError),
476
477    #[error(transparent)]
478    InvalidTokenIdError(InvalidTokenIdError),
479
480    #[error(transparent)]
481    InvalidTokenAmountError(InvalidTokenAmountError),
482
483    #[error(transparent)]
484    InvalidTokenPositionError(InvalidTokenPositionError),
485
486    #[error(transparent)]
487    InvalidTokenConfigUpdateNoChangeError(InvalidTokenConfigUpdateNoChangeError),
488
489    #[error(transparent)]
490    InvalidTokenDistributionFunctionDivideByZeroError(
491        InvalidTokenDistributionFunctionDivideByZeroError,
492    ),
493
494    #[error(transparent)]
495    InvalidTokenDistributionFunctionInvalidParameterError(
496        InvalidTokenDistributionFunctionInvalidParameterError,
497    ),
498
499    #[error(transparent)]
500    InvalidTokenDistributionFunctionInvalidParameterTupleError(
501        InvalidTokenDistributionFunctionInvalidParameterTupleError,
502    ),
503
504    #[error(transparent)]
505    InvalidTokenDistributionFunctionIncoherenceError(
506        InvalidTokenDistributionFunctionIncoherenceError,
507    ),
508
509    #[error(transparent)]
510    TokenTransferToOurselfError(TokenTransferToOurselfError),
511
512    #[error(transparent)]
513    InvalidTokenNoteTooBigError(InvalidTokenNoteTooBigError),
514
515    #[error(transparent)]
516    ContractHasNoTokensError(ContractHasNoTokensError),
517
518    #[error(transparent)]
519    GroupPositionDoesNotExistError(GroupPositionDoesNotExistError),
520
521    #[error(transparent)]
522    InvalidActionIdError(InvalidActionIdError),
523
524    #[error(transparent)]
525    DestinationIdentityForTokenMintingNotSetError(DestinationIdentityForTokenMintingNotSetError),
526
527    #[error(transparent)]
528    ChoosingTokenMintRecipientNotAllowedError(ChoosingTokenMintRecipientNotAllowedError),
529
530    #[error(transparent)]
531    GroupActionNotAllowedOnTransitionError(GroupActionNotAllowedOnTransitionError),
532
533    #[error(transparent)]
534    GroupExceedsMaxMembersError(GroupExceedsMaxMembersError),
535
536    #[error(transparent)]
537    GroupMemberHasPowerOfZeroError(GroupMemberHasPowerOfZeroError),
538
539    #[error(transparent)]
540    GroupMemberHasPowerOverLimitError(GroupMemberHasPowerOverLimitError),
541
542    #[error(transparent)]
543    GroupTotalPowerLessThanRequiredError(GroupTotalPowerLessThanRequiredError),
544
545    #[error(transparent)]
546    GroupNonUnilateralMemberPowerHasLessThanRequiredPowerError(
547        GroupNonUnilateralMemberPowerHasLessThanRequiredPowerError,
548    ),
549
550    #[error(transparent)]
551    MissingDefaultLocalizationError(MissingDefaultLocalizationError),
552
553    #[error(transparent)]
554    UnknownGasFeesPaidByError(UnknownGasFeesPaidByError),
555
556    #[error(transparent)]
557    UnknownDocumentActionTokenEffectError(UnknownDocumentActionTokenEffectError),
558
559    #[error(transparent)]
560    TokenPaymentByBurningOnlyAllowedOnInternalTokenError(
561        TokenPaymentByBurningOnlyAllowedOnInternalTokenError,
562    ),
563
564    #[error(transparent)]
565    TooManyKeywordsError(TooManyKeywordsError),
566
567    #[error(transparent)]
568    DuplicateKeywordsError(DuplicateKeywordsError),
569
570    #[error(transparent)]
571    InvalidKeywordLengthError(InvalidKeywordLengthError),
572
573    #[error(transparent)]
574    InvalidDescriptionLengthError(InvalidDescriptionLengthError),
575
576    #[error(transparent)]
577    NewTokensDestinationIdentityOptionRequiredError(
578        NewTokensDestinationIdentityOptionRequiredError,
579    ),
580
581    #[error(transparent)]
582    InvalidKeywordCharacterError(InvalidKeywordCharacterError),
583
584    #[error(transparent)]
585    InvalidTokenNameCharacterError(InvalidTokenNameCharacterError),
586
587    #[error(transparent)]
588    DecimalsOverLimitError(DecimalsOverLimitError),
589
590    #[error(transparent)]
591    InvalidTokenNameLengthError(InvalidTokenNameLengthError),
592
593    #[error(transparent)]
594    InvalidTokenLanguageCodeError(InvalidTokenLanguageCodeError),
595
596    #[error(transparent)]
597    MainGroupIsNotDefinedError(MainGroupIsNotDefinedError),
598
599    #[error(transparent)]
600    GroupRequiredPowerIsInvalidError(GroupRequiredPowerIsInvalidError),
601
602    #[error(transparent)]
603    TokenNoteOnlyAllowedWhenProposerError(TokenNoteOnlyAllowedWhenProposerError),
604
605    #[error(transparent)]
606    InvalidTokenDistributionBlockIntervalTooShortError(
607        InvalidTokenDistributionBlockIntervalTooShortError,
608    ),
609
610    #[error(transparent)]
611    InvalidTokenDistributionTimeIntervalTooShortError(
612        InvalidTokenDistributionTimeIntervalTooShortError,
613    ),
614
615    #[error(transparent)]
616    InvalidTokenDistributionTimeIntervalNotMinuteAlignedError(
617        InvalidTokenDistributionTimeIntervalNotMinuteAlignedError,
618    ),
619
620    #[error(transparent)]
621    InvalidTokenDistributionEpochIntervalTooShortError(
622        InvalidTokenDistributionEpochIntervalTooShortError,
623    ),
624    #[error(transparent)]
625    RedundantDocumentPaidForByTokenWithContractId(RedundantDocumentPaidForByTokenWithContractId),
626
627    #[error(transparent)]
628    GroupHasTooFewMembersError(GroupHasTooFewMembersError),
629
630    #[error(transparent)]
631    InvalidKeyPurposeForContractBoundsError(InvalidKeyPurposeForContractBoundsError),
632
633    #[error(transparent)]
634    StateTransitionNotActiveError(StateTransitionNotActiveError),
635
636    #[error(transparent)]
637    TransitionOverMaxInputsError(TransitionOverMaxInputsError),
638
639    #[error(transparent)]
640    TransitionOverMaxOutputsError(TransitionOverMaxOutputsError),
641
642    #[error(transparent)]
643    InputWitnessCountMismatchError(InputWitnessCountMismatchError),
644
645    #[error(transparent)]
646    TransitionNoInputsError(TransitionNoInputsError),
647
648    #[error(transparent)]
649    TransitionNoOutputsError(TransitionNoOutputsError),
650
651    #[error(transparent)]
652    InvalidRemainderOutputCountError(InvalidRemainderOutputCountError),
653
654    #[error(transparent)]
655    FeeStrategyEmptyError(FeeStrategyEmptyError),
656
657    #[error(transparent)]
658    FeeStrategyDuplicateError(FeeStrategyDuplicateError),
659
660    #[error(transparent)]
661    FeeStrategyIndexOutOfBoundsError(FeeStrategyIndexOutOfBoundsError),
662
663    #[error(transparent)]
664    FeeStrategyTooManyStepsError(FeeStrategyTooManyStepsError),
665
666    #[error(transparent)]
667    InputBelowMinimumError(InputBelowMinimumError),
668
669    #[error(transparent)]
670    OutputBelowMinimumError(OutputBelowMinimumError),
671
672    #[error(transparent)]
673    InputOutputBalanceMismatchError(InputOutputBalanceMismatchError),
674
675    #[error(transparent)]
676    OutputsNotGreaterThanInputsError(OutputsNotGreaterThanInputsError),
677
678    #[error(transparent)]
679    WithdrawalBalanceMismatchError(WithdrawalBalanceMismatchError),
680
681    #[error(transparent)]
682    WithdrawalBelowMinAmountError(WithdrawalBelowMinAmountError),
683
684    #[error(transparent)]
685    InsufficientFundingAmountError(InsufficientFundingAmountError),
686
687    #[error(transparent)]
688    InputsNotLessThanOutputsError(InputsNotLessThanOutputsError),
689
690    #[error(transparent)]
691    OutputAddressAlsoInputError(OutputAddressAlsoInputError),
692
693    #[error(transparent)]
694    ShieldedNoActionsError(ShieldedNoActionsError),
695
696    #[error(transparent)]
697    ShieldedTooManyActionsError(ShieldedTooManyActionsError),
698
699    #[error(transparent)]
700    ShieldedEmptyProofError(ShieldedEmptyProofError),
701
702    #[error(transparent)]
703    ShieldedZeroAnchorError(ShieldedZeroAnchorError),
704
705    #[error(transparent)]
706    ShieldedInvalidValueBalanceError(ShieldedInvalidValueBalanceError),
707
708    #[error(transparent)]
709    ShieldedEncryptedNoteSizeMismatchError(ShieldedEncryptedNoteSizeMismatchError),
710
711    #[error(transparent)]
712    IdentityAssetLockTransactionTooManyInputsError(IdentityAssetLockTransactionTooManyInputsError),
713
714    // NOTE: `BasicError` is bincode-encoded positionally (no explicit discriminants), so new
715    // variants MUST be appended at the tail — inserting mid-enum would shift the wire discriminants
716    // of every following variant and mis-decode previously-encoded errors. The error-code integer
717    // (codes.rs) is independent of variant order.
718    #[error(transparent)]
719    ShieldedImplicitFeeCapExceededError(ShieldedImplicitFeeCapExceededError),
720
721    #[error(transparent)]
722    ShieldedInvalidDenominationError(ShieldedInvalidDenominationError),
723
724    #[error(transparent)]
725    TokenPricingScheduleEmptyError(TokenPricingScheduleEmptyError),
726
727    #[error(transparent)]
728    DataContractInvalidRequiredFieldsUpdateError(DataContractInvalidRequiredFieldsUpdateError),
729
730    // Contract groups (protocol version 14).
731    #[error(transparent)]
732    ContractGroupMembershipsOverLimitError(ContractGroupMembershipsOverLimitError),
733
734    #[error(transparent)]
735    DuplicateContractGroupMembershipError(DuplicateContractGroupMembershipError),
736
737    #[error(transparent)]
738    RedundantContractGroupMembershipError(RedundantContractGroupMembershipError),
739
740    #[error(transparent)]
741    ContractGroupMemberNotInContractError(ContractGroupMemberNotInContractError),
742
743    #[error(transparent)]
744    InvalidContractGroupAdminsError(InvalidContractGroupAdminsError),
745
746    #[error(transparent)]
747    InvalidContractGroupNameLengthError(InvalidContractGroupNameLengthError),
748
749    #[error(transparent)]
750    InvalidContractGroupDescriptionLengthError(InvalidContractGroupDescriptionLengthError),
751
752    // Contract group bounds on identity keys (protocol version 14).
753    #[error(transparent)]
754    ContractGroupBoundKeyNotAllowedInShieldedIdentityCreationError(
755        ContractGroupBoundKeyNotAllowedInShieldedIdentityCreationError,
756    ),
757
758    // Authentication key limits (protocol version 14).
759    #[error(transparent)]
760    IdentityPublicKeyLimitsNotAllowedError(IdentityPublicKeyLimitsNotAllowedError),
761
762    #[error(transparent)]
763    InvalidIdentityPublicKeyBudgetError(InvalidIdentityPublicKeyBudgetError),
764
765    #[error(transparent)]
766    IdentityPublicKeyLimitsNotAllowedInShieldedIdentityCreationError(
767        IdentityPublicKeyLimitsNotAllowedInShieldedIdentityCreationError,
768    ),
769
770    // Identity key limits update (protocol version 14).
771    #[error(transparent)]
772    IdentityKeyLimitsUpdateEmptyError(IdentityKeyLimitsUpdateEmptyError),
773}
774
775impl From<BasicError> for ConsensusError {
776    fn from(error: BasicError) -> Self {
777        Self::BasicError(error)
778    }
779}