Skip to main content

ExecutionMode

Trait ExecutionMode 

Source
pub trait ExecutionMode {
    type ArgumentUpdates;
    type ExecutionResults;
    type Error: ExecutionErrorTrait;

    const TRACK_EXECUTION: bool;

    // Required methods
    fn allow_arbitrary_function_calls() -> bool;
    fn allow_arbitrary_values() -> bool;
    fn skip_conservation_checks() -> bool;
    fn packages_are_predefined() -> bool;
    fn empty_results() -> Self::ExecutionResults;
    fn add_argument_update(
        acc: &mut Self::ArgumentUpdates,
        arg: Argument,
        bytes: Vec<u8>,
        type_: TypeTag,
    ) -> Result<(), ExecutionError>;
    fn finish_command(
        acc: &mut Self::ExecutionResults,
        argument_updates: Vec<(Argument, Vec<u8>, TypeTag)>,
        command_result: Vec<(Vec<u8>, TypeTag)>,
    ) -> Result<(), ExecutionError>;
}

Required Associated Constants§

Required Associated Types§

Source

type ArgumentUpdates

All updates to a Arguments used in that Command

Source

type ExecutionResults

the gathered results from batched executions

Source

type Error: ExecutionErrorTrait

The error type produced during execution

Required Methods§

Source

fn allow_arbitrary_function_calls() -> bool

Controls the calling of arbitrary Move functions

Source

fn allow_arbitrary_values() -> bool

Controls the ability to instantiate any Move function parameter with a Pure call arg. In other words, you can instantiate any struct or object or other value with its BCS byte

Source

fn skip_conservation_checks() -> bool

Do not perform conservation checks after execution.

Source

fn packages_are_predefined() -> bool

If not set, the package ID should be calculated like an object and an UpgradeCap is produced

Source

fn empty_results() -> Self::ExecutionResults

Source

fn add_argument_update( acc: &mut Self::ArgumentUpdates, arg: Argument, bytes: Vec<u8>, type_: TypeTag, ) -> Result<(), ExecutionError>

Source

fn finish_command( acc: &mut Self::ExecutionResults, argument_updates: Vec<(Argument, Vec<u8>, TypeTag)>, command_result: Vec<(Vec<u8>, TypeTag)>, ) -> Result<(), ExecutionError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl ExecutionMode for Genesis

Source§

impl<E> ExecutionMode for Normal<E>
where E: ExecutionErrorTrait,

Source§

impl<E> ExecutionMode for System<E>
where E: ExecutionErrorTrait,

Execution mode for executing a system transaction, including the epoch change transaction and the consensus commit prologue. In this mode, we allow calls to any function bypassing visibility.

Source§

impl<const SKIP_ALL_CHECKS: bool> ExecutionMode for DevInspect<SKIP_ALL_CHECKS>

Source§

const TRACK_EXECUTION: bool = true

Source§

type ArgumentUpdates = Vec<(Argument, Vec<u8>, TypeTag)>

Source§

type ExecutionResults = Vec<(Vec<(Argument, Vec<u8>, TypeTag)>, Vec<(Vec<u8>, TypeTag)>)>

Source§

type Error = ExecutionError