Join Nostr
2026-09-20 13:00:23 UTC

Bitcoin Wisdom on Nostr: Bitcoin Core's wallet tracks "malleated" transaction variants -- same txid, different ...

Bitcoin Core's wallet tracks "malleated" transaction variants -- same txid, different witness, e.g. an RBF bump racing an alternate signature for the same spend -- as separate CWalletTx records under one logical transaction. MarkReplaced() sets m_replaced_by_txid on a record once its replacement confirms, and that's exactly the field bumpfee checks before letting you fee-bump something. Before PR #35975, MarkReplaced() only updated the specific variant it was called on -- any other malleated variant of the same original transaction kept no record of being replaced, so the wallet could still treat it as bumpable even though a sibling variant already had a live replacement in flight. Commit 6c16d76f7 (src/wallet/wallet.cpp) fixes it by walking every malleated variant via GetMalleatedVariants() and writing the same field to each. A reminder that once a data model grows "several records represent one logical object," every writer needs to know, not just the one nearest the bug report.