pub struct ProposedBlock {
pub chain_id: ChainId,
pub epoch: Epoch,
pub transactions: Vec<Transaction>,
pub height: BlockHeight,
pub timestamp: Timestamp,
pub authenticated_owner: Option<AccountOwner>,
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: ChainIdThe chain to which this block belongs.
epoch: EpochThe number identifying the current configuration.
transactions: Vec<Transaction>The transactions to execute in this block. Each transaction can be either incoming messages or an operation.
height: BlockHeightThe block height.
timestamp: TimestampThe 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_owner: Option<AccountOwner>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 ProposedBlock
impl ProposedBlock
pub async fn chain_id(&self, ctx: &Context<'_>) -> Result<&ChainId>
pub async fn epoch(&self, ctx: &Context<'_>) -> Result<&Epoch>
pub async fn height(&self, ctx: &Context<'_>) -> Result<&BlockHeight>
pub async fn timestamp(&self, ctx: &Context<'_>) -> Result<&Timestamp>
pub async fn authenticated_owner( &self, ctx: &Context<'_>, ) -> Result<&Option<AccountOwner>>
pub async fn previous_block_hash( &self, ctx: &Context<'_>, ) -> Result<&Option<CryptoHash>>
Source§impl ProposedBlock
impl ProposedBlock
Sourcepub fn published_blob_ids(&self) -> BTreeSet<BlobId>
pub fn published_blob_ids(&self) -> BTreeSet<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 PostedMessages in this block.
Sourcepub fn message_count(&self) -> usize
pub fn message_count(&self) -> usize
Returns the number of incoming messages.
Sourcepub fn transaction_refs(&self) -> impl Iterator<Item = &Transaction>
pub fn transaction_refs(&self) -> impl Iterator<Item = &Transaction>
Returns an iterator over all transactions as references.
Sourcepub fn operations(&self) -> impl Iterator<Item = &Operation>
pub fn operations(&self) -> impl Iterator<Item = &Operation>
Returns all operations in this block.
Sourcepub fn incoming_bundles(&self) -> impl Iterator<Item = &IncomingBundle>
pub fn incoming_bundles(&self) -> impl Iterator<Item = &IncomingBundle>
Returns all incoming bundles in this block.
pub fn check_proposal_size( &self, maximum_block_proposal_size: u64, ) -> Result<(), ChainError>
Trait Implementations§
Source§impl BlockTestExt for ProposedBlock
impl BlockTestExt for ProposedBlock
Source§fn with_authenticated_owner(
self,
authenticated_owner: Option<AccountOwner>,
) -> Self
fn with_authenticated_owner( self, authenticated_owner: Option<AccountOwner>, ) -> Self
Source§fn with_operation(self, operation: impl Into<Operation>) -> Self
fn with_operation(self, operation: impl Into<Operation>) -> Self
Source§fn with_transfer(
self,
owner: AccountOwner,
recipient: Account,
amount: Amount,
) -> Self
fn with_transfer( self, owner: AccountOwner, recipient: Account, amount: Amount, ) -> Self
Source§fn with_simple_transfer(self, chain_id: ChainId, amount: Amount) -> Self
fn with_simple_transfer(self, chain_id: ChainId, amount: Amount) -> Self
Source§fn with_burn(self, amount: Amount) -> Self
fn with_burn(self, amount: Amount) -> Self
Source§fn with_incoming_bundle(self, incoming_bundle: IncomingBundle) -> Self
fn with_incoming_bundle(self, incoming_bundle: IncomingBundle) -> Self
Source§fn with_timestamp(self, timestamp: impl Into<Timestamp>) -> Self
fn with_timestamp(self, timestamp: impl Into<Timestamp>) -> Self
Source§fn with_epoch(self, epoch: impl Into<Epoch>) -> Self
fn with_epoch(self, epoch: impl Into<Epoch>) -> Self
Source§async fn into_proposal_with_round<S: Signer + ?Sized>(
self,
owner: AccountOwner,
signer: &S,
round: Round,
) -> Result<BlockProposal, S::Error>
async fn into_proposal_with_round<S: Signer + ?Sized>( self, owner: AccountOwner, signer: &S, round: Round, ) -> Result<BlockProposal, S::Error>
Source§async fn into_first_proposal<S: Signer + ?Sized>(
self,
owner: AccountOwner,
signer: &S,
) -> Result<BlockProposal, S::Error>
async fn into_first_proposal<S: Signer + ?Sized>( self, owner: AccountOwner, signer: &S, ) -> Result<BlockProposal, S::Error>
Round::MultiLeader(0)) without any hashed certificate values or validated block.Source§impl Clone for ProposedBlock
impl Clone for ProposedBlock
Source§fn clone(&self) -> ProposedBlock
fn clone(&self) -> ProposedBlock
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ContainerType for ProposedBlock
impl ContainerType for ProposedBlock
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 Debug for ProposedBlock
impl Debug for ProposedBlock
Source§impl<'de> Deserialize<'de> for ProposedBlock
impl<'de> Deserialize<'de> for ProposedBlock
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 Hash for ProposedBlock
impl Hash for ProposedBlock
Source§impl OutputType for ProposedBlock
impl OutputType for ProposedBlock
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 ProposedBlock
impl PartialEq for ProposedBlock
Source§impl Serialize for ProposedBlock
impl Serialize for ProposedBlock
impl Eq for ProposedBlock
impl ObjectType for ProposedBlock
impl StructuralPartialEq for ProposedBlock
Auto Trait Implementations§
impl Freeze for ProposedBlock
impl RefUnwindSafe for ProposedBlock
impl Send for ProposedBlock
impl Sync for ProposedBlock
impl Unpin for ProposedBlock
impl UnwindSafe for ProposedBlock
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> CallHasher for T
impl<T> CallHasher for 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<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
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§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> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> MockResults for T
impl<T> MockResults for T
Source§type Results = T
type Results = T
MockInstance.Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§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.
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.