pub trait BlockWriter: Send + Sync {
type Body: Send + Sync;
// Required methods
fn insert_block(
&self,
block: SealedBlockWithSenders,
) -> Result<StoredBlockBodyIndices, ProviderError>;
fn append_block_bodies(
&self,
bodies: impl Iterator<Item = (u64, Option<Self::Body>)>,
) -> Result<(), ProviderError>;
fn append_blocks_with_state(
&self,
blocks: Vec<SealedBlockWithSenders>,
execution_outcome: ExecutionOutcome,
hashed_state: HashedPostStateSorted,
trie_updates: TrieUpdates,
) -> Result<(), ProviderError>;
}
Expand description
Block Writer
Required Associated Types§
Required Methods§
Sourcefn insert_block(
&self,
block: SealedBlockWithSenders,
) -> Result<StoredBlockBodyIndices, ProviderError>
fn insert_block( &self, block: SealedBlockWithSenders, ) -> Result<StoredBlockBodyIndices, ProviderError>
Insert full block and make it canonical. Parent tx num and transition id is taken from parent block in database.
Return [StoredBlockBodyIndices] that contains indices of the first and last transactions and transition in the block.
Sourcefn append_block_bodies(
&self,
bodies: impl Iterator<Item = (u64, Option<Self::Body>)>,
) -> Result<(), ProviderError>
fn append_block_bodies( &self, bodies: impl Iterator<Item = (u64, Option<Self::Body>)>, ) -> Result<(), ProviderError>
Appends a batch of block bodies extending the canonical chain. This is invoked during
Bodies
stage and does not write to TransactionHashNumbers
and TransactionSenders
tables which are populated on later stages.
Bodies are passed as Option
s, if body is None
the corresponding block is empty.
Sourcefn append_blocks_with_state(
&self,
blocks: Vec<SealedBlockWithSenders>,
execution_outcome: ExecutionOutcome,
hashed_state: HashedPostStateSorted,
trie_updates: TrieUpdates,
) -> Result<(), ProviderError>
fn append_blocks_with_state( &self, blocks: Vec<SealedBlockWithSenders>, execution_outcome: ExecutionOutcome, hashed_state: HashedPostStateSorted, trie_updates: TrieUpdates, ) -> Result<(), ProviderError>
Appends a batch of sealed blocks to the blockchain, including sender information, and updates the post-state.
Inserts the blocks into the database and updates the state with
provided BundleState
.
§Parameters
blocks
: Vector ofSealedBlockWithSenders
instances to append.state
: Post-state information to update after appending.
§Returns
Returns Ok(())
on success, or an error if any operation fails.
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.