pub trait Executor {
// Required methods
fn execute_transaction_to_effects(
&self,
store: &dyn BackingStore,
protocol_config: &ProtocolConfig,
metrics: Arc<ExecutionMetrics>,
enable_expensive_checks: bool,
execution_params: ExecutionOrEarlyError,
epoch_id: &EpochId,
epoch_timestamp_ms: u64,
input_objects: CheckedInputObjects,
system_object_versions: SystemObjectVersions,
unsettled_object_funds: &dyn UnsettledObjectFundsRead,
gas: GasData,
reference_gas_price: u64,
transaction_kind: TransactionKind,
rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Vec<ExecutionTiming>, Result<(), ExecutionFailure>);
fn execute_transaction_to_effects_and_execution_error(
&self,
store: &dyn BackingStore,
protocol_config: &ProtocolConfig,
metrics: Arc<ExecutionMetrics>,
enable_expensive_checks: bool,
execution_params: ExecutionOrEarlyError,
epoch_id: &EpochId,
epoch_timestamp_ms: u64,
input_objects: CheckedInputObjects,
system_object_versions: SystemObjectVersions,
unsettled_object_funds: &dyn UnsettledObjectFundsRead,
gas: GasData,
reference_gas_price: u64,
transaction_kind: TransactionKind,
_rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Vec<ExecutionTiming>, Result<(), ExecutionError>);
fn dev_inspect_transaction(
&self,
store: &dyn BackingStore,
protocol_config: &ProtocolConfig,
metrics: Arc<ExecutionMetrics>,
enable_expensive_checks: bool,
execution_params: ExecutionOrEarlyError,
epoch_id: &EpochId,
epoch_timestamp_ms: u64,
input_objects: CheckedInputObjects,
system_object_versions: SystemObjectVersions,
gas: GasData,
reference_gas_price: u64,
transaction_kind: TransactionKind,
rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
skip_all_checks: bool,
) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Result<Vec<ExecutionResult>, ExecutionError>);
fn update_genesis_state(
&self,
store: &dyn BackingStore,
protocol_config: &ProtocolConfig,
metrics: Arc<ExecutionMetrics>,
epoch_id: EpochId,
epoch_timestamp_ms: u64,
transaction_digest: &TransactionDigest,
input_objects: CheckedInputObjects,
pt: ProgrammableTransaction,
) -> Result<InnerTemporaryStore, ExecutionError>;
}Expand description
Abstracts over access to the VM across versions of the execution layer.
Required Methods§
fn execute_transaction_to_effects( &self, store: &dyn BackingStore, protocol_config: &ProtocolConfig, metrics: Arc<ExecutionMetrics>, enable_expensive_checks: bool, execution_params: ExecutionOrEarlyError, epoch_id: &EpochId, epoch_timestamp_ms: u64, input_objects: CheckedInputObjects, system_object_versions: SystemObjectVersions, unsettled_object_funds: &dyn UnsettledObjectFundsRead, gas: GasData, reference_gas_price: u64, transaction_kind: TransactionKind, rewritten_inputs: Option<Vec<bool>>, transaction_signer: SuiAddress, transaction_digest: TransactionDigest, trace_builder_opt: &mut Option<MoveTraceBuilder>, ) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Vec<ExecutionTiming>, Result<(), ExecutionFailure>)
Sourcefn execute_transaction_to_effects_and_execution_error(
&self,
store: &dyn BackingStore,
protocol_config: &ProtocolConfig,
metrics: Arc<ExecutionMetrics>,
enable_expensive_checks: bool,
execution_params: ExecutionOrEarlyError,
epoch_id: &EpochId,
epoch_timestamp_ms: u64,
input_objects: CheckedInputObjects,
system_object_versions: SystemObjectVersions,
unsettled_object_funds: &dyn UnsettledObjectFundsRead,
gas: GasData,
reference_gas_price: u64,
transaction_kind: TransactionKind,
_rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Vec<ExecutionTiming>, Result<(), ExecutionError>)
fn execute_transaction_to_effects_and_execution_error( &self, store: &dyn BackingStore, protocol_config: &ProtocolConfig, metrics: Arc<ExecutionMetrics>, enable_expensive_checks: bool, execution_params: ExecutionOrEarlyError, epoch_id: &EpochId, epoch_timestamp_ms: u64, input_objects: CheckedInputObjects, system_object_versions: SystemObjectVersions, unsettled_object_funds: &dyn UnsettledObjectFundsRead, gas: GasData, reference_gas_price: u64, transaction_kind: TransactionKind, _rewritten_inputs: Option<Vec<bool>>, transaction_signer: SuiAddress, transaction_digest: TransactionDigest, trace_builder_opt: &mut Option<MoveTraceBuilder>, ) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Vec<ExecutionTiming>, Result<(), ExecutionError>)
Execution mode returns greater error information, primarily used in fullnode execution
as opposed to execute_transaction_to_effects which only includes basic ExecutionFailure error.
fn dev_inspect_transaction( &self, store: &dyn BackingStore, protocol_config: &ProtocolConfig, metrics: Arc<ExecutionMetrics>, enable_expensive_checks: bool, execution_params: ExecutionOrEarlyError, epoch_id: &EpochId, epoch_timestamp_ms: u64, input_objects: CheckedInputObjects, system_object_versions: SystemObjectVersions, gas: GasData, reference_gas_price: u64, transaction_kind: TransactionKind, rewritten_inputs: Option<Vec<bool>>, transaction_signer: SuiAddress, transaction_digest: TransactionDigest, skip_all_checks: bool, ) -> (InnerTemporaryStore, GasUsageReport, TransactionEffects, Result<Vec<ExecutionResult>, ExecutionError>)
fn update_genesis_state( &self, store: &dyn BackingStore, protocol_config: &ProtocolConfig, metrics: Arc<ExecutionMetrics>, epoch_id: EpochId, epoch_timestamp_ms: u64, transaction_digest: &TransactionDigest, input_objects: CheckedInputObjects, pt: ProgrammableTransaction, ) -> Result<InnerTemporaryStore, ExecutionError>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".