Merge bitcoin/bitcoin#33616: policy: don't CheckEphemeralSpends on reorg

33fbaed310 policy: don't CheckEphemeralSpends on reorg (Greg Sanders)

Pull request description:

  Similar reasoning to https://github.com/bitcoin/bitcoin/pull/33504

  During a deeper reorg it's possible that a long sequence of dust-having transactions that are connected in a linear fashion. On reorg, this could cause each subsequent "generation" to be rejected. These rejected transactions may contain a large amount of competitive fees via normal means.

  PreCheck based `PreCheckEphemeralSpends` is left in place because we wouldn't have relayed them prior to the reorg.

ACKs for top commit:
  darosior:
    re-ACK 33fbaed310
  ismaelsadeeq:
    reACK 33fbaed310
  sedited:
    ACK 33fbaed310

Tree-SHA512: cf0a6945066e9f5f8f9a847394c2c1225facf475a8aa4bc811b436513eff79c0a720d4ad21ba6b0f1cc4dfdd61cf46acb148333ac592b2ee252953732326ad1d
This commit is contained in:
merge-script
2026-02-25 17:38:13 +01:00
3 changed files with 24 additions and 20 deletions

View File

@@ -41,13 +41,13 @@ class TxValidationState;
/* All the following checks are only called if standardness rules are being applied. */
/** Must be called for each transaction once transaction fees are known.
/** Called for each transaction once transaction fees are known.
* Does context-less checks about a single transaction.
* @returns false if the fee is non-zero and dust exists, populating state. True otherwise.
*/
bool PreCheckEphemeralTx(const CTransaction& tx, CFeeRate dust_relay_rate, CAmount base_fee, CAmount mod_fee, TxValidationState& state);
/** Must be called for each transaction(package) if any dust is in the package.
/** Called for each transaction(package) if any dust is in the package.
* Checks that each transaction's parents have their dust spent by the child,
* where parents are either in the mempool or in the package itself.
* Sets out_child_state and out_child_wtxid on failure.