From 8b9d30e3facff0cd132dc3faf6282d75b1f9b532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C5=91rinc?= Date: Wed, 21 Jan 2026 23:22:22 +0100 Subject: [PATCH] bench/test: clarify merkle bench and witness test intent Follow-up to bitcoin/bitcoin#32497. Clarify why the witness merkle test uses an odd leaf count (it exercises leaf duplication in `ComputeMerkleRoot()`), and make the coinbase witness hash initialization explicit. Also simplify the leaf-copy loop in the MerkleRoot benchmark for readability. No production code is changed in this follow-up, for simplicity and safety. Co-authored-by: w0xlt <94266259+w0xlt@users.noreply.github.com> --- src/bench/merkle_root.cpp | 4 ++-- src/test/merkle_tests.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bench/merkle_root.cpp b/src/bench/merkle_root.cpp index 0f59ccf81c4..17f7fa8691c 100644 --- a/src/bench/merkle_root.cpp +++ b/src/bench/merkle_root.cpp @@ -25,8 +25,8 @@ static void MerkleRoot(benchmark::Bench& bench) bench.name(mutate ? "MerkleRootWithMutation" : "MerkleRoot").batch(hashes.size()).unit("leaf").run([&] { std::vector leaves; leaves.reserve((hashes.size() + 1) & ~1ULL); // capacity rounded up to even - for (size_t s = 0; s < hashes.size(); s++) { - leaves.push_back(hashes[s]); + for (const auto& hash : hashes) { + leaves.push_back(hash); } bool mutated{false}; diff --git a/src/test/merkle_tests.cpp b/src/test/merkle_tests.cpp index 347261df275..dc4791419e7 100644 --- a/src/test/merkle_tests.cpp +++ b/src/test/merkle_tests.cpp @@ -243,7 +243,8 @@ BOOST_AUTO_TEST_CASE(merkle_test_BlockWitness) uint256 blockWitness = BlockWitnessMerkleRoot(block); std::vector hashes; - hashes.resize(vtx_count); // Note: leaving odd count to exercise old behavior + hashes.resize(vtx_count); // Odd count exercises leaf duplication in ComputeMerkleRoot (which can append one extra hash). + hashes[0] = uint256::ZERO; // The witness hash of the coinbase is 0. for (size_t pos{1}; pos < vtx_count; ++pos) { hashes[pos] = block.vtx[pos]->GetWitnessHash().ToUint256(); }