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/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/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; diff --git a/src/protocols/protocol_block_in_31800.cpp b/src/protocols/protocol_block_in_31800.cpp index 12a408fa..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()); @@ -353,6 +356,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);