mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-10 06:39:15 +02:00
Merge bitcoin/bitcoin#30742: kernel: Use spans instead of vectors for passing block headers to validation functions
a2955f0979validation: Use span for ImportBlocks paths (TheCharlatan)20515ea3f5validation: Use span for CalculateClaimedHeadersWork (TheCharlatan)52575e96e7validation: Use span for ProcessNewBlockHeaders (TheCharlatan) Pull request description: Makes it friendlier for potential future users of the kernel library if they do not store the headers in a std::vector, but can guarantee contiguous memory. Take this opportunity to also change the argument of ImportBlocks previously taking a `std::vector` to a `std::span`. ACKs for top commit: stickies-v: re-ACKa2955f0979- no changes except further walking the ~file~ path of modernizing variable names. maflcko: ACKa2955f0979🕑 achow101: ACKa2955f0979danielabrozzoni: ACKa2955f0979Tree-SHA512: 8b07f4ad26e270b65600d1968cd78847b85caca5bfbb83fd9860389f26656b1d9a40b85e0990339f50403d18cedcd2456990054f3b8b0bedce943e50222d2709
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <set>
|
||||
#include <span>
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
@@ -407,7 +408,7 @@ bool HasValidProofOfWork(const std::vector<CBlockHeader>& headers, const Consens
|
||||
bool IsBlockMutated(const CBlock& block, bool check_witness_root);
|
||||
|
||||
/** Return the sum of the claimed work on a given set of headers. No verification of PoW is done. */
|
||||
arith_uint256 CalculateClaimedHeadersWork(const std::vector<CBlockHeader>& headers);
|
||||
arith_uint256 CalculateClaimedHeadersWork(std::span<const CBlockHeader> headers);
|
||||
|
||||
enum class VerifyDBResult {
|
||||
SUCCESS,
|
||||
@@ -1217,12 +1218,12 @@ public:
|
||||
* May not be called in a
|
||||
* validationinterface callback.
|
||||
*
|
||||
* @param[in] block The block headers themselves
|
||||
* @param[in] headers The block headers themselves
|
||||
* @param[in] min_pow_checked True if proof-of-work anti-DoS checks have been done by caller for headers chain
|
||||
* @param[out] state This may be set to an Error state if any error occurred processing them
|
||||
* @param[out] ppindex If set, the pointer will be set to point to the last new block index object for the given headers
|
||||
*/
|
||||
bool ProcessNewBlockHeaders(const std::vector<CBlockHeader>& block, bool min_pow_checked, BlockValidationState& state, const CBlockIndex** ppindex = nullptr) LOCKS_EXCLUDED(cs_main);
|
||||
bool ProcessNewBlockHeaders(std::span<const CBlockHeader> headers, bool min_pow_checked, BlockValidationState& state, const CBlockIndex** ppindex = nullptr) LOCKS_EXCLUDED(cs_main);
|
||||
|
||||
/**
|
||||
* Sufficiently validate a block for disk storage (and store on disk).
|
||||
|
||||
Reference in New Issue
Block a user