Friday, July 24, 2020

[RESOLVED] On Unconfirmed History/Balance Inconsistencies

You may have noticed some issues with unconfirmed transactions lately and things have only been resolving after confirmations. First of all: Welcome to Bitcoin :)

I went to the bottom of the issues and it turned out there was a bug in the full node software we were using to broadcast transactions: Bitcoin Knots 0.19. I upgraded the backend yesterday with Bitcoin Knots 0.20, which has already fixed the bug. However things will take a few days to fully resolve (probably 99% of issues have already resolved though) as the backend's mempool have to get in sync with the mempools of other nodes on the network.

About the bug

It turns out when you broadcast transactions to Knots .19 through RPC, it allowed double spending (without RBF.)

So, if it's fixed why does it take a few days to fully resolve?

Consider the following event:

  • Yesterday, after I upgraded the backend with the proper full node I participated in the first coinjoin. It happened and even my own personal Bitcoin full node accepted it. But when I looked at it in various block explorers it turned out they were not aware of it. What's going on here?
  • I traced back that one of the input has participated in another coinjoin that neither the backend, nor my local full node knew about. So everything worked properly based on what the Wasabi software knew about the network.
  • However this first coinjoin had to confirm in order for my local full node and for the backend's full node to be aware of it and realize it's the tx that actually happened. But why weren't the full nodes aware of it in the first place?
  • My local full node was not turned on at the time when that first coinjoin happened. This is how Bitcoin Core works, when it's restarted it doesn't start asking for full mempools, but it rather works with what it has.
  • The backend's full node did know about the first coinjoin tx, but because of the double spend bug, it threw that out. However with the correct full node version the correct mempool did still not instantly came back, but right now it's working correctly with the wrong mempool and in a few days as transactions are confirming everything will be back to normal, if not already.

If you are still experiencing this issue 3 days after my post, try to turn Wasabi off, then turn it on again.


No comments:

Post a Comment