NetworkState

Struct NetworkState 

Source
pub struct NetworkState { /* private fields */ }
Expand description

The main network state.

It keeps two different states, the origin and the head. The origin is the starting state, and head is origin with all the received transactions applied.

It is possible to either commit to the head state, turning it into the new origin, or reset it back to origin.

Implementations§

Source§

impl NetworkState

Source

pub fn new() -> Self

Returns a new empty NetworkState.

Source

pub fn with_schedule(schedule: &Schedule) -> Self

Returns a NetworkState based on a schedule

Source

pub fn get_contract<'a>( &'a self, contract_id: &ContractId, ) -> Result<impl Deref<Target = Contract> + 'a, VMError>

Returns a reference to the specified contracts state in the head state.

Source

pub fn get_contract_mut<'a>( &'a mut self, contract_id: &ContractId, ) -> Result<impl DerefMut<Target = Contract> + 'a, VMError>

Returns a mutable reference to the specified contracts state in the origin state.

Source

pub fn deploy(&mut self, contract: Contract) -> Result<ContractId, VMError>

Deploys a contract to the head state, returning the address of the created contract or an error.

Source

pub fn deploy_with_id( &mut self, id: ContractId, contract: Contract, ) -> Result<ContractId, VMError>

Deploys a contract to the head state with the given id / address.

Source

pub fn query<A, R>( &mut self, target: ContractId, block_height: u64, query: A, gas_meter: &mut GasMeter, ) -> Result<R, VMError>
where A: Canon, R: Canon,

Query the contract at target address in the head state.

Source

pub fn transact<A, R>( &mut self, target: ContractId, block_height: u64, transaction: A, gas_meter: &mut GasMeter, ) -> Result<R, VMError>
where A: Canon, R: Canon,

Transact with the contract at target address in the head state, returning the result of the transaction.

This will advance the head to the resultant state.

Source

pub fn root(&self) -> [u8; 32]

Returns the root of the tree in the head state.

Source

pub fn reset(&mut self)

Resets the head state to origin.

Source

pub fn commit(&mut self)

Commits to the head state, making it the new origin.

Source

pub fn register_host_module<M>(&mut self, module: M)
where M: HostModule + 'static + Sync + Send,

Register a host function handler.

Source

pub fn get_contract_cast_state<C>( &self, contract_id: &ContractId, ) -> Result<C, VMError>
where C: Canon,

Gets the state of the given contract in the head state.

Source

pub fn get_module_config(&self) -> &ModuleConfig

Gets module config

Trait Implementations§

Source§

impl Canon for NetworkState

Custom implementation of Canon ensuring only the head state is encoded. When restored, head is set to be a copy of origin and the modules are to be set by the caller.

Source§

fn encode(&self, sink: &mut Sink<'_>)

Write the encoded value as bytes to a Sink
Source§

fn decode(source: &mut Source<'_>) -> Result<Self, CanonError>

Return the decoded value from bytes in a Source
Source§

fn encoded_len(&self) -> usize

Returns the number of bytes needed to encode this value
Source§

impl Clone for NetworkState

Source§

fn clone(&self) -> NetworkState

Returns a duplicate 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 Default for NetworkState

Source§

fn default() -> NetworkState

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

Source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
Source§

impl<T> EncodeToVec for T
where T: Canon,

Source§

fn encode_to_vec(&self) -> Vec<u8>

Encode Self into a buffer
Source§

impl<T> From<T> for T

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 T
where U: From<T>,

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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Keyed<T> for T

Source§

fn key(&self) -> &T

Return a reference to the key of the leaf type
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Pointee for T

Source§

type Metadata = ()

The type for metadata in pointers and references to Self.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

Source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
Source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
Source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
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