RBF Odd Observation

7 replies 119 views
alt_tokenMember
Posts: 2 · Reputation: 76
#1Aug 9, 2017, 11:31 PM
Hey everyone, Got a question and I'm hoping someone can shed some light on this. So, a few days ago, I spotted a transaction on the network that shouldn't support RBF. Then today, I happened to open the same page on my phone, and I saw that the same transaction hash was swapped out. How is that even possible? The user must've used RBF, but the transaction in the mempool and on the blockchain showed RBF: NO. (It has the same input.) Check out this screenshot for the hash: (https://prnt.sc/Nzgznfu6C_aW) And here’s the hash too. (9e8159d690b3390c78b8d5a759d2395ce22f7ae33a3425bfed82ce20238232ba) Is there anyone here who can explain this? Thanks a lot for taking the time to read and reply.
6 Reply Quote Share
SwiftNodeMember
Posts: 38 · Reputation: 224
#2Aug 10, 2017, 12:59 AM
Here are two possibilities. 1. The mining pool that included the replacement transaction didn't have the first transaction in its mempool and accepted the second transaction when they received it. 2. The mining pool that included the replacement transaction has enabled full RBF. Any node that has enabled full RBF treat any transaction as RBF-enabled and accept the replacement transaction even if the original transaction has not been flagged as RBF. And it may worth mentioning that RBF isn't a consensus rule. RBF is a policy and miners are free to include any valid transaction they want. A miner can include a transaction paying zero fee even if there's an unconfirmed non-RBF transaction broadcasted earlier with a very high fee spending the same coin.
1 Reply Quote Share
alt_tokenMember
Posts: 2 · Reputation: 76
#3Aug 10, 2017, 01:38 AM
Your explanations are consistently legendary. Thank you very much for your response.
2 Reply Quote Share
boss_2014Member
Posts: 20 · Reputation: 174
#4Aug 10, 2017, 02:44 AM
I know that miner can include any transaction available in the mempool but I don't get the point of a non-RBF TX with a high fee over the same coin with zero fee into the block because I thought increasing the fee (RBF) will void the old hash and will be rebroadcasted with a new signature so the TX which broadcasted later only should be available on the network right?
1 Reply Quote Share
SwiftNodeMember
Posts: 38 · Reputation: 224
#5Aug 10, 2017, 07:55 AM
If you replace a transaction with a new one paying higher fee, nodes remove the first transaction from their mempool and it's the second transaction that will be probably included in the blockchain. But there's nothing stopping a miner from including the first transaction. Take note that as long as none of transactions have been confirmed, both are valid.
0 Reply Quote Share
l0n3ravenMember
Posts: 12 · Reputation: 154
#6Aug 10, 2017, 12:18 PM
Nothing about RBF makes any of the transactions being replaced invalid. When someone makes a replacement transaction, think of it as a brand new and completely separate transaction which just happens to spend (some of) the same coins. Because, well, it is. It is not the old transaction with a new signature - it is a completely different transaction. The old transaction is valid. The new transaction is also valid. Both remain completely valid and either can be mined, right up to the point where one of them is included in a block. Only at that point will the other transaction become invalid since (some of) the coins it spends will now have been spent elsewhere.
1 Reply Quote Share
boss_2014Member
Posts: 20 · Reputation: 174
#7Aug 10, 2017, 12:49 PM
Thanks for the info, that leads to my follow-up question. What are the odds of both transactions being included in the same block? If both transactions are valid then both transactions can be included in the same block too if the fee is used in the same range then what happens?
4 Reply Quote Share
l0n3ravenMember
Posts: 12 · Reputation: 154
#8Aug 11, 2017, 03:35 PM
Zero. Such a block would be invalid, since it spends the same coins twice. The default behavior of a node is never have two or more conflicting transactions in its mempool. When it accepts a replacement, it evicts the original. As such, it would never create a candidate block which contains two conflicting transactions. Should some mining pool edit their software and accidentally mine a block containing conflicting transactions, all other nodes on the network would reject it as being invalid.
4 Reply Quote Share

Related topics