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,
gas: GasData,
gas_status: SuiGasStatus,
transaction_kind: TransactionKind,
rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> (InnerTemporaryStore, SuiGasStatus, 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,
gas: GasData,
gas_status: SuiGasStatus,
transaction_kind: TransactionKind,
_rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> (InnerTemporaryStore, SuiGasStatus, 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,
gas_status: SuiGasStatus,
transaction_kind: TransactionKind,
rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
skip_all_checks: bool,
) -> (InnerTemporaryStore, SuiGasStatus, 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>;
fn type_layout_resolver<'r, 'vm: 'r, 'store: 'r>(
&'vm self,
protocol_config: &'vm ProtocolConfig,
store: Box<dyn TypeLayoutStore + 'store>,
) -> Box<dyn LayoutResolver + 'r>;
}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, gas: GasData, gas_status: SuiGasStatus, transaction_kind: TransactionKind, rewritten_inputs: Option<Vec<bool>>, transaction_signer: SuiAddress, transaction_digest: TransactionDigest, trace_builder_opt: &mut Option<MoveTraceBuilder>, ) -> (InnerTemporaryStore, SuiGasStatus, 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,
gas: GasData,
gas_status: SuiGasStatus,
transaction_kind: TransactionKind,
_rewritten_inputs: Option<Vec<bool>>,
transaction_signer: SuiAddress,
transaction_digest: TransactionDigest,
trace_builder_opt: &mut Option<MoveTraceBuilder>,
) -> (InnerTemporaryStore, SuiGasStatus, 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, gas: GasData, gas_status: SuiGasStatus, transaction_kind: TransactionKind, _rewritten_inputs: Option<Vec<bool>>, transaction_signer: SuiAddress, transaction_digest: TransactionDigest, trace_builder_opt: &mut Option<MoveTraceBuilder>, ) -> (InnerTemporaryStore, SuiGasStatus, 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.