pub enum InvalidTransaction {
Call,
Payment,
Future,
Stale,
BadProof,
AncientBirthBlock,
ExhaustsResources,
Custom(u8),
BadMandatory,
MandatoryValidation,
BadSigner,
}
Expand description
An invalid transaction validity.
Variants§
Call
The call of the transaction is not expected.
Payment
General error to do with the inability to pay some fees (e.g. account balance too low).
Future
General error to do with the transaction not yet being valid (e.g. nonce too high).
Stale
General error to do with the transaction being outdated (e.g. nonce too low).
BadProof
General error to do with the transaction’s proofs (e.g. signature).
Possible causes
When using a signed extension that provides additional data for signing, it is required that the signing and the verifying side use the same additional data. Additional data will only be used to generate the signature, but will not be part of the transaction itself. As the verifying side does not know which additional data was used while signing it will only be able to assume a bad signature and cannot express a more meaningful error.
AncientBirthBlock
The transaction birth block is ancient.
Possible causes
For FRAME
-based runtimes this would be caused by `current block number
- Era::birth block number > BlockHashCount
. (e.g. in Polkadot
BlockHashCount` = 2400, so a transaction with birth block number 1337 would be valid up until block number 1337 + 2400, after which point the transaction would be considered to have an ancient birth block.)
ExhaustsResources
The transaction would exhaust the resources of current block.
The transaction might be valid, but there are not enough resources left in the current block.
Custom(u8)
Any other custom invalid validity that is not covered by this enum.
BadMandatory
An extrinsic with a Mandatory dispatch resulted in Error. This is indicative of either a
malicious validator or a buggy provide_inherent
. In any case, it can result in
dangerously overweight blocks and therefore if found, invalidates the block.
MandatoryValidation
An extrinsic with a mandatory dispatch tried to be validated. This is invalid; only inherent extrinsics are allowed to have mandatory dispatches.
BadSigner
The sending address is disabled or known to be invalid.
Implementations§
source§impl InvalidTransaction
impl InvalidTransaction
sourcepub fn exhausted_resources(&self) -> bool
pub fn exhausted_resources(&self) -> bool
Returns if the reason for the invalidity was block resource exhaustion.
sourcepub fn was_mandatory(&self) -> bool
pub fn was_mandatory(&self) -> bool
Returns if the reason for the invalidity was a mandatory call failing.
Trait Implementations§
source§impl Clone for InvalidTransaction
impl Clone for InvalidTransaction
source§fn clone(&self) -> InvalidTransaction
fn clone(&self) -> InvalidTransaction
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for InvalidTransaction
impl Debug for InvalidTransaction
source§impl Decode for InvalidTransaction
impl Decode for InvalidTransaction
source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy ) -> Result<Self, Error>
source§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>
) -> Result<DecodeFinished, Error>where
I: Input,
source§impl<'de> Deserialize<'de> for InvalidTransaction
impl<'de> Deserialize<'de> for InvalidTransaction
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl Encode for InvalidTransaction
impl Encode for InvalidTransaction
source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy )
source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
source§impl From<InvalidTransaction> for &'static str
impl From<InvalidTransaction> for &'static str
source§fn from(invalid: InvalidTransaction) -> &'static str
fn from(invalid: InvalidTransaction) -> &'static str
source§impl From<InvalidTransaction> for TransactionValidity
impl From<InvalidTransaction> for TransactionValidity
source§fn from(invalid_transaction: InvalidTransaction) -> Self
fn from(invalid_transaction: InvalidTransaction) -> Self
source§impl From<InvalidTransaction> for TransactionValidityError
impl From<InvalidTransaction> for TransactionValidityError
source§fn from(err: InvalidTransaction) -> Self
fn from(err: InvalidTransaction) -> Self
source§impl PartialEq for InvalidTransaction
impl PartialEq for InvalidTransaction
source§fn eq(&self, other: &InvalidTransaction) -> bool
fn eq(&self, other: &InvalidTransaction) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for InvalidTransaction
impl Serialize for InvalidTransaction
source§impl TypeInfo for InvalidTransaction
impl TypeInfo for InvalidTransaction
impl Copy for InvalidTransaction
impl EncodeLike for InvalidTransaction
impl Eq for InvalidTransaction
impl StructuralEq for InvalidTransaction
impl StructuralPartialEq for InvalidTransaction
Auto Trait Implementations§
impl RefUnwindSafe for InvalidTransaction
impl Send for InvalidTransaction
impl Sync for InvalidTransaction
impl Unpin for InvalidTransaction
impl UnwindSafe for InvalidTransaction
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.