mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-20 15:19:07 +01:00
Merge bitcoin/bitcoin#33892: policy: allow <minrelay txns in package context if paid for by cpfp
e44dec027cadd release note about supporing non-TRUC <minrelay txns (Greg Sanders)1488315d76policy: Allow any transaction version with < minrelay (Greg Sanders) Pull request description: Prior to cluster mempool, a policy was in place that disallowed non-TRUC transactions from being TX_RECONSIDERABLE in a package setting if it was below minrelay. This was meant to simplify reasoning about mempool trimming requirements with non-trivial transaction topologies in the mempool. This is no longer a concern post-cluster mempool, so this is relaxed. In effect, this makes 0-value parent transactions relayable through the network without the TRUC restrictions and thus the anti-pinning protections. ACKs for top commit: ajtowns: ACKe44dec027c- lgtm ismaelsadeeq: ACKe44dec027cTree-SHA512: 6fd1a2429c55ca844d9bd669ea797e29eca3f544f0b5d3484743d3c1cdf4364f7c7a058aaf707bcfd94b84c621bea03228cb39487cbc23912b9e0980a1e5b451
This commit is contained in:
@@ -943,18 +943,6 @@ bool MemPoolAccept::PreChecks(ATMPArgs& args, Workspace& ws)
|
||||
return state.Invalid(TxValidationResult::TX_NOT_STANDARD, "bad-txns-too-many-sigops",
|
||||
strprintf("%d", nSigOpsCost));
|
||||
|
||||
// No individual transactions are allowed below the min relay feerate except from disconnected blocks.
|
||||
// This requirement, unlike CheckFeeRate, cannot be bypassed using m_package_feerates because,
|
||||
// while a tx could be package CPFP'd when entering the mempool, we do not have a DoS-resistant
|
||||
// method of ensuring the tx remains bumped. For example, the fee-bumping child could disappear
|
||||
// due to a replacement.
|
||||
// The only exception is TRUC transactions.
|
||||
if (!bypass_limits && ws.m_ptx->version != TRUC_VERSION && ws.m_modified_fees < m_pool.m_opts.min_relay_feerate.GetFee(ws.m_vsize)) {
|
||||
// Even though this is a fee-related failure, this result is TX_MEMPOOL_POLICY, not
|
||||
// TX_RECONSIDERABLE, because it cannot be bypassed using package validation.
|
||||
return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "min relay fee not met",
|
||||
strprintf("%d < %d", ws.m_modified_fees, m_pool.m_opts.min_relay_feerate.GetFee(ws.m_vsize)));
|
||||
}
|
||||
// No individual transactions are allowed below the mempool min feerate except from disconnected
|
||||
// blocks and transactions in a package. Package transactions will be checked using package
|
||||
// feerate later.
|
||||
|
||||
Reference in New Issue
Block a user