diff --git a/doc/policy/mempool-replacements.md b/doc/policy/mempool-replacements.md index 96ab4112e20..3fd7ff2ad2d 100644 --- a/doc/policy/mempool-replacements.md +++ b/doc/policy/mempool-replacements.md @@ -12,7 +12,7 @@ other consensus and policy rules, each of the following conditions are met: 1. The directly conflicting transactions all signal replaceability explicitly. A transaction is signaling BIP125 replaceability if any of its inputs have an nSequence number less than (0xffffffff - 1). - A transaction also signals replaceibility if its nVersion field is set to 3. + A transaction also signals replaceability if its nVersion field is set to 3. *Rationale*: See [BIP125 explanation](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki#motivation). diff --git a/src/policy/v3_policy.cpp b/src/policy/v3_policy.cpp index 158881aeb9a..f838dc6c0fd 100644 --- a/src/policy/v3_policy.cpp +++ b/src/policy/v3_policy.cpp @@ -81,9 +81,9 @@ std::optional PackageV3Checks(const CTransactionRef& ptx, int64_t v vsize, V3_CHILD_MAX_VSIZE); } + // Exactly 1 parent exists, either in mempool or package. Find it. const auto parent_info = [&] { if (mempool_ancestors.size() > 0) { - // There's a parent in the mempool. auto& mempool_parent = *mempool_ancestors.begin(); Assume(mempool_parent->GetCountWithDescendants() == 1); return ParentInfo{mempool_parent->GetTx().GetHash(), @@ -91,7 +91,6 @@ std::optional PackageV3Checks(const CTransactionRef& ptx, int64_t v mempool_parent->GetTx().nVersion, /*has_mempool_descendant=*/mempool_parent->GetCountWithDescendants() > 1}; } else { - // Ancestor must be in the package. Find it. auto& parent_index = in_package_parents.front(); auto& package_parent = package.at(parent_index); return ParentInfo{package_parent->GetHash(), @@ -184,7 +183,7 @@ std::optional SingleV3Checks(const CTransactionRef& ptx, // The rest of the rules only apply to transactions with nVersion=3. if (ptx->nVersion != 3) return std::nullopt; - // Check that V3_ANCESTOR_LIMIT would not be violated, including both in-package and in-mempool. + // Check that V3_ANCESTOR_LIMIT would not be violated. if (mempool_ancestors.size() + 1 > V3_ANCESTOR_LIMIT) { return strprintf("tx %s (wtxid=%s) would have too many ancestors", ptx->GetHash().ToString(), ptx->GetWitnessHash().ToString()); diff --git a/src/test/fuzz/tx_pool.cpp b/src/test/fuzz/tx_pool.cpp index b44b528b6f6..fcf230642a6 100644 --- a/src/test/fuzz/tx_pool.cpp +++ b/src/test/fuzz/tx_pool.cpp @@ -407,8 +407,6 @@ FUZZ_TARGET(tx_pool, .init = initialize_tx_pool) const bool accepted = res.m_result_type == MempoolAcceptResult::ResultType::VALID; if (accepted) { txids.push_back(tx->GetHash()); - // Only check fees if accepted and not bypass_limits, otherwise it's not guaranteed that - // trimming has happened for this tx and previous iterations. CheckMempoolV3Invariants(tx_pool); } }