reth::providers

Trait BlockWriter

Source
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§

Source

type Body: Send + Sync

The body this writer can write.

Required Methods§

Source

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.

Source

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 Options, if body is None the corresponding block is empty.

Source

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 of SealedBlockWithSenders 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.

Implementations on Foreign Types§

Source§

impl<'a, T> BlockWriter for &'a T
where T: 'a + BlockWriter + ?Sized, &'a T: Send + Sync,

Source§

type Body = <T as BlockWriter>::Body

Source§

fn insert_block( &self, block: SealedBlockWithSenders, ) -> Result<StoredBlockBodyIndices, ProviderError>

Source§

fn append_block_bodies( &self, bodies: impl Iterator<Item = (u64, Option<<&'a T as BlockWriter>::Body>)>, ) -> Result<(), ProviderError>

Source§

fn append_blocks_with_state( &self, blocks: Vec<SealedBlockWithSenders>, execution_outcome: ExecutionOutcome, hashed_state: HashedPostStateSorted, trie_updates: TrieUpdates, ) -> Result<(), ProviderError>

Source§

impl<T> BlockWriter for Box<T>
where T: BlockWriter + ?Sized, Box<T>: Send + Sync,

Source§

type Body = <T as BlockWriter>::Body

Source§

fn insert_block( &self, block: SealedBlockWithSenders, ) -> Result<StoredBlockBodyIndices, ProviderError>

Source§

fn append_block_bodies( &self, bodies: impl Iterator<Item = (u64, Option<<Box<T> as BlockWriter>::Body>)>, ) -> Result<(), ProviderError>

Source§

fn append_blocks_with_state( &self, blocks: Vec<SealedBlockWithSenders>, execution_outcome: ExecutionOutcome, hashed_state: HashedPostStateSorted, trie_updates: TrieUpdates, ) -> Result<(), ProviderError>

Source§

impl<T> BlockWriter for Arc<T>
where T: BlockWriter + ?Sized, Arc<T>: Send + Sync,

Source§

type Body = <T as BlockWriter>::Body

Source§

fn insert_block( &self, block: SealedBlockWithSenders, ) -> Result<StoredBlockBodyIndices, ProviderError>

Source§

fn append_block_bodies( &self, bodies: impl Iterator<Item = (u64, Option<<Arc<T> as BlockWriter>::Body>)>, ) -> Result<(), ProviderError>

Source§

fn append_blocks_with_state( &self, blocks: Vec<SealedBlockWithSenders>, execution_outcome: ExecutionOutcome, hashed_state: HashedPostStateSorted, trie_updates: TrieUpdates, ) -> Result<(), ProviderError>

Implementors§

Source§

impl<TX, N> BlockWriter for DatabaseProvider<TX, N>
where TX: DbTxMut + DbTx + 'static, N: NodeTypes + 'static, <N as NodeTypes>::ChainSpec: EthereumHardforks,