pub struct Block {
pub chain_id: ChainId,
pub epoch: Epoch,
pub incoming_bundles: Vec<IncomingBundle>,
pub operations: Vec<Operation>,
pub height: BlockHeight,
pub timestamp: Timestamp,
pub authenticated_signer: Option<Owner>,
pub previous_block_hash: Option<CryptoHash>,
}
Expand description
A block containing operations to apply on a given chain, as well as the acknowledgment of a number of incoming messages from other chains.
- Incoming messages must be selected in the order they were produced by the sending chain, but can be skipped.
- When a block is proposed to a validator, all cross-chain messages must have been received ahead of time in the inbox of the chain.
- This constraint does not apply to the execution of confirmed blocks.
Fields§
§chain_id: ChainId
The chain to which this block belongs.
epoch: Epoch
The number identifying the current configuration.
incoming_bundles: Vec<IncomingBundle>
A selection of incoming messages to be executed first. Successive messages of same sender and height are grouped together for conciseness.
operations: Vec<Operation>
The operations to execute.
height: BlockHeight
The block height.
timestamp: Timestamp
The timestamp when this block was created. This must be later than all messages received in this block, but no later than the current time.
authenticated_signer: Option<Owner>
The user signing for the operations in the block and paying for their execution
fees. If set, this must be the owner
in the block proposal. None
means that
the default account of the chain is used. This value is also used as recipient of
potential refunds for the message grants created by the operations.
previous_block_hash: Option<CryptoHash>
Certified hash (see Certificate
below) of the previous block in the
chain, if any.
Implementations§
Source§impl Block
impl Block
pub async fn chain_id(&self, ctx: &Context<'_>) -> Result<&ChainId>
pub async fn epoch(&self, ctx: &Context<'_>) -> Result<&Epoch>
pub async fn incoming_bundles( &self, ctx: &Context<'_>, ) -> Result<&Vec<IncomingBundle>>
pub async fn operations(&self, ctx: &Context<'_>) -> Result<&Vec<Operation>>
pub async fn height(&self, ctx: &Context<'_>) -> Result<&BlockHeight>
pub async fn timestamp(&self, ctx: &Context<'_>) -> Result<&Timestamp>
pub async fn authenticated_signer( &self, ctx: &Context<'_>, ) -> Result<&Option<Owner>>
pub async fn previous_block_hash( &self, ctx: &Context<'_>, ) -> Result<&Option<CryptoHash>>
Source§impl Block
impl Block
Sourcepub fn published_blob_ids(&self) -> HashSet<BlobId>
pub fn published_blob_ids(&self) -> HashSet<BlobId>
Returns all the published blob IDs in this block’s operations.
Sourcepub fn has_only_rejected_messages(&self) -> bool
pub fn has_only_rejected_messages(&self) -> bool
Returns whether the block contains only rejected incoming messages, which makes it admissible even on closed chains.
Sourcepub fn incoming_messages(&self) -> impl Iterator<Item = &PostedMessage>
pub fn incoming_messages(&self) -> impl Iterator<Item = &PostedMessage>
Returns an iterator over all incoming PostedMessage
s in this block.
Sourcepub fn message_count(&self) -> usize
pub fn message_count(&self) -> usize
Returns the number of incoming messages.
Sourcepub fn transactions(&self) -> impl Iterator<Item = (u32, Transaction<'_>)>
pub fn transactions(&self) -> impl Iterator<Item = (u32, Transaction<'_>)>
Returns an iterator over all transactions, by index.
Sourcepub fn starts_with_open_chain_message(
&self,
) -> Option<(&IncomingBundle, &PostedMessage, &OpenChainConfig)>
pub fn starts_with_open_chain_message( &self, ) -> Option<(&IncomingBundle, &PostedMessage, &OpenChainConfig)>
If the block’s first message is OpenChain
, returns the bundle, the message and
the configuration for the new chain.
Trait Implementations§
Source§impl ContainerType for Block
impl ContainerType for Block
Source§async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>
async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>
async_graphql::Value
. Read moreSource§fn collect_all_fields<'a>(
&'a self,
ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>,
fields: &mut Fields<'a>,
) -> Result<(), ServerError>
fn collect_all_fields<'a>( &'a self, ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>, fields: &mut Fields<'a>, ) -> Result<(), ServerError>
Source§fn find_entity(
&self,
_: &ContextBase<'_, &Positioned<Field>>,
_params: &ConstValue,
) -> impl Future<Output = Result<Option<ConstValue>, ServerError>> + Send
fn find_entity( &self, _: &ContextBase<'_, &Positioned<Field>>, _params: &ConstValue, ) -> impl Future<Output = Result<Option<ConstValue>, ServerError>> + Send
Source§impl<'de> Deserialize<'de> for Block
impl<'de> Deserialize<'de> for Block
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl OutputType for Block
impl OutputType for Block
Source§fn create_type_info(registry: &mut Registry) -> String
fn create_type_info(registry: &mut Registry) -> String
Source§async fn resolve(
&self,
ctx: &ContextSelectionSet<'_>,
_field: &Positioned<Field>,
) -> ServerResult<Value>
async fn resolve( &self, ctx: &ContextSelectionSet<'_>, _field: &Positioned<Field>, ) -> ServerResult<Value>
async_graphql::Value
.Source§fn qualified_type_name() -> String
fn qualified_type_name() -> String
impl Eq for Block
impl ObjectType for Block
impl StructuralPartialEq for Block
Auto Trait Implementations§
impl Freeze for Block
impl RefUnwindSafe for Block
impl Send for Block
impl Sync for Block
impl Unpin for Block
impl UnwindSafe for Block
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
Source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
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>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes
to memory at the provided location
.