node::BlockManager::GetFirstBlock

Returns the earliest block with specified status_mask flags set after the latest block not having those flags.

Synopsis

Declared in <node/blockstorage.h>

[[requires_capability(0x7f2e1b0997e8), requires_capability(0x7f2e26d1af48), requires_capability(0x7f2e375e1028), requires_capability(0x7f2e333683e8), requires_capability(0x7f2e3542f3d8), requires_capability(0x7f2e28a73f38)]]
CBlockIndex const&
GetFirstBlock(
    CBlockIndex const& upper_block,
    uint32_t status_mask,
    CBlockIndex const* lower_block = nullptr) const;

Description

This function starts from upper_block, which must have all status_mask flags set, and iterates backwards through its ancestors. It continues as long as each block has all status_mask flags set, until reaching the oldest ancestor or lower_block.

Return Value

A reference to the earliest block between upper_block and lower_block, inclusive, such that every block between the returned block and upper_block has status_mask flags set.

Parameters

NameDescription
upper_blockThe starting block for the search, which must have all status_mask flags set.
status_maskBitmask specifying required status flags.
lower_blockThe earliest possible block to return. If null, the search can extend to the genesis block.

Preconditions

  • upper_block must have all status_mask flags set.
  • lower_block must be null or an ancestor of upper_block