From 81d99dbf091a0c64af0fa7b196621e18ace739bf Mon Sep 17 00:00:00 2001 From: evoskuil Date: Tue, 22 Oct 2024 15:18:19 -0400 Subject: [PATCH 1/4] Remove chaser_populate. --- Makefile.am | 3 - builds/cmake/CMakeLists.txt | 2 - .../libbitcoin-node-test.vcxproj | 1 - .../libbitcoin-node-test.vcxproj.filters | 3 - .../libbitcoin-node/libbitcoin-node.vcxproj | 2 - .../libbitcoin-node.vcxproj.filters | 6 - include/bitcoin/node.hpp | 1 - .../bitcoin/node/chasers/chaser_populate.hpp | 67 ---------- include/bitcoin/node/chasers/chasers.hpp | 1 - include/bitcoin/node/full_node.hpp | 13 -- include/bitcoin/node/protocols/protocol.hpp | 12 -- include/bitcoin/node/sessions/session.hpp | 12 -- src/chasers/chaser_populate.cpp | 117 ------------------ src/full_node.cpp | 58 ++++----- src/protocols/protocol.cpp | 15 --- src/protocols/protocol_block_in_31800.cpp | 1 - src/sessions/session.cpp | 15 --- test/chasers/chaser_populate.cpp | 28 ----- 18 files changed, 24 insertions(+), 333 deletions(-) delete mode 100644 include/bitcoin/node/chasers/chaser_populate.hpp delete mode 100644 src/chasers/chaser_populate.cpp delete mode 100644 test/chasers/chaser_populate.cpp diff --git a/Makefile.am b/Makefile.am index 99c0ca6a4..276b7c261 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,7 +47,6 @@ src_libbitcoin_node_la_SOURCES = \ src/chasers/chaser_check.cpp \ src/chasers/chaser_confirm.cpp \ src/chasers/chaser_header.cpp \ - src/chasers/chaser_populate.cpp \ src/chasers/chaser_snapshot.cpp \ src/chasers/chaser_storage.cpp \ src/chasers/chaser_template.cpp \ @@ -95,7 +94,6 @@ test_libbitcoin_node_test_SOURCES = \ test/chasers/chaser_check.cpp \ test/chasers/chaser_confirm.cpp \ test/chasers/chaser_header.cpp \ - test/chasers/chaser_populate.cpp \ test/chasers/chaser_template.cpp \ test/chasers/chaser_transaction.cpp \ test/chasers/chaser_validate.cpp \ @@ -149,7 +147,6 @@ include_bitcoin_node_chasers_HEADERS = \ include/bitcoin/node/chasers/chaser_confirm.hpp \ include/bitcoin/node/chasers/chaser_header.hpp \ include/bitcoin/node/chasers/chaser_organize.hpp \ - include/bitcoin/node/chasers/chaser_populate.hpp \ include/bitcoin/node/chasers/chaser_snapshot.hpp \ include/bitcoin/node/chasers/chaser_storage.hpp \ include/bitcoin/node/chasers/chaser_template.hpp \ diff --git a/builds/cmake/CMakeLists.txt b/builds/cmake/CMakeLists.txt index 62d3b6046..8e7b2f966 100644 --- a/builds/cmake/CMakeLists.txt +++ b/builds/cmake/CMakeLists.txt @@ -257,7 +257,6 @@ add_library( ${CANONICAL_LIB_NAME} "../../src/chasers/chaser_check.cpp" "../../src/chasers/chaser_confirm.cpp" "../../src/chasers/chaser_header.cpp" - "../../src/chasers/chaser_populate.cpp" "../../src/chasers/chaser_snapshot.cpp" "../../src/chasers/chaser_storage.cpp" "../../src/chasers/chaser_template.cpp" @@ -335,7 +334,6 @@ if (with-tests) "../../test/chasers/chaser_check.cpp" "../../test/chasers/chaser_confirm.cpp" "../../test/chasers/chaser_header.cpp" - "../../test/chasers/chaser_populate.cpp" "../../test/chasers/chaser_template.cpp" "../../test/chasers/chaser_transaction.cpp" "../../test/chasers/chaser_validate.cpp" diff --git a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj index 95c230f12..959a36ca5 100644 --- a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj @@ -77,7 +77,6 @@ - diff --git a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters index c05046efe..a4d2ec31a 100644 --- a/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters @@ -42,9 +42,6 @@ src\chasers - - src\chasers - src\chasers diff --git a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj index 8ecdb8511..70ce90855 100644 --- a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj @@ -80,7 +80,6 @@ - @@ -119,7 +118,6 @@ - diff --git a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters index 650698e2f..9ade18194 100644 --- a/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters @@ -69,9 +69,6 @@ src\chasers - - src\chasers - src\chasers @@ -182,9 +179,6 @@ include\bitcoin\node\chasers - - include\bitcoin\node\chasers - include\bitcoin\node\chasers diff --git a/include/bitcoin/node.hpp b/include/bitcoin/node.hpp index 8e62d4635..36225ce56 100644 --- a/include/bitcoin/node.hpp +++ b/include/bitcoin/node.hpp @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/include/bitcoin/node/chasers/chaser_populate.hpp b/include/bitcoin/node/chasers/chaser_populate.hpp deleted file mode 100644 index 9d0d9e948..000000000 --- a/include/bitcoin/node/chasers/chaser_populate.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (c) 2011-2023 libbitcoin developers (see AUTHORS) - * - * This file is part of libbitcoin. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -#ifndef LIBBITCOIN_NODE_CHASERS_CHASER_POPULATE_HPP -#define LIBBITCOIN_NODE_CHASERS_CHASER_POPULATE_HPP - -#include -#include -#include -#include -#include - -namespace libbitcoin { -namespace node { - -class full_node; - -/// Order and populate downloaded non-bypass blocks for validation. -class BCN_API chaser_populate - : public chaser -{ -public: - DELETE_COPY_MOVE_DESTRUCT(chaser_populate); - - chaser_populate(full_node& node) NOEXCEPT; - - /// Initialize chaser state. - code start() NOEXCEPT override; - - /// Populate a candidate block for validation. - virtual void populate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height, - network::result_handler&& complete) NOEXCEPT; - -protected: - virtual bool handle_event(const code& ec, chase event_, - event_value value) NOEXCEPT; - - virtual void do_populate(const system::chain::block::cptr& block, - database::header_link::integer link, size_t height, - const network::result_handler& complete) NOEXCEPT; - -private: - // These are protected by strand. - network::threadpool threadpool_; - network::asio::strand independent_strand_; -}; - -} // namespace node -} // namespace libbitcoin - -#endif diff --git a/include/bitcoin/node/chasers/chasers.hpp b/include/bitcoin/node/chasers/chasers.hpp index 0948c632c..aba804fd2 100644 --- a/include/bitcoin/node/chasers/chasers.hpp +++ b/include/bitcoin/node/chasers/chasers.hpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include diff --git a/include/bitcoin/node/full_node.hpp b/include/bitcoin/node/full_node.hpp index c0b4e6bf5..069862336 100644 --- a/include/bitcoin/node/full_node.hpp +++ b/include/bitcoin/node/full_node.hpp @@ -102,18 +102,6 @@ class BCN_API full_node /// Unsubscribe from chaser events. virtual void unsubscribe_events(object_key key) NOEXCEPT; - /// Blocks. - /// ----------------------------------------------------------------------- - - /// Populate a candidate block for validation. - virtual void populate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height, - network::result_handler&& complete) NOEXCEPT; - - /// Validate a populated candidate block. - virtual void validate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height) NOEXCEPT; - /// Suspensions. /// ----------------------------------------------------------------------- @@ -180,7 +168,6 @@ class BCN_API full_node chaser_block chaser_block_; chaser_header chaser_header_; chaser_check chaser_check_; - chaser_populate chaser_populate_; chaser_validate chaser_validate_; chaser_confirm chaser_confirm_; chaser_transaction chaser_transaction_; diff --git a/include/bitcoin/node/protocols/protocol.hpp b/include/bitcoin/node/protocols/protocol.hpp index edd83550b..85132d5e4 100644 --- a/include/bitcoin/node/protocols/protocol.hpp +++ b/include/bitcoin/node/protocols/protocol.hpp @@ -97,18 +97,6 @@ class BCN_API protocol /// Get the subscription key (for notify_one). virtual object_key events_key() const NOEXCEPT; - /// Blocks. - /// ----------------------------------------------------------------------- - - /// Populate a candidate block for validation. - virtual void populate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height, - network::result_handler&& complete) NOEXCEPT; - - /// Validate a populated candidate block. - virtual void validate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height) NOEXCEPT; - /// Properties. /// ----------------------------------------------------------------------- diff --git a/include/bitcoin/node/sessions/session.hpp b/include/bitcoin/node/sessions/session.hpp index ee22572da..3291bb145 100644 --- a/include/bitcoin/node/sessions/session.hpp +++ b/include/bitcoin/node/sessions/session.hpp @@ -74,18 +74,6 @@ class BCN_API session /// Unsubscribe from chaser events. virtual void unsubscribe_events(object_key key) NOEXCEPT; - /// Blocks. - /// ----------------------------------------------------------------------- - - /// Populate a candidate block for validation. - virtual void populate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height, - network::result_handler&& complete) NOEXCEPT; - - /// Validate a populated candidate block. - virtual void validate(const system::chain::block::cptr& block, - const database::header_link& link, size_t height) NOEXCEPT; - /// Methods. /// ----------------------------------------------------------------------- diff --git a/src/chasers/chaser_populate.cpp b/src/chasers/chaser_populate.cpp deleted file mode 100644 index 6eb44f75f..000000000 --- a/src/chasers/chaser_populate.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright (c) 2011-2024 libbitcoin developers (see AUTHORS) - * - * This file is part of libbitcoin. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -#include - -#include -#include -#include -#include -#include -#include - -namespace libbitcoin { -namespace node { - -#define CLASS chaser_populate - -using namespace system; -using namespace system::chain; -using namespace database; -using namespace std::placeholders; - -BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT) - -chaser_populate::chaser_populate(full_node& node) NOEXCEPT - : chaser(node), - threadpool_(std::max(node.config().node.threads, 1_u32)), - independent_strand_(threadpool_.service().get_executor()) -{ -} - -// start/stop -// ---------------------------------------------------------------------------- - -code chaser_populate::start() NOEXCEPT -{ - SUBSCRIBE_EVENTS(handle_event, _1, _2, _3); - return error::success; -} - -bool chaser_populate::handle_event(const code&, chase event_, - event_value) NOEXCEPT -{ - if (closed()) - return false; - - switch (event_) - { - case chase::stop: - { - return false; - } - default: - { - break; - } - } - - return true; -} - -// populate -// ---------------------------------------------------------------------------- - -// Could also pass ctx. -void chaser_populate::populate(const block::cptr& block, - const header_link& link, size_t height, - network::result_handler&& complete) NOEXCEPT -{ - if (closed()) - return; - - // Unordered, but we may prefer to first populate from cache :|. - /*bool*/ ////archive().populate(*block); - - boost::asio::post(independent_strand_, - BIND(do_populate, block, link, height, std::move(complete))); -} - -void chaser_populate::do_populate(const block::cptr& block, - header_link::integer link, size_t height, - const network::result_handler& complete) NOEXCEPT -{ - BC_ASSERT(independent_strand_.running_in_this_thread()); - - // Previous blocks may not be archived. - /*bool*/ ////archive().populate(*block); - - // Use all closure parameters to ensure they aren't optimized out. - // Captured block is not deleted until closure over this method deletes. - if (block->is_valid() && is_nonzero(height) && - link != header_link::terminal) - { - // Notify coincident with delete ensures there is no cleanup backlog. - complete(error::success); - } -} - -BC_POP_WARNING() - -} // namespace node -} // namespace libbitcoin diff --git a/src/full_node.cpp b/src/full_node.cpp index 653678bdf..85b154a9b 100644 --- a/src/full_node.cpp +++ b/src/full_node.cpp @@ -45,7 +45,6 @@ full_node::full_node(query& query, const configuration& configuration, chaser_block_(*this), chaser_header_(*this), chaser_check_(*this), - chaser_populate_(*this), chaser_validate_(*this), chaser_confirm_(*this), chaser_transaction_(*this), @@ -78,28 +77,12 @@ void full_node::start(result_handler&& handler) NOEXCEPT void full_node::do_start(const result_handler& handler) NOEXCEPT { BC_ASSERT(stranded()); - code ec; - - subscribe_close([&](const code& ec) NOEXCEPT - { - chaser_header_.stopping(ec); - chaser_block_.stopping(ec); - chaser_check_.stopping(ec); - chaser_populate_.stopping(ec); - chaser_validate_.stopping(ec); - chaser_confirm_.stopping(ec); - chaser_transaction_.stopping(ec); - chaser_template_.stopping(ec); - chaser_snapshot_.stopping(ec); - chaser_storage_.stopping(ec); - return false; - }); + code ec{}; if (((ec = (config().node.headers_first ? chaser_header_.start() : chaser_block_.start()))) || ((ec = chaser_check_.start())) || - ((ec = chaser_populate_.start())) || ((ec = chaser_validate_.start())) || ((ec = chaser_confirm_.start())) || ((ec = chaser_transaction_.start())) || @@ -139,6 +122,17 @@ void full_node::do_run(const result_handler& handler) NOEXCEPT void full_node::close() NOEXCEPT { + // Block on chaser stop (including dedicated threadpool joins). + ////chaser_header_.stop(); + ////chaser_block_.stop(); + ////chaser_check_.stop(); + ////chaser_validate_.stop(); + ////chaser_confirm_.stop(); + ////chaser_transaction_.stop(); + ////chaser_template_.stop(); + ////chaser_snapshot_.stop(); + ////chaser_storage_.stop(); + // Base (p2p) invokes do_close(). p2p::close(); } @@ -147,6 +141,18 @@ void full_node::close() NOEXCEPT void full_node::do_close() NOEXCEPT { BC_ASSERT(stranded()); + + // Initiate chaser stopping (including dedicated threadpools). + ////chaser_header_.stopping(network::error::service_stopped); + ////chaser_block_.stopping(network::error::service_stopped); + ////chaser_check_.stopping(network::error::service_stopped); + ////chaser_validate_.stopping(network::error::service_stopped); + ////chaser_confirm_.stopping(network::error::service_stopped); + ////chaser_transaction_.stopping(network::error::service_stopped); + ////chaser_template_.stopping(network::error::service_stopped); + ////chaser_snapshot_.stopping(network::error::service_stopped); + ////chaser_storage_.stopping(network::error::service_stopped); + event_subscriber_.stop(network::error::service_stopped, chase::stop, {}); p2p::do_close(); } @@ -242,22 +248,6 @@ void full_node::unsubscribe_events(object_key key) NOEXCEPT notify_one(key, network::error::service_stopped, chase::stop, {}); } -// Blocks. -// ---------------------------------------------------------------------------- - -void full_node::populate(const chain::block::cptr& block, - const header_link& link, size_t height, - network::result_handler&& complete) NOEXCEPT -{ - chaser_populate_.populate(block, link, height, std::move(complete)); -} - -void full_node::validate(const chain::block::cptr& block, - const header_link& link, size_t height) NOEXCEPT -{ - chaser_validate_.validate(block, link, height); -} - // Suspensions. // ---------------------------------------------------------------------------- diff --git a/src/protocols/protocol.cpp b/src/protocols/protocol.cpp index df4c20deb..3db47af37 100644 --- a/src/protocols/protocol.cpp +++ b/src/protocols/protocol.cpp @@ -114,21 +114,6 @@ object_key protocol::events_key() const NOEXCEPT return key_; } -// Blocks. -// ---------------------------------------------------------------------------- - -void protocol::populate(const block::cptr& block, const header_link& link, - size_t height, network::result_handler&& complete) NOEXCEPT -{ - session_->populate(block, link, height, std::move(complete)); -} - -void protocol::validate(const block::cptr& block, const header_link& link, - size_t height) NOEXCEPT -{ - session_->validate(block, link, height); -} - // Methods. // ---------------------------------------------------------------------------- diff --git a/src/protocols/protocol_block_in_31800.cpp b/src/protocols/protocol_block_in_31800.cpp index c4e27d9da..04e2a1169 100644 --- a/src/protocols/protocol_block_in_31800.cpp +++ b/src/protocols/protocol_block_in_31800.cpp @@ -370,7 +370,6 @@ bool protocol_block_in_31800::handle_receive_block(const code& ec, LOGP("Downloaded block [" << encode_hash(hash) << ":" << height << "] from [" << authority() << "]."); - populate(block, link, height, BIND(complete, _1, block, height)); ////notify(ec, chase::checked, height); ////fire(events::block_archived, height); diff --git a/src/sessions/session.cpp b/src/sessions/session.cpp index 1fb619bff..71633063d 100644 --- a/src/sessions/session.cpp +++ b/src/sessions/session.cpp @@ -103,21 +103,6 @@ void session::unsubscribe_events(object_key key) NOEXCEPT node_.unsubscribe_events(key); } -// Blocks. -// ---------------------------------------------------------------------------- - -void session::populate(const block::cptr& block, const header_link& link, - size_t height, network::result_handler&& complete) NOEXCEPT -{ - node_.populate(block, link, height, std::move(complete)); -} - -void session::validate(const block::cptr& block, const header_link& link, - size_t height) NOEXCEPT -{ - node_.validate(block, link, height); -} - // Methods. // ---------------------------------------------------------------------------- diff --git a/test/chasers/chaser_populate.cpp b/test/chasers/chaser_populate.cpp deleted file mode 100644 index b1cbc3337..000000000 --- a/test/chasers/chaser_populate.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Copyright (c) 2011-2023 libbitcoin developers (see AUTHORS) - * - * This file is part of libbitcoin. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -#include "../test.hpp" - -BOOST_AUTO_TEST_SUITE(chaser_populate_tests) - -BOOST_AUTO_TEST_CASE(chaser_populate_test) -{ - BOOST_REQUIRE(true); -} - -BOOST_AUTO_TEST_SUITE_END() From f173afd79f82bc9fa06d43f9807d5799caac4585 Mon Sep 17 00:00:00 2001 From: evoskuil Date: Tue, 22 Oct 2024 15:49:59 -0400 Subject: [PATCH 2/4] Bump default milestone to 840,000 (last halving) in parser comments. --- src/parser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser.cpp b/src/parser.cpp index 6e31098a4..82013d9a3 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -440,7 +440,7 @@ options_metadata parser::load_settings() THROWS ( "bitcoin.milestone", value(&configured.bitcoin.milestone), - "A block presumed to be valid but not required to be present, defaults to 00000000000000000001a0a448d6cf2546b06801389cc030b2b18c6491266815:804000." + "A block presumed to be valid but not required to be present, defaults to 0000000000000000000320283a032748cef8227873ff4872689bf23f1cda83a5:840000." ) ( "bitcoin.minimum_work", From c13f7453f7fd905df1fcc844ce0ea356481ab1df Mon Sep 17 00:00:00 2001 From: evoskuil Date: Tue, 22 Oct 2024 15:53:47 -0400 Subject: [PATCH 3/4] Guarantee nodiscard warning override in exception test. --- test/block_arena.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/block_arena.cpp b/test/block_arena.cpp index 8cbe9a74e..fbccb9323 100644 --- a/test/block_arena.cpp +++ b/test/block_arena.cpp @@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE(block_arena__start__multiple_overflow__throws_allocation_ex accessor instance{ two }; BC_PUSH_WARNING(DISCARDING_NON_DISCARDABLE) - BOOST_REQUIRE_THROW(instance.start(max_size_t), allocation_exception); + BOOST_REQUIRE_THROW(static_cast(instance.start(max_size_t)), allocation_exception); BC_POP_WARNING() } From a7f41c76c3f6a61514a5964f58287a8739138a1d Mon Sep 17 00:00:00 2001 From: evoskuil Date: Tue, 22 Oct 2024 16:22:50 -0400 Subject: [PATCH 4/4] Align -t scan with configured maximum_height, comments. --- console/executor.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/console/executor.cpp b/console/executor.cpp index 8df57b7b2..3aea321b7 100644 --- a/console/executor.cpp +++ b/console/executor.cpp @@ -738,9 +738,7 @@ void executor::read_test() const { logger("Wire size computation."); const auto start = fine_clock::now(); - - ////constexpr auto last = 500'000_size; - const auto last = query_.get_top_candidate(); + const auto last = metadata_.configured.node.maximum_height; size_t size{}; for (auto height = zero; !cancel_ && height <= last; ++height) @@ -1344,23 +1342,13 @@ void executor::read_test() const //// return; ////} //// - ////database::context context{}; - ////if (!query_.get_context(context, bk_link)) + ////chain::context ctx{}; + ////if (!query_.get_context(ctx, bk_link)) ////{ - //// logger("!query_.get_context(context, bk_link)"); + //// logger("!query_.get_context(ctx, bk_link)"); //// return; ////} //// - ////const chain::context ctx - ////{ - //// context.flags, - //// {}, - //// context.mtp, - //// context.height, - //// {}, - //// {} - ////}; - //// ////if (!query_.populate_with_metadata(*tx)) ////{ //// logger("!query_.populate_with_metadata(*tx)");