pub enum InvalidTransaction {
    Call,
    Payment,
    Future,
    Stale,
    BadProof,
    AncientBirthBlock,
    ExhaustsResources,
    Custom(u8),
    BadMandatory,
    MandatoryDispatch,
    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 PolkadotBlockHashCount` = 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.
MandatoryDispatch
A transaction with a mandatory dispatch. This is invalid; only inherent extrinsics are allowed to have mandatory dispatches.
BadSigner
The sending address is disabled or known to be invalid.
Implementations§
§impl InvalidTransaction
 
impl InvalidTransaction
pub fn exhausted_resources(&self) -> bool
pub fn exhausted_resources(&self) -> bool
Returns if the reason for the invalidity was block resource exhaustion.
pub 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§
§impl Clone for InvalidTransaction
 
impl Clone for InvalidTransaction
§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 more§impl Debug for InvalidTransaction
 
impl Debug for InvalidTransaction
§impl Decode for InvalidTransaction
 
impl Decode for InvalidTransaction
§fn decode<__CodecInputEdqy>(
    __codec_input_edqy: &mut __CodecInputEdqy
) -> Result<InvalidTransaction, Error>where
    __CodecInputEdqy: Input,
 
fn decode<__CodecInputEdqy>(
    __codec_input_edqy: &mut __CodecInputEdqy
) -> Result<InvalidTransaction, Error>where
    __CodecInputEdqy: Input,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
    I: Input,
 
fn skip<I>(input: &mut I) -> Result<(), Error>where
    I: Input,
§fn encoded_fixed_size() -> Option<usize>
 
fn encoded_fixed_size() -> Option<usize>
§impl<'de> Deserialize<'de> for InvalidTransaction
 
impl<'de> Deserialize<'de> for InvalidTransaction
§fn deserialize<__D>(
    __deserializer: __D
) -> Result<InvalidTransaction, <__D as Deserializer<'de>>::Error>where
    __D: Deserializer<'de>,
 
fn deserialize<__D>(
    __deserializer: __D
) -> Result<InvalidTransaction, <__D as Deserializer<'de>>::Error>where
    __D: Deserializer<'de>,
§impl Encode for InvalidTransaction
 
impl Encode for InvalidTransaction
§fn encode_to<__CodecOutputEdqy>(&self, __codec_dest_edqy: &mut __CodecOutputEdqy)where
    __CodecOutputEdqy: Output + ?Sized,
 
fn encode_to<__CodecOutputEdqy>(&self, __codec_dest_edqy: &mut __CodecOutputEdqy)where
    __CodecOutputEdqy: Output + ?Sized,
§fn using_encoded<R, F>(&self, f: F) -> Rwhere
    F: FnOnce(&[u8]) -> R,
 
fn using_encoded<R, F>(&self, f: F) -> Rwhere
    F: FnOnce(&[u8]) -> R,
§fn encoded_size(&self) -> usize
 
fn encoded_size(&self) -> usize
§impl From<InvalidTransaction> for &'static str
 
impl From<InvalidTransaction> for &'static str
§fn from(invalid: InvalidTransaction) -> &'static str
 
fn from(invalid: InvalidTransaction) -> &'static str
§impl From<InvalidTransaction> for TransactionValidityError
 
impl From<InvalidTransaction> for TransactionValidityError
§fn from(err: InvalidTransaction) -> TransactionValidityError
 
fn from(err: InvalidTransaction) -> TransactionValidityError
§impl PartialEq<InvalidTransaction> for InvalidTransaction
 
impl PartialEq<InvalidTransaction> for InvalidTransaction
§fn eq(&self, other: &InvalidTransaction) -> bool
 
fn eq(&self, other: &InvalidTransaction) -> bool
§impl Serialize for InvalidTransaction
 
impl Serialize for InvalidTransaction
§fn serialize<__S>(
    &self,
    __serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
    __S: Serializer,
 
fn serialize<__S>(
    &self,
    __serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
    __S: Serializer,
§impl TypeInfo for InvalidTransaction
 
impl TypeInfo for InvalidTransaction
impl Copy for InvalidTransaction
impl EncodeLike<InvalidTransaction> 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§
§impl<T> CheckedConversion for T
 
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
    Self: TryFrom<T>,
 
fn checked_from<T>(t: T) -> Option<Self>where
    Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
    Self: TryInto<T>,
 
fn checked_into<T>(self) -> Option<T>where
    Self: TryInto<T>,
§impl<T> DecodeAll for Twhere
    T: Decode,
 
impl<T> DecodeAll for Twhere
    T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
 
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
    T: Decode,
 
impl<T> DecodeLimit for Twhere
    T: Decode,
§impl<T> Downcast for Twhere
    T: Any,
 
impl<T> Downcast for Twhere
    T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
 
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more§fn as_any(&self) -> &(dyn Any + 'static)
 
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read moresource§impl<Q, K> Equivalent<K> for Qwhere
    Q: Eq + ?Sized,
    K: Borrow<Q> + ?Sized,
 
impl<Q, K> Equivalent<K> for Qwhere
    Q: Eq + ?Sized,
    K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> Hashable for Twhere
    T: Codec,
 
impl<T> Hashable for Twhere
    T: Codec,
source§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
§impl<T> KeyedVec for Twhere
    T: Codec,
 
impl<T> KeyedVec for Twhere
    T: Codec,
§impl<T> Pointable for T
 
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
 
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
 
fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
 
fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
T. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
 
impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
 
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
 
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
 
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
 
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.§impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
 
impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
 
fn unchecked_into(self) -> T
unchecked_from.§impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
 
impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
§fn unique_saturated_into(self) -> T
 
fn unique_saturated_into(self) -> T
T.