pub struct TransactionBatchProcessor<FG: ForkGraph> {
pub epoch_boundary_preparation: Arc<RwLock<EpochBoundaryPreparation>>,
pub global_program_cache: Arc<RwLock<ProgramCache<FG>>>,
pub environments: ProgramRuntimeEnvironments,
pub builtin_program_ids: RwLock<HashSet<Pubkey>>,
/* private fields */
}agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Fields§
§epoch_boundary_preparation: Arc<RwLock<EpochBoundaryPreparation>>agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Anticipates the environments of the upcoming epoch
global_program_cache: Arc<RwLock<ProgramCache<FG>>>agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Programs required for transaction batch processing
environments: ProgramRuntimeEnvironmentsagave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Environments of the current epoch
builtin_program_ids: RwLock<HashSet<Pubkey>>agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Builtin program ids
Implementations§
Source§impl<FG: ForkGraph> TransactionBatchProcessor<FG>
impl<FG: ForkGraph> TransactionBatchProcessor<FG>
Sourcepub fn new_uninitialized(slot: Slot, epoch: Epoch) -> Self
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn new_uninitialized(slot: Slot, epoch: Epoch) -> Self
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Create a new, uninitialized TransactionBatchProcessor.
In this context, uninitialized means that the TransactionBatchProcessor
has been initialized with an empty program cache. The cache contains no
programs (including builtins) and has not been configured with a valid
fork graph.
When using this method, it’s advisable to call set_fork_graph_in_program_cache
as well as add_builtin to configure the cache before using the processor.
Sourcepub fn new_from(&self, slot: Slot, epoch: Epoch) -> Self
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn new_from(&self, slot: Slot, epoch: Epoch) -> Self
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Create a new TransactionBatchProcessor from the current instance, but
with the provided slot and epoch.
- Inherits the program cache and builtin program ids from the current instance.
- Resets the sysvar cache.
Sourcepub fn set_execution_cost(&mut self, cost: SVMTransactionExecutionCost)
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn set_execution_cost(&mut self, cost: SVMTransactionExecutionCost)
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Sets the base execution cost for the transactions that this instance of transaction processor will execute.
Sourcepub fn set_environments(&mut self, new_environments: ProgramRuntimeEnvironments)
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn set_environments(&mut self, new_environments: ProgramRuntimeEnvironments)
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Updates the environments when entering a new Epoch.
Sourcepub fn get_environments_for_epoch(
&self,
epoch: Epoch,
) -> ProgramRuntimeEnvironments
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn get_environments_for_epoch( &self, epoch: Epoch, ) -> ProgramRuntimeEnvironments
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Returns the current environments depending on the given epoch Returns None if the call could result in a deadlock
pub fn sysvar_cache(&self) -> RwLockReadGuard<'_, SysvarCache>
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Sourcepub fn load_and_execute_sanitized_transactions<CB: TransactionProcessingCallback>(
&self,
callbacks: &CB,
sanitized_txs: &[impl SVMTransaction],
check_results: Vec<TransactionCheckResult>,
environment: &TransactionProcessingEnvironment,
config: &TransactionProcessingConfig<'_>,
) -> LoadAndExecuteSanitizedTransactionsOutput
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn load_and_execute_sanitized_transactions<CB: TransactionProcessingCallback>( &self, callbacks: &CB, sanitized_txs: &[impl SVMTransaction], check_results: Vec<TransactionCheckResult>, environment: &TransactionProcessingEnvironment, config: &TransactionProcessingConfig<'_>, ) -> LoadAndExecuteSanitizedTransactionsOutput
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Main entrypoint to the SVM.
pub fn fill_missing_sysvar_cache_entries<CB: TransactionProcessingCallback>( &self, callbacks: &CB, )
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.pub fn reset_sysvar_cache(&self)
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.pub fn get_sysvar_cache_for_tests(&self) -> SysvarCache
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Sourcepub fn add_builtin(&self, program_id: Pubkey, builtin: ProgramCacheEntry)
👎Deprecated since 3.1.0: This crate has been marked for formal inclusion in the Agave Unstable API. From v4.0.0 onward, the agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.
pub fn add_builtin(&self, program_id: Pubkey, builtin: ProgramCacheEntry)
agave-unstable-api crate feature must be specified to acknowledge use of an interface that may break without warning.Add a built-in program
Trait Implementations§
Source§impl<FG: ForkGraph> Debug for TransactionBatchProcessor<FG>
impl<FG: ForkGraph> Debug for TransactionBatchProcessor<FG>
Auto Trait Implementations§
impl<FG> !Freeze for TransactionBatchProcessor<FG>
impl<FG> RefUnwindSafe for TransactionBatchProcessor<FG>
impl<FG> Send for TransactionBatchProcessor<FG>
impl<FG> Sync for TransactionBatchProcessor<FG>
impl<FG> Unpin for TransactionBatchProcessor<FG>
impl<FG> UnwindSafe for TransactionBatchProcessor<FG>
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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