From 67fea3f61b7a120910ed87230118006f231c2ff4 Mon Sep 17 00:00:00 2001 From: evoskuil Date: Mon, 22 Jun 2026 15:16:04 -0400 Subject: [PATCH 1/3] Bump vc145 to UltrafastSecp256k1-vc145.4.4.0.2 --- .../vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj | 4 ++-- builds/msvc/vs2026/libbitcoin-node-test/packages.config | 2 +- builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj | 4 ++-- builds/msvc/vs2026/libbitcoin-node/packages.config | 2 +- src/chasers/chaser_validate_batch.cpp | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj index 3b8db655..0a28325b 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-node-test/libbitcoin-node-test.vcxproj @@ -161,7 +161,7 @@ - + @@ -177,7 +177,7 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-node-test/packages.config b/builds/msvc/vs2026/libbitcoin-node-test/packages.config index 3b42d1f3..65fc2d20 100644 --- a/builds/msvc/vs2026/libbitcoin-node-test/packages.config +++ b/builds/msvc/vs2026/libbitcoin-node-test/packages.config @@ -6,7 +6,7 @@ | --> - + diff --git a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj index 3870e61d..326b95b0 100644 --- a/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-node/libbitcoin-node.vcxproj @@ -241,7 +241,7 @@ - + @@ -256,7 +256,7 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-node/packages.config b/builds/msvc/vs2026/libbitcoin-node/packages.config index cc1fb9a3..a4bd03fd 100644 --- a/builds/msvc/vs2026/libbitcoin-node/packages.config +++ b/builds/msvc/vs2026/libbitcoin-node/packages.config @@ -6,7 +6,7 @@ | --> - + diff --git a/src/chasers/chaser_validate_batch.cpp b/src/chasers/chaser_validate_batch.cpp index a269929f..6c558707 100644 --- a/src/chasers/chaser_validate_batch.cpp +++ b/src/chasers/chaser_validate_batch.cpp @@ -103,7 +103,7 @@ void chaser_validate::process_batch(bool residual) NOEXCEPT const auto start = network::logger::now(); if (!query.verify_ecdsa_signatures(stopping_, invalids)) { - // False return implies canceled (only). + LOGN("Batch verify ecdsa canceled (" << ecdsa << ")."); return; } @@ -128,7 +128,7 @@ void chaser_validate::process_batch(bool residual) NOEXCEPT const auto start = network::logger::now(); if (!query.verify_schnorr_signatures(stopping_, invalids)) { - // False return implies canceled (only). + LOGN("Batch verify schnorr canceled (" << schnorr << ")."); return; } From 7780603236d725ff14880cb68494f46e8769a625 Mon Sep 17 00:00:00 2001 From: evoskuil Date: Mon, 22 Jun 2026 15:19:33 -0400 Subject: [PATCH 2/3] Update Link.props with ClCompile.EnableCOMDATFolding = true. --- builds/msvc/properties/Link.props | 1 + 1 file changed, 1 insertion(+) diff --git a/builds/msvc/properties/Link.props b/builds/msvc/properties/Link.props index db15fbb4..1323369c 100644 --- a/builds/msvc/properties/Link.props +++ b/builds/msvc/properties/Link.props @@ -9,6 +9,7 @@ true + true UseLinkTimeCodeGeneration From c6c6559eb24ab8606b522cc1b13119033dcf7048 Mon Sep 17 00:00:00 2001 From: evoskuil Date: Tue, 23 Jun 2026 14:45:44 -0400 Subject: [PATCH 3/3] Write batch completions in a parallel loop. --- src/chasers/chaser_validate_batch.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/chasers/chaser_validate_batch.cpp b/src/chasers/chaser_validate_batch.cpp index 6c558707..ef6360bc 100644 --- a/src/chasers/chaser_validate_batch.cpp +++ b/src/chasers/chaser_validate_batch.cpp @@ -18,6 +18,7 @@ */ #include +#include #include #include #include @@ -203,25 +204,31 @@ bool chaser_validate::process_valids(bool residual) NOEXCEPT BC_ASSERT(stranded()); auto& query = archive(); - for (const auto& link: batched_) + std::atomic_bool fault{}; + constexpr auto parallel = poolstl::execution::par; + + std::for_each(parallel, batched_.cbegin(), batched_.cend(), + [&](auto link) NOEXCEPT { - // Terminal links are previously set invalid (to be skipped). + // terminal links are previously set invalid (to be skipped). if (link == header_link::terminal) - continue; + return; size_t height{}; - if (!query.get_height(height, link) || - !query.set_block_valid(link)) - return false; + if (!query.get_height(height, link) || !query.set_block_valid(link)) + { + fault.store(true); + return; + } notify_block(system::error::success, height, link, false); - } + }); batched_.clear(); if (residual) batched_.shrink_to_fit(); - return true; + return fault.load(); } BC_POP_WARNING()