Closed pazza83 closed 4 months ago
I think this issue was written in kind of a confusing way, at least I found it hard to understand. Communication needs to improve within the Bisq team.
I think Bisq stops checking after 4 hours. Might be another number. I think this is in the code.
If a trade deposit tx shows as pending, bisq has a transaction confidence listener on it until confirmed.
The SPV resync popup is an independent UI feature requested here, in other words Bisq does not give up waiting for an open trade to confirm.
If an SPV resync is done via deleting wallet files with a pending trade open, that pending trade would think its transactions have been nuked and prompt to be moved to failed. The solution there, recently discovered, is not to SPV resync by deleting files but do it from the Settings/Network Settings screen. Trades are protected that way.
I think this issue was written in kind of a confusing way, at least I found it hard to understand. Communication needs to improve within the Bisq team.
Hi apologies for this. I think I was trying to guess at reasons that might be causing this issue.
There are likely multiple reasons causing trades to be incorrectly moved to failed trades.
A few examples of when this is happening is:
If an SPV resync is done via deleting wallet files with a pending trade open, that pending trade would think its transactions have been nuked and prompt to be moved to failed. The solution there, recently discovered, is not to SPV resync by deleting files but do it from the Settings/Network Settings screen. Trades are protected that way.
I wonder if that could be one of the causes, users are prompted to do an SPV resync and some users do it by deleting the SPV file causing Bisq to think the trade is failed (has a non valid SPV resync).
From my perspective mediating these trades it does seem that unresponsive traders become more prevalent in mediation when fees increase. Where I am able to reach out to the non-responsive users they often report they were unaware of the trade being in progress as it was in their failed trades or trade history.
While discussing with pazza about this, he suggested Bisq could do a "background check" on an external explorer (even better than just one, use more mirrors for redundancy) and then present the user with an appropriate message. It may happen that Bisq thinks the deposit is unconfirmed, while it was actually confirmed in a block already, so SPV is appropriate and it should be suggested in the popup, or that indeed, the deposit is not confirmed and the user doesn't need to do anything special other than waiting. There would be a timeout after which Bisq will check again and reassess what (and if) to suggest the user does.
Extending this concept, since BitcoinJ is the Achille's heel of the application, checking an external explorer could be implemented before a trade, to verify that every utxo Bisq is about to spend, is actually still spendable, or in general before anything Bisq tries to do with its existing managed utxos. Probably "ugly", but workable, no?
(came here via discussion in the bitcoinj-users Matrix room: https://matrix.to/#/#bitcoinj-users:matrix.org)
I'm quite sure this is caused by a shortcoming of the segwit specifications, which did not take BIP37 (bloom filters) into account when moving the pubkey+signature out of the scriptSig into the witness. The problem has become more and more serious with Bitcoin Core changes that limit how pending transactions are broadcasted (e.g. not re-broadcasted). What (I think) happens is this:
I see the following remediation options:
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue has been automatically closed because of inactivity. Feel free to reopen it if you think it is still relevant.
Description
On occasion Bisq client does not recognize the deposit confirmation ID.
This seems to happen in the following circumstances:
User is promoted to move the trade to failed trade despite their being a confirmed deposit confirmation.
Example with screenshots:
Trade showing as failed when it has not in open offers.
Trade information screen showing trade has failed when it has not.
Deposit Transaction ID for the trade was: 7e7189d09c3e11803650be541ef079ff8744b971c3d02e50aa1a852aa6385e46
This causes some users to move the trade to failed. This results in:
1a. Trader peer if seller not receiving payment. 1b. Trade peer if buyer sending payment and not getting their bitcoin released.
Version
1.9.4
Steps to reproduce
One of the issues with the above is it is more likely to happen when the mempool is busy, as trade confirmation can often take over 4 hours. Bisq prompts the user to do an SP resync and as a result the trade may show as failed.
In this case the user can resolve the issue by trying another SPV when the deposit has confirmed and/or opening mediation with 'Ctrl' and 'O' but if they put the trade in failed then the process above starts.
Expected behaviour
Ideally Bisq not to give false errors about the deposit transaction IDs.
Alternatively some mitigations would be:
Actual behaviour
Trade falsely shows as failed. User at risk of losing their deposit.