diff --git a/include/bitcoin/node/chasers/chaser_block.hpp b/include/bitcoin/node/chasers/chaser_block.hpp index 0f7f527e..5a6f4e20 100644 --- a/include/bitcoin/node/chasers/chaser_block.hpp +++ b/include/bitcoin/node/chasers/chaser_block.hpp @@ -67,7 +67,8 @@ class BCN_API chaser_block private: void set_prevout(const system::chain::input& input) const NOEXCEPT; - bool populate(const system::chain::block& block) const NOEXCEPT; + bool populate(const system::chain::block& block, + const system::chain::context& ctx) const NOEXCEPT; private: // These are thread safe. diff --git a/include/bitcoin/node/error.hpp b/include/bitcoin/node/error.hpp index 0de29afa..aa648f7f 100644 --- a/include/bitcoin/node/error.hpp +++ b/include/bitcoin/node/error.hpp @@ -97,8 +97,7 @@ enum error_t : uint8_t confirm9, confirm10, confirm11, - confirm12, - confirm13 + confirm12 }; // No current need for error_code equivalence mapping. diff --git a/src/chasers/chaser_block.cpp b/src/chasers/chaser_block.cpp index 857c0cf7..99336779 100644 --- a/src/chasers/chaser_block.cpp +++ b/src/chasers/chaser_block.cpp @@ -115,7 +115,7 @@ code chaser_block::validate(const block& block, if (((ec = block.check())) || ((ec = block.check(ctx)))) return ec; - if (!populate(block)) + if (!populate(block, ctx)) return system::error::missing_previous_output; if ((ec = block.accept(ctx, @@ -204,9 +204,10 @@ void chaser_block::set_prevout(const input& input) const NOEXCEPT } // Populate prevouts from self/tree/store (without metadata). -bool chaser_block::populate(const block& block) const NOEXCEPT +bool chaser_block::populate(const block& block, + const chain::context& ctx) const NOEXCEPT { - block.populate(); + block.populate(ctx); const auto& ins = *block.inputs_ptr(); std::ranges::for_each(ins, [&](const auto& in) NOEXCEPT diff --git a/src/chasers/chaser_confirm.cpp b/src/chasers/chaser_confirm.cpp index 398cef18..0f701f18 100644 --- a/src/chasers/chaser_confirm.cpp +++ b/src/chasers/chaser_confirm.cpp @@ -279,29 +279,23 @@ void chaser_confirm::organize(header_states& fork, const header_links& popped, handle_event(error::success, chase::bump, height_t{}); } -bool chaser_confirm::confirm_block(const header_link& link, - size_t height, const header_links& popped, size_t fork_point) NOEXCEPT +bool chaser_confirm::confirm_block(const header_link& link, size_t height, + const header_links& popped, size_t fork_point) NOEXCEPT { BC_ASSERT(stranded()); auto& query = archive(); if (const auto ec = query.block_confirmable(link)) { - if (!query.set_unstrong(link)) - { - fault(error::confirm9); - return false; - } - if (!query.set_block_unconfirmable(link)) { - fault(error::confirm10); + fault(error::confirm9); return false; } if (!roll_back(popped, fork_point, sub1(height))) { - fault(error::confirm11); + fault(error::confirm10); return false; } @@ -311,13 +305,13 @@ bool chaser_confirm::confirm_block(const header_link& link, // Before set_block_confirmable. if (!query.set_filter_head(link)) { - fault(error::confirm12); + fault(error::confirm11); return false; } if (!query.set_block_confirmable(link)) { - fault(error::confirm13); + fault(error::confirm12); return false; } diff --git a/src/chasers/chaser_validate.cpp b/src/chasers/chaser_validate.cpp index 17cd92ce..49ca84d8 100644 --- a/src/chasers/chaser_validate.cpp +++ b/src/chasers/chaser_validate.cpp @@ -255,7 +255,7 @@ code chaser_validate::populate(bool bypass, const chain::block& block, if (bypass) { // Populating for filters only (no validation metadata required). - block.populate(); + block.populate(ctx); if (!query.populate_without_metadata(block)) return system::error::missing_previous_output; } @@ -263,7 +263,7 @@ code chaser_validate::populate(bool bypass, const chain::block& block, { // Internal maturity and time locks are verified here because they are // the only necessary confirmation checks for internal spends. - if (const auto ec = block.populate_with_metadata(ctx)) + if (const auto ec = block.populate(ctx)) return ec; // Metadata identifies internal spends alowing confirmation bypass. diff --git a/src/error.cpp b/src/error.cpp index 6f49db53..16250259 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -87,8 +87,7 @@ DEFINE_ERROR_T_MESSAGE_MAP(error) { confirm9, "confirm9" }, { confirm10, "confirm10" }, { confirm11, "confirm11" }, - { confirm12, "confirm12" }, - { confirm13, "confirm13" } + { confirm12, "confirm12" } }; DEFINE_ERROR_T_CATEGORY(error, "node", "node code")