kernel: expose btck_block_tree_entry_get_ancestor

Allows callers to jump to any ancestor of a block tree entry by height
using the skiplist-backed GetAncestor, which runs in O(log N) rather
than walking back one entry at a time with btck_block_tree_entry_get_previous.

Includes a C++ convenience wrapper and tests in btck_block_tree_entry_tests.
This commit is contained in:
Peter Zafonte
2026-03-20 15:14:33 -04:00
parent 390e7d61bd
commit df44afdc98
4 changed files with 29 additions and 0 deletions

View File

@@ -885,6 +885,13 @@ const btck_BlockTreeEntry* btck_block_tree_entry_get_previous(const btck_BlockTr
return btck_BlockTreeEntry::ref(btck_BlockTreeEntry::get(entry).pprev);
}
const btck_BlockTreeEntry* btck_block_tree_entry_get_ancestor(const btck_BlockTreeEntry* block_tree_entry, int32_t height)
{
const auto* ancestor{btck_BlockTreeEntry::get(block_tree_entry).GetAncestor(height)};
assert(ancestor);
return btck_BlockTreeEntry::ref(ancestor);
}
btck_BlockValidationState* btck_block_validation_state_create()
{
return btck_BlockValidationState::create();