Remove RBF from user visible settings
See original GitHub issueBitcoin 24.0 adds a new mempoolfullrbf
option that allows for replace-by-fee even if the original transaction didn’t set the RBF flag.
Currently, the get_tx_info
and dscancel
functions only consider a double-spend-cancel viable if the transaction has the RBF flag set (i.e. if not tx.is_final()
).
As the linked release notes mention, full RBF will now be a mainstream feature even though many alternate implementations have supported it for a while. Either is_final()
should always return False or it should depend on if the transaction has been confirmed or not.
Issue Analytics
- State:
- Created 10 months ago
- Comments:12 (9 by maintainers)
Top Results From Across the Web
Consider setting RBF flag for Lightning funding transactions
Currently we intentionally don't set the RBF flag for LN funding ... This means that if the user lowballs the fee, the funding...
Read more >Opt-in RBF FAQ - Bitcoin Core
Opt-in Replace-by-Fee (RBF) allows transactions to be flagged as replaceable until they are confirmed in a block. Is it a new feature? Transaction...
Read more >Resting Bitch Face: How to Fix Your RBF Forever (With Science)
You can use the RBF to your advantage to fend off unwanted cat-callers, ... math problem (or setting your goals)? You might have...
Read more >5.5.1.2. Generating the Initial RSU Image Using .rbf Files - Intel
On the File menu, click Programming File Generator. Select Intel® Stratix® 10 from the Device family drop-down list. Select the configuration scheme from ......
Read more >Replace-by-fee (RBF) - Bitcoin Optech
Replace-By-Fee (RBF) is a node policy that allows an unconfirmed transaction in a mempool to be replaced with a different transaction that spends...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
All right. I don’t know if bumping the fee of transactions imported from non-Electrum wallets is what the OP had in mind, but I consider that as out of scope. If we have an opportunity to simplify the UX, we should take it. Nothing beats the satisfaction of removing a few check boxes from the GUI.
Regarding channel funding, we can keep using the RBF flag as a way to prevent an accidental fee bumping from another instance of the same wallet. As you point out, that solution is not going to work with channel v2, so we will need to address that separately.
Sure, that’s fine, at this point I think we can do that. However, note it does not address OP’s point with opening this issue:
Even if we make sure all of the transactions we create signal RBF, if a user restores a wallet with pre-existing unconfirmed txs created elsewhere, the question is whether we want to allow RBF-ing those. Also, note that we don’t always signal RBF atm, e.g. for channel funding txs (see https://github.com/spesmilo/electrum/issues/7072).
RBF-ing a non-signalling tx is highly probabilistic atm. First and foremost, I am sure many electrum servers are backed by bitcoinds with default
mempoolfullrbf=false
, sending an error to the client if it tried to RBF such a tx. Even when using an electrum server that hasmempoolfullrbf=true
, propagation in the p2p network is not guaranteed and is totally opaque to the client (even to bitcoind). So, atm, if we wanted to allow RBF-ing non-signalling txs, we would either need to hide it behind an advanced option, or give proper warnings and explanation to the user.(note: power-users can atm RBF non-signalling txs by using the Qt console to call
wallet.adb.remove_transaction(txid)
and then creating a replacement normally (but making sure it conflicts with the old tx) - this is what I had done multiple times over the years when needing this, and also instructed some users to do it, but this is obviously not a nice solution)