Adds a new btck_BlockHeader type and associated functions to create, access, and validate block headers. Block headers will have their own type (btck_BlockHeader) that can be created from raw data, copied, and queried for all the standard header fields (hash, prev hash, timestamp, bits, version, nonce). We can also extract headers from full blocks or block tree entries.
New Block Header API
btck_BlockHeadertype: Opaque handle for block headers- Header methods:
-
btck_block_header_create(): Create header from 80-byte serialized data -
btck_block_header_copy(): Copy block headers -
btck_block_header_destroy(): Destroy header object -
btck_block_header_get_hash(): Calculate block hash -
btck_block_header_get_prev_hash(): Get previous block hash -
btck_block_header_get_timestamp(): Get block timestamp -
btck_block_header_get_bits(): Get difficulty target (compact format) -
btck_block_header_get_version(): Get block version -
btck_block_header_get_nonce(): Get proof-of-work nonce -
btck_block_get_header(): Extract header from a full block -
btck_block_tree_entry_get_block_header(): Get header associated with a block tree entry
-
Testing
Added tests in test_kernel.cpp that cover creating headers from raw data, extracting all header fields, and processing headers through the chainstate manager.