SystemExecutionStateView

Struct SystemExecutionStateView 

Source
pub struct SystemExecutionStateView<C> {
    pub description: HashedRegisterView<C, Option<ChainDescription>>,
    pub epoch: HashedRegisterView<C, Epoch>,
    pub admin_id: HashedRegisterView<C, Option<ChainId>>,
    pub committees: HashedRegisterView<C, BTreeMap<Epoch, Committee>>,
    pub ownership: HashedRegisterView<C, ChainOwnership>,
    pub balance: HashedRegisterView<C, Amount>,
    pub balances: HashedMapView<C, AccountOwner, Amount>,
    pub timestamp: HashedRegisterView<C, Timestamp>,
    pub closed: HashedRegisterView<C, bool>,
    pub application_permissions: HashedRegisterView<C, ApplicationPermissions>,
    pub used_blobs: HashedSetView<C, BlobId>,
    pub event_subscriptions: HashedMapView<C, (ChainId, StreamId), EventSubscriptions>,
}
Expand description

A view accessing the execution state of the system of a chain.

Fields§

§description: HashedRegisterView<C, Option<ChainDescription>>

How the chain was created. May be unknown for inactive chains.

§epoch: HashedRegisterView<C, Epoch>

The number identifying the current configuration.

§admin_id: HashedRegisterView<C, Option<ChainId>>

The admin of the chain.

§committees: HashedRegisterView<C, BTreeMap<Epoch, Committee>>

The committees that we trust, indexed by epoch number.

§ownership: HashedRegisterView<C, ChainOwnership>

Ownership of the chain.

§balance: HashedRegisterView<C, Amount>

Balance of the chain. (Available to any user able to create blocks in the chain.)

§balances: HashedMapView<C, AccountOwner, Amount>

Balances attributed to a given owner.

§timestamp: HashedRegisterView<C, Timestamp>

The timestamp of the most recent block.

§closed: HashedRegisterView<C, bool>

Whether this chain has been closed.

§application_permissions: HashedRegisterView<C, ApplicationPermissions>

Permissions for applications on this chain.

§used_blobs: HashedSetView<C, BlobId>

Blobs that have been used or published on this chain.

§event_subscriptions: HashedMapView<C, (ChainId, StreamId), EventSubscriptions>

The event stream subscriptions of applications on this chain.

Implementations§

Source§

impl<C> SystemExecutionStateView<C>
where C: Context + Clone + Send + Sync + 'static, C::Extra: ExecutionRuntimeContext,

Source

pub fn is_active(&self) -> bool

Invariant for the states of active chains.

Source

pub fn current_committee(&self) -> Option<(Epoch, &Committee)>

Returns the current committee, if any.

Source

pub async fn execute_operation( &mut self, context: OperationContext, operation: SystemOperation, txn_tracker: &mut TransactionTracker, resource_controller: &mut ResourceController<Option<AccountOwner>>, ) -> Result<Option<(ApplicationId, Vec<u8>)>, ExecutionError>

Executes the sender’s side of an operation and returns a list of actions to be taken.

Source

pub async fn transfer( &mut self, authenticated_signer: Option<AccountOwner>, authenticated_application_id: Option<ApplicationId>, source: AccountOwner, recipient: Account, amount: Amount, ) -> Result<Option<OutgoingMessage>, ExecutionError>

Source

pub async fn claim( &mut self, authenticated_signer: Option<AccountOwner>, authenticated_application_id: Option<ApplicationId>, source: AccountOwner, target_id: ChainId, recipient: Account, amount: Amount, ) -> Result<Option<OutgoingMessage>, ExecutionError>

Source

pub async fn execute_message( &mut self, context: MessageContext, message: SystemMessage, ) -> Result<Vec<OutgoingMessage>, ExecutionError>

Executes a cross-chain message that represents the recipient’s side of an operation.

Source

pub async fn initialize_chain( &mut self, chain_id: ChainId, ) -> Result<bool, ExecutionError>

Initializes the system application state on a newly opened chain. Returns Ok(true) if the chain was already initialized, Ok(false) if it wasn’t.

Source

pub async fn handle_query( &mut self, context: QueryContext, _query: SystemQuery, ) -> Result<QueryOutcome<SystemResponse>, ExecutionError>

Source

pub async fn open_chain( &mut self, config: OpenChainConfig, parent: ChainId, block_height: BlockHeight, timestamp: Timestamp, txn_tracker: &mut TransactionTracker, ) -> Result<ChainId, ExecutionError>

Returns the messages to open a new chain, and subtracts the new chain’s balance from this chain’s.

Source

pub async fn close_chain(&mut self) -> Result<(), ExecutionError>

Source

pub async fn create_application( &mut self, chain_id: ChainId, block_height: BlockHeight, module_id: ModuleId, parameters: Vec<u8>, required_application_ids: Vec<ApplicationId>, txn_tracker: &mut TransactionTracker, ) -> Result<CreateApplicationResult, ExecutionError>

Source

pub async fn describe_application( &mut self, id: ApplicationId, txn_tracker: &mut TransactionTracker, ) -> Result<ApplicationDescription, ExecutionError>

Retrieves an application’s description.

Source

pub async fn find_dependencies( &mut self, stack: Vec<ApplicationId>, txn_tracker: &mut TransactionTracker, ) -> Result<Vec<ApplicationId>, ExecutionError>

Retrieves the recursive dependencies of applications and applies a topological sort.

Source

pub async fn read_blob_content( &self, blob_id: BlobId, ) -> Result<BlobContent, ExecutionError>

Source

pub async fn assert_blob_exists( &mut self, blob_id: BlobId, ) -> Result<(), ExecutionError>

Trait Implementations§

Source§

impl<C> Allocative for SystemExecutionStateView<C>

Source§

fn visit<'allocative_a, 'allocative_b: 'allocative_a>( &self, visitor: &'allocative_a mut Visitor<'allocative_b>, )

Source§

impl<C> ClonableView for SystemExecutionStateView<C>

Source§

fn clone_unchecked(&mut self) -> Result<Self, ViewError>

Creates a clone of this view, sharing the underlying storage context but prone to data races which can corrupt the view state.
Source§

impl<C: Send + Sync + Context> ContainerType for SystemExecutionStateView<C>

Source§

async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>

Resolves a field value and outputs it as a json value async_graphql::Value. Read more
Source§

async fn find_entity( &self, ctx: &Context<'_>, params: &Value, ) -> ServerResult<Option<Value>>

Find the GraphQL entity with the given name from the parameter. Read more
Source§

fn collect_all_fields<'a>( &'a self, ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>, fields: &mut Fields<'a>, ) -> Result<(), ServerError>
where Self: Send + Sync,

Collect all the fields of the container that are queried in the selection set. Read more
Source§

impl<C> Debug for SystemExecutionStateView<C>

Source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C> HashableView for SystemExecutionStateView<C>

Source§

type Hasher = CoreWrapper<Sha3_256Core>

How to compute hashes.
Source§

async fn hash_mut( &mut self, ) -> Result<<Self::Hasher as Hasher>::Output, ViewError>

Same as hash but guaranteed to be wait-free.
Source§

async fn hash(&self) -> Result<<Self::Hasher as Hasher>::Output, ViewError>

Computes the hash of the values. Read more
Source§

impl<C: Send + Sync + Context> OutputType for SystemExecutionStateView<C>

Source§

fn type_name() -> Cow<'static, str>

Type the name.
Source§

fn create_type_info(registry: &mut Registry) -> String

Create type information in the registry and return qualified typename.
Source§

async fn resolve( &self, ctx: &ContextSelectionSet<'_>, _field: &Positioned<Field>, ) -> ServerResult<Value>

Resolve an output value to async_graphql::Value.
Source§

fn qualified_type_name() -> String

Qualified typename.
Source§

fn introspection_type_name(&self) -> Cow<'static, str>

Introspection type name Read more
Source§

impl<C: Context, C2: Context> ReplaceContext<C2> for SystemExecutionStateView<C>

Source§

type Target = SystemExecutionStateView<C2>

The type returned after replacing the context.
Source§

async fn with_context( &mut self, ctx: impl FnOnce(&Self::Context) -> C2 + Clone, ) -> Self::Target

Returns a view with a replaced context.
Source§

impl<C> View for SystemExecutionStateView<C>
where C: Context, HashedRegisterView<C, Option<ChainDescription>>: View<Context = C>, HashedRegisterView<C, Epoch>: View<Context = C>, HashedRegisterView<C, Option<ChainId>>: View<Context = C>, HashedRegisterView<C, BTreeMap<Epoch, Committee>>: View<Context = C>, HashedRegisterView<C, ChainOwnership>: View<Context = C>, HashedRegisterView<C, Amount>: View<Context = C>, HashedMapView<C, AccountOwner, Amount>: View<Context = C>, HashedRegisterView<C, Timestamp>: View<Context = C>, HashedRegisterView<C, bool>: View<Context = C>, HashedRegisterView<C, ApplicationPermissions>: View<Context = C>, HashedSetView<C, BlobId>: View<Context = C>, HashedMapView<C, (ChainId, StreamId), EventSubscriptions>: View<Context = C>,

Source§

const NUM_INIT_KEYS: usize

The number of keys used for the initialization
Source§

type Context = C

The type of context stored in this view
Source§

fn context(&self) -> &C

Obtains a mutable reference to the internal context.
Source§

fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>

Creates the keys needed for loading the view
Source§

fn post_load(context: C, values: &[Option<Vec<u8>>]) -> Result<Self, ViewError>

Loads a view from the values
Source§

async fn load(context: C) -> Result<Self, ViewError>

Loads a view
Source§

fn rollback(&mut self)

Discards all pending changes. After that flush should have no effect to storage.
Source§

async fn has_pending_changes(&self) -> bool

Returns true if flushing this view would result in changes to the persistent storage.
Source§

fn pre_save(&self, batch: &mut Batch) -> Result<bool, ViewError>

Computes the batch of operations to persist changes to storage without modifying the view. Crash-resistant storage implementations accumulate the desired changes in the batch variable. The returned boolean indicates whether the operation removes the view or not.
Source§

fn post_save(&mut self)

Updates the view state after the batch has been executed in the database. This should be called after pre_save and after the batch has been successfully written to storage. This leaves the view in a clean state with no pending changes. Read more
Source§

fn clear(&mut self)

Clears the view. That can be seen as resetting to default. If the clear is followed by a flush then all the relevant data is removed on the storage.
Source§

fn new(context: Self::Context) -> Result<Self, ViewError>

Builds a trivial view that is already deleted
Source§

impl<C: Send + Sync + Context> ObjectType for SystemExecutionStateView<C>

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> 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<Choices> CoproductSubsetter<CNil, HNil> for Choices

Source§

type Remainder = Choices

Source§

fn subset( self, ) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more
Source§

impl<To, From> DynInto<To> for From
where From: Into<To>,

Source§

fn into_box(self: Box<From>) -> To

Converts a boxed object into the target type.
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, U, I> LiftInto<U, I> for T
where U: LiftFrom<T, I>,

Source§

fn lift_into(self) -> U

Performs the indexed conversion.
Source§

impl<M, I> RuntimeMemory<&mut I> for M
where M: RuntimeMemory<I>,

Source§

fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>

Reads length bytes from memory from the provided location.

Source§

fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>

Writes the bytes to memory at the provided location.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<Source> Sculptor<HNil, HNil> for Source

Source§

type Remainder = Source

Source§

fn sculpt(self) -> (HNil, <Source as Sculptor<HNil, HNil>>::Remainder)

Consumes the current HList and returns an HList with the requested shape. Read more
Source§

impl<AnyTail> Split<HNil> for AnyTail

Source§

type Remainder = AnyTail

The tail of remaining elements after splitting up the list.
Source§

fn split(self) -> (HNil, <AnyTail as Split<HNil>>::Remainder)

Splits the current heterogeneous list in two.
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> Post for T
where T: Send + Sync,