Skip to content

Commit 2eb0eed

Browse files
committed
validation: document lack of inherited signaling in RBF policy
1 parent 906b6d9 commit 2eb0eed

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/validation.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff 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
{

0 commit comments

Comments
 (0)