Struct diem_vm::diem_vm::DiemVM

source ·
pub struct DiemVM(_);

Implementations§

source§

impl DiemVM

source

pub fn new<S: StateView>(state: &S) -> Self

source

pub fn new_for_validation<S: StateView>(state: &S) -> Self

source

pub fn init_with_config( version: DiemVersion, on_chain_config: VMConfig, publishing_option: VMPublishingOption ) -> Self

source

pub fn internals(&self) -> DiemVMInternals<'_>

source

pub fn failed_transaction_cleanup<S: MoveResolver>( &self, error_code: VMStatus, gas_status: &mut GasStatus<'_>, txn_data: &TransactionMetadata, storage: &S, account_currency_symbol: &IdentStr, log_context: &AdapterLogSchema ) -> TransactionOutput

Generates a transaction output for a transaction that encountered errors during the execution process. This is public for now only for tests.

source

pub fn execute_writeset_transaction<S: MoveResolver + StateView>( &self, storage: &S, writeset_payload: &WriteSetPayload, txn_data: TransactionMetadata, log_context: &AdapterLogSchema ) -> Result<(VMStatus, TransactionOutput), VMStatus>

source

pub fn execute_block_and_keep_vm_status( transactions: Vec<Transaction>, state_view: &dyn StateView ) -> Result<Vec<(VMStatus, TransactionOutput)>, VMStatus>

Alternate form of ‘execute_block’ that keeps the vm_status before it goes into the TransactionOutput

Trait Implementations§

source§

impl Clone for DiemVM

source§

fn clone(&self) -> DiemVM

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl VMExecutor for DiemVM

source§

fn execute_block( transactions: Vec<Transaction>, state_view: &dyn StateView ) -> Result<Vec<TransactionOutput>, VMStatus>

Execute a block of transactions. The output vector will have the exact same length as the input vector. The discarded transactions will be marked as TransactionStatus::Discard and have an empty WriteSet. Also state_view is immutable, and does not have interior mutability. Writes to be applied to the data view are encoded in the write set part of a transaction output.

source§

impl VMValidator for DiemVM

source§

fn validate_transaction( &self, transaction: SignedTransaction, state_view: &dyn StateView ) -> VMValidatorResult

Determine if a transaction is valid. Will return None if the transaction is accepted, Some(Err) if the VM rejects it, with Err as an error code. Verification performs the following steps:

  1. The signature on the SignedTransaction matches the public key included in the transaction
  2. The script to be executed is under given specific configuration.
  3. Invokes DiemAccount.prologue, which checks properties such as the transaction has the right sequence number and the sender has enough balance to pay for the gas. TBD:
  4. Transaction arguments matches the main function’s type signature. We don’t check this item for now and would execute the check at execution time.

Auto Trait Implementations§

§

impl !RefUnwindSafe for DiemVM

§

impl Send for DiemVM

§

impl Sync for DiemVM

§

impl Unpin for DiemVM

§

impl !UnwindSafe for DiemVM

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more