pub struct ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,{ /* private fields */ }Expand description
Client database
Implementations§
Source§impl<Block, StorageBackend> ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
StorageBackend: ClientDatabaseStorageBackend,
impl<Block, StorageBackend> ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
StorageBackend: ClientDatabaseStorageBackend,
Sourcepub async fn open<GBB>(
options: ClientDatabaseOptions<GBB, StorageBackend>,
) -> Result<Self, ClientDatabaseError>where
GBB: FnOnce() -> GenesisBlockBuilderResult<Block>,
pub async fn open<GBB>(
options: ClientDatabaseOptions<GBB, StorageBackend>,
) -> Result<Self, ClientDatabaseError>where
GBB: FnOnce() -> GenesisBlockBuilderResult<Block>,
Open the existing database.
NOTE: The database needs to be formatted with Self::format() before it can be used.
Opening replays storage items in the order they were written. Every block read at a new
highest block number is handled like a new best block: forks are adjusted towards it, other
blocks at block offset block_confirmation_depth - 1 are pruned, then the block at block
offset block_confirmation_depth is confirmed (see the block lifecycle in
ClientDatabaseOptions). The best block after opening is the last block written at the
highest stored block number. It may be behind or on a different fork than the best block
before shutdown, the node re-syncs from there.
Sourcepub async fn format(
storage_backend: &StorageBackend,
options: ClientDatabaseFormatOptions,
) -> Result<(), ClientDatabaseFormatError>
pub async fn format( storage_backend: &StorageBackend, options: ClientDatabaseFormatOptions, ) -> Result<(), ClientDatabaseFormatError>
Format a new database
Trait Implementations§
Source§impl<StorageBackend> BeaconChainInfo for ClientDatabase<OwnedBeaconChainBlock, StorageBackend>where
StorageBackend: ClientDatabaseStorageBackend,
impl<StorageBackend> BeaconChainInfo for ClientDatabase<OwnedBeaconChainBlock, StorageBackend>where
StorageBackend: ClientDatabaseStorageBackend,
Source§fn shard_segment_roots(
&self,
block_number: BlockNumber,
) -> Result<Arc<[ShardSegmentRoot]>, ShardSegmentRootsError>
fn shard_segment_roots( &self, block_number: BlockNumber, ) -> Result<Arc<[ShardSegmentRoot]>, ShardSegmentRootsError>
Returns intermediate and leaf shard segment roots included in the specified block number. Read more
Source§fn last_super_segment_header(&self) -> Option<SuperSegmentHeader>
fn last_super_segment_header(&self) -> Option<SuperSegmentHeader>
Returns the last observed super segment header
Source§fn previous_super_segment_header(
&self,
block_number: BlockNumber,
) -> Option<SuperSegmentHeader>
fn previous_super_segment_header( &self, block_number: BlockNumber, ) -> Option<SuperSegmentHeader>
Returns the previous super segment header for the block built with the specified target
block number. Read more
Source§fn get_super_segment_header(
&self,
super_segment_index: SuperSegmentIndex,
) -> Option<SuperSegmentHeader>
fn get_super_segment_header( &self, super_segment_index: SuperSegmentIndex, ) -> Option<SuperSegmentHeader>
Get a single super segment header
Source§fn get_super_segment_header_for_segment_index(
&self,
segment_index: SegmentIndex,
) -> Option<SuperSegmentHeader>
fn get_super_segment_header_for_segment_index( &self, segment_index: SegmentIndex, ) -> Option<SuperSegmentHeader>
Get a single super segment header for a segment index
Source§impl<StorageBackend> BeaconChainInfoWrite for ClientDatabase<OwnedBeaconChainBlock, StorageBackend>where
StorageBackend: ClientDatabaseStorageBackend,
impl<StorageBackend> BeaconChainInfoWrite for ClientDatabase<OwnedBeaconChainBlock, StorageBackend>where
StorageBackend: ClientDatabaseStorageBackend,
Source§impl<Block, StorageBackend> ChainInfo<Block> for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
StorageBackend: ClientDatabaseStorageBackend,
impl<Block, StorageBackend> ChainInfo<Block> for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
StorageBackend: ClientDatabaseStorageBackend,
Source§fn best_header(&self) -> Block::Header
fn best_header(&self) -> Block::Header
Best block header
Source§fn best_header_with_details(&self) -> (Block::Header, BlockDetails)
fn best_header_with_details(&self) -> (Block::Header, BlockDetails)
Returns the best block header like [
Self::best_header()] with additional block detailsSource§fn ancestor_header(
&self,
ancestor_block_number: BlockNumber,
descendant_block_root: &BlockRoot,
) -> Option<Block::Header>
fn ancestor_header( &self, ancestor_block_number: BlockNumber, descendant_block_root: &BlockRoot, ) -> Option<Block::Header>
Get the header of the block at
ancestor_block_number on the chain ending at
descendant_block_root. Read moreSource§fn header_with_details(
&self,
block_root: &BlockRoot,
) -> Option<(Block::Header, BlockDetails)>
fn header_with_details( &self, block_root: &BlockRoot, ) -> Option<(Block::Header, BlockDetails)>
Returns a block header like [
Self::header()] with additional block detailsasync fn block(&self, block_root: &BlockRoot) -> Result<Block, ReadBlockError>
Source§fn last_segment_header(&self) -> Option<SegmentHeader>
fn last_segment_header(&self) -> Option<SegmentHeader>
Returns the last observed local segment header of this shard
Source§fn get_segment_header(
&self,
segment_index: LocalSegmentIndex,
) -> Option<SegmentHeader>
fn get_segment_header( &self, segment_index: LocalSegmentIndex, ) -> Option<SegmentHeader>
Get a single segment header
Source§fn segment_headers_for_block(
&self,
block_number: BlockNumber,
) -> Vec<SegmentHeader>
fn segment_headers_for_block( &self, block_number: BlockNumber, ) -> Vec<SegmentHeader>
Get segment headers that are expected to be included at specified block number
Source§impl<Block, StorageBackend> ChainInfoWrite<Block> for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
StorageBackend: ClientDatabaseStorageBackend,
impl<Block, StorageBackend> ChainInfoWrite<Block> for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
StorageBackend: ClientDatabaseStorageBackend,
Source§async fn persist_block(
&self,
block: Block,
block_details: BlockDetails,
) -> Result<(), PersistBlockError>
async fn persist_block( &self, block: Block, block_details: BlockDetails, ) -> Result<(), PersistBlockError>
Persist newly imported block
Source§impl<Block, StorageBackend> Clone for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
impl<Block, StorageBackend> Clone for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
Source§impl<Block, StorageBackend: Debug> Debug for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock + Debug,
impl<Block, StorageBackend: Debug> Debug for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock + Debug,
Source§impl<Block, StorageBackend> Drop for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
impl<Block, StorageBackend> Drop for ClientDatabase<Block, StorageBackend>where
Block: GenericOwnedBlock,
Auto Trait Implementations§
impl<Block, StorageBackend> !RefUnwindSafe for ClientDatabase<Block, StorageBackend>
impl<Block, StorageBackend> !UnwindSafe for ClientDatabase<Block, StorageBackend>
impl<Block, StorageBackend> Forget for ClientDatabase<Block, StorageBackend>
impl<Block, StorageBackend> Freeze for ClientDatabase<Block, StorageBackend>where
Arc<Inner<Block, StorageBackend>>: Freeze,
impl<Block, StorageBackend> Send for ClientDatabase<Block, StorageBackend>where
Arc<Inner<Block, StorageBackend>>: Send,
impl<Block, StorageBackend> Sync for ClientDatabase<Block, StorageBackend>where
Arc<Inner<Block, StorageBackend>>: Sync,
impl<Block, StorageBackend> Unpin for ClientDatabase<Block, StorageBackend>where
Arc<Inner<Block, StorageBackend>>: Unpin,
impl<Block, StorageBackend> UnsafeUnpin for ClientDatabase<Block, StorageBackend>where
Arc<Inner<Block, StorageBackend>>: UnsafeUnpin,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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> ⓘ
Converts
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> ⓘ
Converts
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 more