Struct linera_chain::data_types::Block
source · pub struct Block {
pub chain_id: ChainId,
pub epoch: Epoch,
pub incoming_messages: Vec<IncomingMessage>,
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_messages: Vec<IncomingMessage>
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_messages( &self, ctx: &Context<'_> ) -> Result<&Vec<IncomingMessage>>
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 bytecode_locations(&self) -> HashMap<BytecodeLocation, ChainId>
pub fn bytecode_locations(&self) -> HashMap<BytecodeLocation, ChainId>
Returns all bytecode locations referred to in this block’s incoming messages, with the sender chain ID.
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.
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
source§impl PartialEq for Block
impl PartialEq for Block
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<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§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<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
.