Struct zksync_consensus_storage::BlockStore

source ·
pub struct BlockStore { /* private fields */ }
Expand description

A wrapper around a PersistentBlockStore which adds caching blocks in-memory and other useful utilities.

Implementations§

source§

impl BlockStore

source

pub async fn new( ctx: &Ctx, persistent: Box<dyn PersistentBlockStore>, ) -> Result<(Arc<Self>, BlockStoreRunner)>

Constructs a BlockStore. BlockStore takes ownership of the passed PersistentBlockStore, i.e. caller should modify the underlying persistent storage ONLY through the constructed BlockStore.

source

pub fn genesis(&self) -> &Genesis

Genesis specification for this block store.

source

pub fn queued(&self) -> BlockStoreState

Available blocks (in memory & persisted).

source

pub async fn block( &self, ctx: &Ctx, number: BlockNumber, ) -> Result<Option<FinalBlock>>

Fetches a block (from queue or persistent storage).

source

pub async fn queue_block(&self, ctx: &Ctx, block: FinalBlock) -> Result<()>

Append block to a queue to be persisted eventually. Since persisting a block may take a significant amount of time, BlockStore contains a queue of blocks waiting to be persisted. queue_block() adds a block to the queue as soon as all intermediate blocks are queued_state as well. Queue is unbounded, so it is caller’s responsibility to manage the queue size.

source

pub async fn wait_for_queued_change( &self, ctx: &Ctx, old: &BlockStoreState, ) -> OrCanceled<BlockStoreState>

Waits until the queued blocks range is different than old.

source

pub async fn wait_until_queued( &self, ctx: &Ctx, number: BlockNumber, ) -> OrCanceled<BlockStoreState>

Waits until the given block is queued (in memory, or persisted). Note that it doesn’t mean that the block is actually available, as old blocks might get pruned.

source

pub async fn wait_until_persisted( &self, ctx: &Ctx, number: BlockNumber, ) -> OrCanceled<BlockStoreState>

Waits until the given block is stored persistently. Note that it doesn’t mean that the block is actually available, as old blocks might get pruned.

Trait Implementations§

source§

impl Debug for BlockStore

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more