From a76f6d2ae59f0c411c6074a55e5173020fbec12f Mon Sep 17 00:00:00 2001 From: Eric Voskuil Date: Fri, 14 Aug 2026 16:44:30 -0400 Subject: [PATCH 1/3] Call set_current() on p2p channels. --- include/bitcoin/node/protocols/protocol_peer.hpp | 6 ++++++ src/protocols/protocol_block_in_31800.cpp | 1 + src/protocols/protocol_peer.cpp | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/include/bitcoin/node/protocols/protocol_peer.hpp b/include/bitcoin/node/protocols/protocol_peer.hpp index 3000ce16..e5973a56 100644 --- a/include/bitcoin/node/protocols/protocol_peer.hpp +++ b/include/bitcoin/node/protocols/protocol_peer.hpp @@ -91,6 +91,12 @@ class BCN_API protocol_peer /// Determine if outgoing block or tx was previously announced by peer. virtual bool was_announced(const system::hash_digest&) const NOEXCEPT; + /// Currency. + /// ----------------------------------------------------------------------- + + /// Set chain currency, which is not latched (channel buffer policy). + virtual void set_current(bool value) NOEXCEPT; + /// Events notification. /// ----------------------------------------------------------------------- diff --git a/src/protocols/protocol_block_in_31800.cpp b/src/protocols/protocol_block_in_31800.cpp index 12a408fa..4a783159 100644 --- a/src/protocols/protocol_block_in_31800.cpp +++ b/src/protocols/protocol_block_in_31800.cpp @@ -353,6 +353,7 @@ bool protocol_block_in_31800::handle_receive_block(const code& ec, fire(events::block_archived, height); count(block.serialized_size(true)); + set_current(is_current_chain(true)); map_->erase(it); if (is_idle()) { diff --git a/src/protocols/protocol_peer.cpp b/src/protocols/protocol_peer.cpp index 7c9bb82d..b595400d 100644 --- a/src/protocols/protocol_peer.cpp +++ b/src/protocols/protocol_peer.cpp @@ -80,6 +80,11 @@ void protocol_peer::set_announced(const system::hash_digest& hash) NOEXCEPT channel_->set_announced(hash); } +void protocol_peer::set_current(bool value) NOEXCEPT +{ + channel_->set_current(value); +} + bool protocol_peer::was_announced(const system::hash_digest& hash) const NOEXCEPT { return channel_->was_announced(hash); From e661cc9a40cee8dedf281d5d298bb18cfd2b4f89 Mon Sep 17 00:00:00 2001 From: Eric Voskuil Date: Fri, 14 Aug 2026 23:49:13 -0400 Subject: [PATCH 2/3] Adapt to store p2p message changes. --- include/bitcoin/node/messages/block.hpp | 1 - include/bitcoin/node/messages/transaction.hpp | 1 - src/messages/block.cpp | 1 - src/messages/transaction.cpp | 1 - 4 files changed, 4 deletions(-) diff --git a/include/bitcoin/node/messages/block.hpp b/include/bitcoin/node/messages/block.hpp index 6d4a9447..0823ed46 100644 --- a/include/bitcoin/node/messages/block.hpp +++ b/include/bitcoin/node/messages/block.hpp @@ -30,7 +30,6 @@ struct BCN_API block { typedef std::shared_ptr cptr; - static const network::messages::peer::identifier id; static const std::string command; static const uint32_t version_minimum; static const uint32_t version_maximum; diff --git a/include/bitcoin/node/messages/transaction.hpp b/include/bitcoin/node/messages/transaction.hpp index f96870ab..11c3fa29 100644 --- a/include/bitcoin/node/messages/transaction.hpp +++ b/include/bitcoin/node/messages/transaction.hpp @@ -31,7 +31,6 @@ struct BCN_API transaction { typedef std::shared_ptr cptr; - static const network::messages::peer::identifier id; static const std::string command; static const uint32_t version_minimum; static const uint32_t version_maximum; diff --git a/src/messages/block.cpp b/src/messages/block.cpp index 65e429ae..196249f7 100644 --- a/src/messages/block.cpp +++ b/src/messages/block.cpp @@ -28,7 +28,6 @@ using namespace system; using namespace network::messages::peer; const std::string block::command = "block"; -const identifier block::id = identifier::block; const uint32_t block::version_minimum = level::minimum_protocol; const uint32_t block::version_maximum = level::maximum_protocol; diff --git a/src/messages/transaction.cpp b/src/messages/transaction.cpp index dbf3946d..0a0359ff 100644 --- a/src/messages/transaction.cpp +++ b/src/messages/transaction.cpp @@ -28,7 +28,6 @@ using namespace system; using namespace network::messages::peer; const std::string transaction::command = "tx"; -const identifier transaction::id = identifier::transaction; const uint32_t transaction::version_minimum = level::minimum_protocol; const uint32_t transaction::version_maximum = level::maximum_protocol; From 302fbcbcb455b4edf772aebbf1426048211faf4b Mon Sep 17 00:00:00 2001 From: Eric Voskuil Date: Sat, 15 Aug 2026 00:27:10 -0400 Subject: [PATCH 3/3] Pass prune to block writer. --- src/protocols/protocol_block_in_31800.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/protocols/protocol_block_in_31800.cpp b/src/protocols/protocol_block_in_31800.cpp index 4a783159..3b0ff400 100644 --- a/src/protocols/protocol_block_in_31800.cpp +++ b/src/protocols/protocol_block_in_31800.cpp @@ -334,7 +334,10 @@ bool protocol_block_in_31800::handle_receive_block(const code& ec, // Commit block.txs. // ........................................................................ - if (const auto code = query.set_code(block, link, checked, bypass, height)) + // Pruned nodes do not store input script or witness under bypass. + const auto prune = bypass && node_pruned_; + if (const auto code = query.set_code(block, link, checked, bypass, height, + prune)) { LOGF("Failure storing block [" << encode_hash(hash) << ":" << height << "] from [" << opposite() << "] " << code.message());