diff --git a/include/bitcoin/database/impl/query/confirm.ipp b/include/bitcoin/database/impl/query/confirm.ipp index d1d3e886..e73c4d14 100644 --- a/include/bitcoin/database/impl/query/confirm.ipp +++ b/include/bitcoin/database/impl/query/confirm.ipp @@ -407,6 +407,26 @@ code CLASS::block_confirmable(const header_link& link) const NOEXCEPT return ec; } +// Used by node for ASIO concurrency by tx. +TEMPLATE +code CLASS::tx_confirmable(const tx_link& link, + const context& ctx) const NOEXCEPT +{ + code ec{}; + const auto set = to_spend_set(link); + for (const auto& spend: set.spends) + { + if ((ec = unspendable_prevout(spend.point_fk, spend.sequence, + set.version, ctx))) + return ec; + + if (is_spent_prevout(spend.prevout(), link)) + return error::confirmed_double_spend; + } + + return error::success; +} + #if defined(UNDEFINED) // protected @@ -426,25 +446,6 @@ spend_sets CLASS::to_spend_sets( return sets; } -TEMPLATE -code CLASS::tx_confirmable(const tx_link& link, - const context& ctx) const NOEXCEPT -{ - code ec{}; - const auto set = to_spend_set(link); - for (const auto& spend : set.spends) - { - if ((ec = unspendable_prevout(spend.point_fk, spend.sequence, - set.version, ctx))) - return ec; - - if (is_spent_prevout(spend.prevout(), link)) - return error::confirmed_double_spend; - } - - return error::success; -} - // split(0) 403 secs for 400k-410k TEMPLATE code CLASS::block_confirmable(const header_link& link) const NOEXCEPT diff --git a/include/bitcoin/database/query.hpp b/include/bitcoin/database/query.hpp index 7c4e717c..95f9fa5b 100644 --- a/include/bitcoin/database/query.hpp +++ b/include/bitcoin/database/query.hpp @@ -490,9 +490,7 @@ class query bool set_strong_parallel(const header_link& link) NOEXCEPT; bool set_unstrong_parallel(const header_link& link) NOEXCEPT; code block_confirmable(const header_link& link) const NOEXCEPT; -#if defined(UNDEFINED) code tx_confirmable(const tx_link& link, const context& ctx) const NOEXCEPT; -#endif code unspent_duplicates(const tx_link& coinbase, const context& ctx) const NOEXCEPT;