sui_adapter_v0::execution_mode

Trait ExecutionMode

Source
pub trait ExecutionMode {
    type ArgumentUpdates;
    type ExecutionResults;

    // 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_arguments() -> Self::ArgumentUpdates;
    fn empty_results() -> Self::ExecutionResults;
    fn add_argument_update(
        resolver: &impl TypeTagResolver,
        acc: &mut Self::ArgumentUpdates,
        arg: Argument,
        _new_value: &Value,
    ) -> Result<(), ExecutionError>;
    fn finish_command(
        resolver: &impl TypeTagResolver,
        acc: &mut Self::ExecutionResults,
        argument_updates: Self::ArgumentUpdates,
        command_result: &[Value],
    ) -> Result<(), ExecutionError>;
}

Required Associated Types§

Source

type ArgumentUpdates

All updates to a Arguments used in that Command

Source

type ExecutionResults

the gathered results from batched executions

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_arguments() -> Self::ArgumentUpdates

Source

fn empty_results() -> Self::ExecutionResults

Source

fn add_argument_update( resolver: &impl TypeTagResolver, acc: &mut Self::ArgumentUpdates, arg: Argument, _new_value: &Value, ) -> Result<(), ExecutionError>

Source

fn finish_command( resolver: &impl TypeTagResolver, acc: &mut Self::ExecutionResults, argument_updates: Self::ArgumentUpdates, command_result: &[Value], ) -> Result<(), ExecutionError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl ExecutionMode for Genesis

Source§

impl ExecutionMode for Normal

Source§

impl ExecutionMode for System

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§

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

Source§

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