mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-25 03:12:38 +02:00
[validation] look up transaction by txid
GetIter takes a txid, not wtxid.
This commit is contained in:
parent
bd482b3ffe
commit
5ae187f876
@ -413,6 +413,17 @@ BOOST_FIXTURE_TEST_CASE(package_witness_swap_tests, TestChain100Setup)
|
|||||||
|
|
||||||
BOOST_CHECK(m_node.mempool->exists(GenTxid::Txid(ptx_child2->GetHash())));
|
BOOST_CHECK(m_node.mempool->exists(GenTxid::Txid(ptx_child2->GetHash())));
|
||||||
BOOST_CHECK(!m_node.mempool->exists(GenTxid::Wtxid(ptx_child2->GetWitnessHash())));
|
BOOST_CHECK(!m_node.mempool->exists(GenTxid::Wtxid(ptx_child2->GetWitnessHash())));
|
||||||
|
|
||||||
|
// Deduplication should work when wtxid != txid. Submit package with the already-in-mempool
|
||||||
|
// transactions again, which should not fail.
|
||||||
|
const auto submit_segwit_dedup = ProcessNewPackage(m_node.chainman->ActiveChainstate(), *m_node.mempool,
|
||||||
|
{ptx_parent, ptx_child1}, /*test_accept=*/ false);
|
||||||
|
BOOST_CHECK_MESSAGE(submit_segwit_dedup.m_state.IsValid(),
|
||||||
|
"Package validation unexpectedly failed: " << submit_segwit_dedup.m_state.GetRejectReason());
|
||||||
|
auto it_parent_dup = submit_segwit_dedup.m_tx_results.find(ptx_parent->GetWitnessHash());
|
||||||
|
auto it_child_dup = submit_segwit_dedup.m_tx_results.find(ptx_child1->GetWitnessHash());
|
||||||
|
BOOST_CHECK(it_parent_dup->second.m_result_type == MempoolAcceptResult::ResultType::MEMPOOL_ENTRY);
|
||||||
|
BOOST_CHECK(it_child_dup->second.m_result_type == MempoolAcceptResult::ResultType::MEMPOOL_ENTRY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try submitting Package1{child2, grandchild} where child2 is same-txid-different-witness as
|
// Try submitting Package1{child2, grandchild} where child2 is same-txid-different-witness as
|
||||||
|
@ -1306,7 +1306,7 @@ PackageMempoolAcceptResult MemPoolAccept::AcceptPackage(const Package& package,
|
|||||||
// we know is that the inputs aren't available.
|
// we know is that the inputs aren't available.
|
||||||
if (m_pool.exists(GenTxid::Wtxid(wtxid))) {
|
if (m_pool.exists(GenTxid::Wtxid(wtxid))) {
|
||||||
// Exact transaction already exists in the mempool.
|
// Exact transaction already exists in the mempool.
|
||||||
auto iter = m_pool.GetIter(wtxid);
|
auto iter = m_pool.GetIter(txid);
|
||||||
assert(iter != std::nullopt);
|
assert(iter != std::nullopt);
|
||||||
results.emplace(wtxid, MempoolAcceptResult::MempoolTx(iter.value()->GetTxSize(), iter.value()->GetFee()));
|
results.emplace(wtxid, MempoolAcceptResult::MempoolTx(iter.value()->GetTxSize(), iter.value()->GetFee()));
|
||||||
} else if (m_pool.exists(GenTxid::Txid(txid))) {
|
} else if (m_pool.exists(GenTxid::Txid(txid))) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user