validation: document lack of inherited signaling in RBF policy

This commit is contained in:
Antoine Riard 2021-05-13 12:35:33 -04:00
parent 906b6d9da6
commit 2eb0eeda39

View File

@ -625,10 +625,13 @@ bool MemPoolAccept::PreChecks(ATMPArgs& args, Workspace& ws)
// is for the sake of multi-party protocols, where we don't // is for the sake of multi-party protocols, where we don't
// want a single party to be able to disable replacement. // want a single party to be able to disable replacement.
// //
// The opt-out ignores descendants as anyone relying on // Transactions that don't explicitly signal replaceability are
// first-seen mempool behavior should be checking all // *not* replaceable with the current logic, even if one of their
// unconfirmed ancestors anyway; doing otherwise is hopelessly // unconfirmed ancestors signals replaceability. This diverges
// insecure. // from BIP125's inherited signaling description (see CVE-2021-31876).
// Applications relying on first-seen mempool behavior should
// check all unconfirmed ancestors; otherwise an opt-in ancestor
// might be replaced, causing removal of this descendant.
bool fReplacementOptOut = true; bool fReplacementOptOut = true;
for (const CTxIn &_txin : ptxConflicting->vin) for (const CTxIn &_txin : ptxConflicting->vin)
{ {