Skip to main content

TransactionError

Enum TransactionError 

Source
pub enum TransactionError {
Show 40 variants AccountInUse, AccountLoadedTwice, AccountNotFound, ProgramAccountNotFound, InsufficientFundsForFee, InvalidAccountForFee, AlreadyProcessed, BlockhashNotFound, InstructionError(u8, InstructionError), CallChainTooDeep, MissingSignatureForFee, InvalidAccountIndex, SignatureFailure, InvalidProgramForExecution, SanitizeFailure, ClusterMaintenance, AccountBorrowOutstanding, WouldExceedMaxBlockCostLimit, UnsupportedVersion, InvalidWritableAccount, WouldExceedMaxAccountCostLimit, WouldExceedAccountDataBlockLimit, TooManyAccountLocks, AddressLookupTableNotFound, InvalidAddressLookupTableOwner, InvalidAddressLookupTableData, InvalidAddressLookupTableIndex, InvalidRentPayingAccount, WouldExceedMaxVoteCostLimit, WouldExceedAccountDataTotalLimit, DuplicateInstruction(u8), InsufficientFundsForRent { account_index: u8, }, MaxLoadedAccountsDataSizeExceeded, InvalidLoadedAccountsDataSizeLimit, ResanitizationNeeded, ProgramExecutionTemporarilyRestricted { account_index: u8, }, UnbalancedTransaction, ProgramCacheHitMaxLimit, CommitCancelled, InstructionsSysvarOverflow,
}
Expand description

Reasons a transaction might be rejected.

Variants§

§

AccountInUse

An account is already being processed in another transaction in a way that does not support parallelism

§

AccountLoadedTwice

A Pubkey appears twice in the transaction’s account_keys. Instructions can reference Pubkeys more than once but the message must contain a list with no duplicate keys

§

AccountNotFound

Attempt to debit an account but found no record of a prior credit.

§

ProgramAccountNotFound

Attempt to load a program that does not exist

§

InsufficientFundsForFee

The from Pubkey does not have sufficient balance to pay the fee to schedule the transaction

§

InvalidAccountForFee

This account may not be used to pay transaction fees

§

AlreadyProcessed

The bank has seen this transaction before. This can occur under normal operation when a UDP packet is duplicated, as a user error from a client not updating its recent_blockhash, or as a double-spend attack.

§

BlockhashNotFound

The bank has not seen the given recent_blockhash or the transaction is too old and the recent_blockhash has been discarded.

§

InstructionError(u8, InstructionError)

An error occurred while processing an instruction. The first element of the tuple indicates the instruction index in which the error occurred.

§

CallChainTooDeep

Loader call chain is too deep

§

MissingSignatureForFee

Transaction requires a fee but has no signature present

§

InvalidAccountIndex

Transaction contains an invalid account reference

§

SignatureFailure

Transaction did not pass signature verification

§

InvalidProgramForExecution

This program may not be used for executing instructions

§

SanitizeFailure

Transaction failed to sanitize accounts offsets correctly implies that account locks are not taken for this TX, and should not be unlocked.

§

ClusterMaintenance

§

AccountBorrowOutstanding

Transaction processing left an account with an outstanding borrowed reference

§

WouldExceedMaxBlockCostLimit

Transaction would exceed max Block Cost Limit

§

UnsupportedVersion

Transaction version is unsupported

§

InvalidWritableAccount

Transaction loads a writable account that cannot be written

§

WouldExceedMaxAccountCostLimit

Transaction would exceed max account limit within the block

§

WouldExceedAccountDataBlockLimit

Transaction would exceed account data limit within the block

§

TooManyAccountLocks

Transaction locked too many accounts

§

AddressLookupTableNotFound

Address lookup table not found

§

InvalidAddressLookupTableOwner

Attempted to lookup addresses from an account owned by the wrong program

§

InvalidAddressLookupTableData

Attempted to lookup addresses from an invalid account

§

InvalidAddressLookupTableIndex

Address table lookup uses an invalid index

§

InvalidRentPayingAccount

Transaction leaves an account with a lower balance than rent-exempt minimum

§

WouldExceedMaxVoteCostLimit

Transaction would exceed max Vote Cost Limit

§

WouldExceedAccountDataTotalLimit

Transaction would exceed total account data limit

§

DuplicateInstruction(u8)

Transaction contains a duplicate instruction that is not allowed

§

InsufficientFundsForRent

Transaction results in an account with insufficient funds for rent

Fields

§account_index: u8
§

MaxLoadedAccountsDataSizeExceeded

Transaction exceeded max loaded accounts data size cap

§

InvalidLoadedAccountsDataSizeLimit

LoadedAccountsDataSizeLimit set for transaction must be greater than 0.

§

ResanitizationNeeded

Sanitized transaction differed before/after feature activation. Needs to be resanitized.

§

ProgramExecutionTemporarilyRestricted

Program execution is temporarily restricted on an account.

Fields

§account_index: u8
§

UnbalancedTransaction

The total balance before the transaction does not equal the total balance after the transaction

§

ProgramCacheHitMaxLimit

Program cache hit max limit.

§

CommitCancelled

Commit cancelled internally.

§

InstructionsSysvarOverflow

Instruction sysvar overflow.

Trait Implementations§

Source§

impl AbiEnumVisitor for TransactionError

Source§

fn visit_for_abi(&self, digester: &mut AbiDigester) -> DigestResult

Source§

impl AbiExample for TransactionError

Source§

fn example() -> Self

Source§

impl Clone for TransactionError

Source§

fn clone(&self) -> TransactionError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TransactionError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for TransactionError

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for TransactionError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Distribution<TransactionError> for StandardUniform

Source§

fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> TransactionError

Generate a random value of T, using rng as the source of randomness.
Source§

fn sample_iter<R>(self, rng: R) -> Iter<Self, R, T>
where R: Rng, Self: Sized,

Create an iterator that generates random values of T, using rng as the source of randomness. Read more
Source§

fn map<F, S>(self, func: F) -> Map<Self, F, T, S>
where F: Fn(T) -> S, Self: Sized,

Map sampled values to type S Read more
Source§

impl Eq for TransactionError

Source§

impl Error for TransactionError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<AddressLoaderError> for TransactionError

Available on non-target_os=solana only.
Source§

fn from(err: AddressLoaderError) -> Self

Converts to this type from the input type.
Source§

impl From<SanitizeError> for TransactionError

Source§

fn from(_: SanitizeError) -> Self

Converts to this type from the input type.
Source§

impl From<SanitizeMessageError> for TransactionError

Available on non-target_os=solana only.
Source§

fn from(err: SanitizeMessageError) -> Self

Converts to this type from the input type.
Source§

impl From<TransactionError> for TransportError

Available on neither target_os=solana nor BPF.
Source§

fn from(e: TransactionError) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for TransactionError

Source§

fn eq(&self, other: &TransactionError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'de, WincodeConfig: Config> SchemaRead<'de, WincodeConfig> for TransactionError

Source§

const TYPE_META: TypeMeta

Metadata about the type’s serialization. Read more
Source§

type Dst = TransactionError

Source§

fn read( reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>

Read into dst from reader. Read more
Source§

fn get(reader: impl Reader<'de>) -> Result<Self::Dst, ReadError>

Read Self::Dst from reader into a new Self::Dst.
Source§

impl<WincodeConfig: Config> SchemaWrite<WincodeConfig> for TransactionError

Source§

const TYPE_META: TypeMeta

Metadata about the type’s serialization. Read more
Source§

type Src = TransactionError

Source§

fn size_of(src: &Self::Src) -> WriteResult<usize>

Get the serialized size of Self::Src. Read more
Source§

fn write(writer: impl Writer, src: &Self::Src) -> WriteResult<()>

Write Self::Src to writer.
Source§

impl Serialize for TransactionError

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StableAbi for TransactionError

Source§

fn random_with_context(rng: &mut (impl RngCore + ?Sized), _ctx: ()) -> Self

Source§

fn random(rng: &mut (impl RngCore + ?Sized)) -> Self
where Ctx: Default,

Source§

impl StructuralPartialEq for TransactionError

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AbiEnumVisitor for T
where T: Serialize + ?Sized,

Source§

default fn visit_for_abi( &self, _digester: &mut AbiDigester, ) -> Result<AbiDigester, DigestError>

Source§

impl<T> AbiEnumVisitor for T
where T: Serialize + AbiExample,

Source§

default fn visit_for_abi( &self, digester: &mut AbiDigester, ) -> Result<AbiDigester, DigestError>

Source§

impl<T> AbiExample for T

Source§

default fn example() -> T

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<'de, T, C> Deserialize<'de, C> for T
where C: Config, T: SchemaRead<'de, C>,

Source§

fn deserialize(src: &'de [u8], config: C) -> Result<Self::Dst, ReadError>

Deserialize the input bytes into a new Self::Dst.
Source§

fn deserialize_into( src: &'de [u8], dst: &mut MaybeUninit<Self::Dst>, config: C, ) -> Result<(), ReadError>

Deserialize the input bytes into dst.
Source§

impl<'de, T> Deserialize<'de> for T
where T: SchemaRead<'de, Configuration>,

Source§

fn deserialize(src: &'de [u8]) -> Result<Self::Dst, ReadError>

Deserialize the input src bytes into a new Self::Dst.
Source§

fn deserialize_into( src: &'de [u8], dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>

Deserialize the input src bytes into dst.
Source§

impl<T> DeserializeOwned for T

Source§

fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>

Deserialize from the given Reader into a new Self::Dst.
Source§

fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>

Deserialize from the given Reader into dst.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T, C> DeserializeOwned<C> for T
where C: Config, T: SchemaReadOwned<C>,

Source§

fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>

Deserialize from the given Reader into a new Self::Dst.
Source§

fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>

Deserialize from the given Reader into dst.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, C> SchemaReadOwned<C> for T
where C: ConfigCore, T: for<'de> SchemaRead<'de, C>,

Source§

impl<T> Serialize for T

Source§

fn serialize(src: &Self::Src) -> Result<Vec<u8>, WriteError>

Available on crate feature alloc only.
Serialize a serializable type into a Vec of bytes.
Source§

fn serialize_into(dst: impl Writer, src: &Self::Src) -> Result<(), WriteError>

Serialize a serializable type into the given byte buffer.
Source§

fn serialized_size(src: &Self::Src) -> Result<u64, WriteError>

Get the size in bytes of the type when serialized.
Source§

impl<T, C> Serialize<C> for T
where C: Config, T: SchemaWrite<C> + ?Sized,

Source§

fn serialize(src: &Self::Src, config: C) -> Result<Vec<u8>, WriteError>

Available on crate feature alloc only.
Serialize a serializable type into a Vec of bytes.
Source§

fn serialize_into( dst: impl Writer, src: &Self::Src, config: C, ) -> Result<(), WriteError>

Serialize a serializable type into the given Writer.
Source§

fn serialized_size(src: &Self::Src, config: C) -> Result<u64, WriteError>

Get the size in bytes of the type when serialized.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V