Skip to main content

ClientDatabase

Struct ClientDatabase 

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

Source

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.

Source

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,

Source§

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>

Returns the last observed super segment header
Source§

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>

Get a single super segment header
Source§

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,

Source§

async fn persist_super_segment_header( &self, super_segment_header: SuperSegmentHeader, ) -> Result<bool, PersistSuperSegmentHeadersError>

Persist a new super segment header. Read more
Source§

async fn persist_super_segment_headers( &self, super_segment_headers: Vec<SuperSegmentHeader>, ) -> Result<(), PersistSuperSegmentHeadersError>

Persist super segment headers. Read more
Source§

impl<Block, StorageBackend> ChainInfo<Block> for ClientDatabase<Block, StorageBackend>
where Block: GenericOwnedBlock, StorageBackend: ClientDatabaseStorageBackend,

Source§

fn best_root(&self) -> BlockRoot

Best block root
Source§

fn best_header(&self) -> Block::Header

Best block header
Source§

fn best_header_with_details(&self) -> (Block::Header, BlockDetails)

Returns the best block header like [Self::best_header()] with additional block details
Source§

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

fn header(&self, block_root: &BlockRoot) -> Option<Block::Header>

Block header
Source§

fn header_with_details( &self, block_root: &BlockRoot, ) -> Option<(Block::Header, BlockDetails)>

Returns a block header like [Self::header()] with additional block details
Source§

async fn block(&self, block_root: &BlockRoot) -> Result<Block, ReadBlockError>

Source§

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>

Get a single segment header
Source§

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,

Source§

async fn persist_block( &self, block: Block, block_details: BlockDetails, ) -> Result<(), PersistBlockError>

Persist newly imported block
Source§

async fn persist_segment_headers( &self, segment_headers: Vec<SegmentHeader>, ) -> Result<(), PersistSegmentHeadersError>

Persist segment headers. Read more
Source§

impl<Block, StorageBackend> Clone for ClientDatabase<Block, StorageBackend>
where Block: GenericOwnedBlock,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<Block, StorageBackend: Debug> Debug for ClientDatabase<Block, StorageBackend>
where Block: GenericOwnedBlock + Debug,

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<Block, StorageBackend> Drop for ClientDatabase<Block, StorageBackend>
where Block: GenericOwnedBlock,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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> 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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