ouroboros-consensus-0.21.0.0: Consensus layer for the Ouroboros blockchain protocol
Safe HaskellSafe-Inferred
LanguageHaskell2010

Ouroboros.Consensus.Storage.ChainDB.Impl.Query

Description

Queries

Synopsis

Queries

getBlockComponent ∷ ∀ m blk b. IOLike m ⇒ ChainDbEnv m blk → BlockComponent blk b → RealPoint blk → m (Maybe b) Source #

getCurrentChain ∷ ∀ m blk. (IOLike m, HasHeader (Header blk), ConsensusProtocol (BlockProtocol blk)) ⇒ ChainDbEnv m blk → STM m (AnchoredFragment (Header blk)) Source #

Return the last k headers.

While the in-memory fragment (cdbChain) might temporarily be longer than k (until the background thread has copied those blocks to the ImmutableDB), this function will never return a fragment longer than k.

The anchor point of the returned fragment will be the most recent "immutable" block, i.e. a block that cannot be rolled back. In ChainDB.md, we call this block i.

Note that the returned fragment may be shorter than k in case the whole chain itself is shorter than k or in case the VolatileDB was corrupted. In the latter case, we don't take blocks already in the ImmutableDB into account, as we know they must have been "immutable" at some point, and, therefore, must still be "immutable".

getHeaderStateHistory ∷ ∀ m blk. (IOLike m, HasHardForkHistory blk, HasAnnTip blk, IsLedger (LedgerState blk)) ⇒ ChainDbEnv m blk → STM m (HeaderStateHistory blk) Source #

Get a HeaderStateHistory populated with the HeaderStates of the last k blocks of the current chain.

getIsFetched ∷ ∀ m blk. IOLike m ⇒ ChainDbEnv m blk → STM m (Point blk → Bool) Source #

getIsInvalidBlock ∷ ∀ m blk. (IOLike m, HasHeader blk) ⇒ ChainDbEnv m blk → STM m (WithFingerprint (HeaderHash blk → Maybe (ExtValidationError blk))) Source #

getIsValid ∷ ∀ m blk. (IOLike m, HasHeader blk) ⇒ ChainDbEnv m blk → STM m (RealPoint blk → Maybe Bool) Source #

getLedgerDBIOLike m ⇒ ChainDbEnv m blk → STM m (LedgerDB' blk) Source #

getMaxSlotNo ∷ ∀ m blk. (IOLike m, HasHeader (Header blk)) ⇒ ChainDbEnv m blk → STM m MaxSlotNo Source #

getTipBlock ∷ ∀ m blk. (IOLike m, HasHeader blk, HasHeader (Header blk)) ⇒ ChainDbEnv m blk → m (Maybe blk) Source #

getTipHeader ∷ ∀ m blk. (IOLike m, HasHeader blk, HasHeader (Header blk)) ⇒ ChainDbEnv m blk → m (Maybe (Header blk)) Source #

getTipPoint ∷ ∀ m blk. (IOLike m, HasHeader (Header blk)) ⇒ ChainDbEnv m blk → STM m (Point blk) Source #

Low-level queries

getAnyBlockComponent ∷ ∀ m blk b. IOLike m ⇒ ImmutableDB m blk → VolatileDB m blk → BlockComponent blk b → RealPoint blk → m (Maybe b) Source #

Get a block component from either the immutable DB or volatile DB.

Returns Nothing if the Point is unknown. Throws NoGenesisBlockException if the Point refers to the genesis block.

getAnyKnownBlock ∷ ∀ m blk. (IOLike m, HasHeader blk) ⇒ ImmutableDB m blk → VolatileDB m blk → RealPoint blk → m blk Source #

Variant of getAnyBlockComponent instantiated with GetBlock.

getAnyKnownBlockComponent ∷ ∀ m blk b. (IOLike m, HasHeader blk) ⇒ ImmutableDB m blk → VolatileDB m blk → BlockComponent blk b → RealPoint blk → m b Source #

Wrapper around getAnyBlockComponent for blocks we know should exist.

If the block does not exist, this indicates disk failure.