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)
625
625
// is for the sake of multi-party protocols, where we don't
626
626
// want a single party to be able to disable replacement.
627
627
//
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.
632
635
bool fReplacementOptOut = true ;
633
636
for (const CTxIn &_txin : ptxConflicting->vin )
634
637
{
You can’t perform that action at this time.
0 commit comments