Breach of contract

This is posted here on request of Manfred Karrer. We sustain our claim.
Manfred also requested to mention @cbeams and @keo and, we believe, the following information, which we found in the JSON:
“arbitratorNodeAddress”: {
“hostName”: “3b7cft5k4ae6a236.onion”,
“port”: 9999
},
and
"arbitratorNodeAddresses": [
{
“hostName”: “swfmgmb2aoyqxkte.onion”,
“port”: 9999
},

Let us first say we support the Bisq platform and want it to be anti-fragile.

However/therefore we would like to point out a breach of contract.

A user A (BTC seller and SC buyer) has entered a Siacoin contract with user B (BTC buyer and SC seller).

After entering the contract and having put some (0.01 by user B) BTC in escrow it becomes apparent that user A has entered a non valid SC address.
This then disables user B to fulfill his obligations to meet the terms of the contract. However an arbitrator determined this invalidity being the case and gives out the right SC address, apparently given to him by user A. In the meantime, however the BTC price of SC had almost doubled. User B now fulfills his obligation by paying the Siacoin.
Arbitrator decides to payout the user B escrow (0.01 BTC) and the contractual determined BTC representing the Siacoin to User B and the user A escrow (0.003 BTC) to User A.
We consider the User A escrow to be too low and unlawfully given to user A and the arbitrator action to be unjustifiable:

Failure to perform under the contract
User A has entered the contract, either by exploiting or misguided by the Bisq program, with conditions that were not met (i.e. the SC address was invalid). Therefore would BTC/SC have dropped (instead of the actual nearly doubling) he could have refused to give out the right SC address. This possibility is disadventageous to user B, because of the possible unlawful refusal of fulfilling the contract by user A (who is anonymous), which, in case of instead giving out the right address, would have been profitable to user B. User B at least had to be compensated for this in the order of A’s escrow and the trade should not have been allowed by the arbittrator, resulting in 35087 Siacoins times 0.00000091 (the difference in price of SC price of the trade (0.00000114) and opportunity cost for user B when the trade was considered valid by arbitrator (0.00000205)) and the transaction fees (BTC 0.005426 = 0.013484 -/- 0.01 and 0.001942) times value of Bitcoin at the time ($13623), giving a total damage of (0.003 + 35087*0.00000091 + 0.005426)*13623=$549.76. (material breach)

Cure
After examining the Bisq Java code we determined this to be an error in that code, for the validate function to not be dynamic and at least not up to date, i.e. after adding a new coin, like SC apparently, the address syntactic validity is not checked and always returned to be true. We can offer to remediate this bug, of course we would like to come to terms, e.g. talk about this transaction’s and future transaction compensation.

Of course this offer does not replace any of our rights in this case until any full agreement is reached.

We would like to have an answer within 2 weeks of sending this letter.

I am not sure I fully understand what happened here.
There was a bug that allowed Siacoin invalid address to be added, ok, I understand that part, that should be fixed.

Then dispute has started and arbitrator thought it was a simple mistake on the seller’s part and just asked him for the address so the trade can continue as normal.
And the buyer agreed to this and went with the trade as normal and sent the altcoin and received BTC as per agreed price before the trade.

Seller’s security deposit was then given to the buyer for his troubles, correct?
Security deposit was also agreed upon before the trade started.

Did I misunderstand something here?
Bisq has a delay when trading, so exchange rate is never the same at the start of the trade and end of it. This has to be that way. Security deposits are more of a punishment for traders not following the protocol then compensation for all the possible loses the trader had due to no one’s fault, but market movements.

I don’t think there is much we can do about this now. Perhaps remove SC in future release until we get a better address validation code.

I’m confused as well. Was this an actual trade that went to dispute? If so, what was the trade ID? Or is this a hypothetical situation describing a potential exploit?

If SC address validation is broken, then we should obviously get it fixed. Please add a GitHub issue in the bisq-network/exchange repository about this and explain the repro steps, etc like any other bug report.

Thanks.

This is an actual trade that went to dispute.

The trade id is, we believe, “id”: “125e1133-40fa-44ce-9eba-d1e413da0746” or “id”: “7a3baffa-42d6-4148-9333-967eb586b904”,

Question: Why is this thread, originally posted in legal, moved to support?

BTC buyer has agreed to pay under protest. Could buyer have refused altogether?

Seller’s security deposit was NOT given to the buyer for his troubles.

As I can see #legalcompliance category is meant for legal situation of cryptocurrencies and exchanges, regulation and compliance. This doesn’t have anything to do with the law, so I moved it to #support , as it seems like that is what you are asking for, for someone to help you out with this situation. Did I misunderstand something?

So buyer said to arbitrator that he wouldn’t want to pay and would rather cancel the trade and the arbitrator insisted?
Ok, I think I understand better now, trade was just continued like nothing happened and no security deposits were taken, correct?

Although we can understand your point of view that this would be a request to help the BTC buyer out, we beg to differ on that this does not have anything to do with the law.
We think, for a successful Bisq, this has to be sorted out and clarified.

So buyer said to arbitrator that he wouldn’t want to pay and would rather cancel the trade and the arbitrator insisted?

No, the BTC buyer paid under protest. Could buyer have denied to pay. If he denied what would have been the repercussion?

trade was just continued like nothing happened and no security deposits were taken, correct?

Correct, security deposits were returned to the orginal security depositors.

I don’t think that taking an offer in Bisq counts as a lawfully binding contract between traders in any country, if that is what you are implying. Not that it would make sense, since traders can retain quite a lot of privacy in their trades, especially for altcoin trades. Either way, Bisq has nothing to do with this as trading is P2P and Bisq is just open source software.

Of course :slight_smile:

Could you clarify then what this means? I don’t know how this could be called under protest if the buyer didn’t specifically clarify that he is paying reluctantly. Or he did?

Could you clarify then what this means? I don’t know how this could be called under protest if the buyer didn’t specifically clarify that he is paying reluctantly. Or he did?

During the contract, when buyer agreed to pay, he also wrote:
"… this is a formal protest as this, to say the least, might be a flaw/bug in the system, since the seller entered/was allowed to enter a non valid SC coin address (BISQ should have checked for that) he could have cheated when BTC price for SC had dropped enough and never give out his right SC address. Thereby breaking our contract. However in this case BTC for SC price has risen (almost doubled), so could I have profited from it, and say “sorry you gave me the wrong address”? i.e. I could not break the contract. …"

This is something to think about as address validation is supposed to work. But this problem with the forward trading always existed when the security deposit doesn’t cover the price difference, this is why the security deposit is customizable.

In this particular case, if the seller didn’t give a SC address, trade could still be forced by the arbitrator and you could have still gotten the BTC, but I am not convinced that this is a fair thing to do. Other then losing his security deposit, I don’t think the seller should lose his trade amount even if he didn’t provide the SC address. But he still did, so I don’t see the real issue here.

The issue you seem to be having is that you accepted the offer that wasn’t profitable to you by the end of it. I don’t see how not providing the address made this problem, other then it prolonged the dispute period, which is still part of a trade in a way that you should count on.

It is a very difficult problem I would say, I assume it just seems very clear to you because it is in your personal interest for this trade to be canceled, but the trade still went as it should, it just took longer, as every trade that goes into dispute does.

If this was something to be exploited commonly, I am sure that arbitrators would start giving you the trade amount with the security deposit, but in this case it simply seems like an honest user’s mistake and the market is the one to blame.

We still think this is interesting.

Question: If the seller didn’t give a SC address and trade would still be forced by the arbitrator: Were would BTC buyer’s SC go to?

The issue you seem to be having is that you accepted the offer that wasn’t profitable to you by the end of it.

No that was not the reason for the BTC buyer, it is the mere fact that de BTC seller (un)purposedly did not follow the rules that led to damage.

If this was something to be exploited commonly, I am sure that arbitrators would start giving you the trade amount with the security deposit, but in this case it simply seems like an honest user’s mistake and the market is the one to blame.

Now we are confused:
BTC seller (dis)honestly handed out a wrong SC address, due to poor address validation.
This time these circumstances also led to damage to BTC buyer (to at least the amount of the security deposit*, as you implicitly concur).
Are we reading you right that you say that damage is ok (sic!) in this case as long as

  1. It is one of the first times this occurred. (Bisq traders are guinea pigs)
  2. BTC seller seemed to be honest. (benefit of the doubt)
  3. Arbitrators will surely do the right thing instead in the future.

We say the market is not to blame for loss of the security deposit* to BTC buyer.
BTC seller, arbitrator and the maintainer (beyond reasonable doubt) are to blame.

*You did mean BTC seller’s security deposit, right?

All of these answers depend on the arbitrator, this is why they exist, to make such decisions. You have a right to disagree of course.

I am just giving my opinions on this issue on what I think is reasonable.

I don’t know, this is all a hypothetical situation that I don’t think happened before. It is up to the arbitrator to decide the details. I think that trades shouldn’t be forced and instead security deposit of the seller should be given to the buyer and the trade closed. This is probably how arbitrator would deal with this.

I guess it is your opinion that by not receiving BTC a bit faster a potential for significant profit is lost. If the trade happened without the dispute, the outcome would be the same, it is just that buyer would get his BTC earlier. To me it just seems sensible that what actually hurts the buyer emotionally is that he had to part with his SC by the time it was worth more and was clear to him that he made a bad trading decision, while still being in control of the SC he promised to sell at that rate. But of course this should not be a formal discussion of this issue.

I would say that the only damage was that buyer didn’t receive his BTC sooner, which arbitrators sometimes feel like it should require a punishment. But in this case, arbitrator probably felt like it was not the seller’s fault.

Again, this is not that simple. It is hard to call this damage, at least on part of Bisq or the other trader. This simply sounds like a bad trading decision with an excuse, I am sorry, this is just my opinion. I am neither an arbitrator, nor the seller, nor the buyer, this is my objective (hopefully) opinion on the issue. It is ok if you disagree, I value your opinion on this.

  1. Arbitrators are humans, so they can adjust to potential scams when they learn about them. This is a benefit of Bisq. If it was a linear protocol, either no user would be able to make any mistakes without losing a security deposit, which seems unnecessarily harsh, or such scams would become common. One of the reasons that arbitrators are there is that they don’t allow for loop holes to be exploited. This is why if it happened multiple times, it would start seeming like a scam and not as a user’s mistake. It is a test on guinea pigs, it is an adaptation to the situation with natural intelligence.

  2. My opinion is that no one is likely at fault for this buyer’s problem other than the buyer that made a bad trading decision that was quickly obvious, even before the trade was fully completed.
    I think it is logical to assume that if the buyer received his BTC quicker, he would have the same loss. But again, this is just my personal opinion.

  3. I think that arbitrator did the right thing now, but I am not certain. I am sure that they will take note of how upset some traders can be in such situations in the future and will take it into account next time.

It is not a loss of a security deposit, it is just an opinion that he should be compensated with other trader’s security deposit for getting his BTC a bit later than intended. Disputes don’t end that often with security deposits taken and Bisq users often are understanding of this, it is just that they usually don’t have such a bad experience with the trade so they don’t care that much if it takes a bit longer. How long did the dispute take, by the way?