File tree Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -625,10 +625,13 @@ bool MemPoolAccept::PreChecks(ATMPArgs& args, Workspace& ws)
625625 // is for the sake of multi-party protocols, where we don't
626626 // want a single party to be able to disable replacement.
627627 //
628- // The opt-out ignores descendants as anyone relying on
629- // first-seen mempool behavior should be checking all
630- // unconfirmed ancestors anyway; doing otherwise is hopelessly
631- // insecure.
628+ // Transactions that don't explicitly signal replaceability are
629+ // *not* replaceable with the current logic, even if one of their
630+ // unconfirmed ancestors signals replaceability. This diverges
631+ // from BIP125's inherited signaling description (see CVE-2021-31876).
632+ // Applications relying on first-seen mempool behavior should
633+ // check all unconfirmed ancestors; otherwise an opt-in ancestor
634+ // might be replaced, causing removal of this descendant.
632635 bool fReplacementOptOut = true ;
633636 for (const CTxIn &_txin : ptxConflicting->vin )
634637 {
You can’t perform that action at this time.
0 commit comments