Trait Block

Source
pub trait Block:
    HeaderProvider<HeaderT = Self::Header>
    + Clone
    + Send
    + Sync
    + Codec
    + Eq
    + MaybeSerialize
    + Debug
    + 'static {
    type Extrinsic: Member + Codec + ExtrinsicLike + MaybeSerialize;
    type Header: Header<Hash = Self::Hash> + MaybeSerializeDeserialize;
    type Hash: HashOutput;

    // Required methods
    fn header(&self) -> &Self::Header;
    fn extrinsics(&self) -> &[Self::Extrinsic];
    fn deconstruct(self) -> (Self::Header, Vec<Self::Extrinsic>);
    fn new(header: Self::Header, extrinsics: Vec<Self::Extrinsic>) -> Self;
    fn encode_from(
        header: &Self::Header,
        extrinsics: &[Self::Extrinsic],
    ) -> Vec<u8> ;

    // Provided method
    fn hash(&self) -> Self::Hash { ... }
}
Expand description

Something which fulfills the abstract idea of a Substrate block. It has types for Extrinsic pieces of information as well as a Header.

You can get an iterator over each of the extrinsics and retrieve the header.

Required Associated Types§

Source

type Extrinsic: Member + Codec + ExtrinsicLike + MaybeSerialize

Type for extrinsics.

Source

type Header: Header<Hash = Self::Hash> + MaybeSerializeDeserialize

Header type.

Source

type Hash: HashOutput

Block hash type.

Required Methods§

Source

fn header(&self) -> &Self::Header

Returns a reference to the header.

Source

fn extrinsics(&self) -> &[Self::Extrinsic]

Returns a reference to the list of extrinsics.

Source

fn deconstruct(self) -> (Self::Header, Vec<Self::Extrinsic>)

Split the block into header and list of extrinsics.

Source

fn new(header: Self::Header, extrinsics: Vec<Self::Extrinsic>) -> Self

Creates new block from header and extrinsics.

Source

fn encode_from(header: &Self::Header, extrinsics: &[Self::Extrinsic]) -> Vec<u8>

Creates an encoded block from the given header and extrinsics without requiring the creation of an instance.

Provided Methods§

Source

fn hash(&self) -> Self::Hash

Returns the hash of the block.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Header, Extrinsic> Block for sp_runtime::generic::Block<Header, Extrinsic>

Source§

type Extrinsic = Extrinsic

Source§

type Header = Header

Source§

type Hash = <<Block<Header, Extrinsic> as Block>::Header as Header>::Hash

Source§

impl<Xt: 'static + Codec + Sized + Send + Sync + Serialize + Clone + Eq + Debug + ExtrinsicLike> Block for sp_runtime::testing::Block<Xt>