mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
PackageV3Checks: Relax assumptions
Relax assumptions about in-mempool children of in-mempool parents. With package RBF, we will allow a package of size 2 with conflicts on its parent and reconsider the parent if its fee is insufficient on its own. Consider: TxA (in mempool) <- TxB (in mempool) TxA (in mempool) <- TxB' (in package, conflicts with TxB) <- TxC (in package) If TxB' fails to RBF TxB due to insufficient feerate, the package TxB' + TxC will be considered. PackageV3Checks called on TxB' will see an in-mempool parent TxA, and see the in-mempool child TxB. We cannot assume there is no in-mempool sibling, rather detect it and fail normally. Prior to package RBF, this would have failed on the first conflict in package.
This commit is contained in:
parent
b1ba1b178f
commit
5da3967815
1 changed files with 1 additions and 5 deletions
|
@ -91,7 +91,6 @@ std::optional<std::string> PackageV3Checks(const CTransactionRef& ptx, int64_t v
|
|||
const auto parent_info = [&] {
|
||||
if (mempool_ancestors.size() > 0) {
|
||||
auto& mempool_parent = *mempool_ancestors.begin();
|
||||
Assume(mempool_parent->GetCountWithDescendants() == 1);
|
||||
return ParentInfo{mempool_parent->GetTx().GetHash(),
|
||||
mempool_parent->GetTx().GetWitnessHash(),
|
||||
mempool_parent->GetTx().nVersion,
|
||||
|
@ -135,10 +134,7 @@ std::optional<std::string> PackageV3Checks(const CTransactionRef& ptx, int64_t v
|
|||
}
|
||||
}
|
||||
|
||||
// It shouldn't be possible to have any mempool siblings at this point. SingleV3Checks
|
||||
// catches mempool siblings and sibling eviction is not extended to packages. Also, if the package consists of connected transactions,
|
||||
// any tx having a mempool ancestor would mean the package exceeds ancestor limits.
|
||||
if (!Assume(!parent_info.m_has_mempool_descendant)) {
|
||||
if (parent_info.m_has_mempool_descendant) {
|
||||
return strprintf("tx %s (wtxid=%s) would exceed descendant count limit",
|
||||
parent_info.m_txid.ToString(), parent_info.m_wtxid.ToString());
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue