Improve security of Bisq Easy #2726
Replies: 22 comments 42 replies
-
@HenrikJannsen all great ideas, with the following being the most effective in terms of benefit/cost ratio I believe:
The other 2 are great but could be done in the near future whether as the above is fairly doable fast. |
Beta Was this translation helpful? Give feedback.
-
Further idea:
|
Beta Was this translation helpful? Give feedback.
-
Just tested to change Burn BSQ weight from 100 to 25 and there are no major issues. I consider those issues not a major problem. |
Beta Was this translation helpful? Give feedback.
-
To change the max trade amount I am considering following:
Not planned it to add a risk factor by payment method. This would become too complex UX wise with multiple payment methods are used. The "risk rating" idea would cover payment methods. |
Beta Was this translation helpful? Give feedback.
-
After further thoughts, I think only adding a timing function is enough. This will avoid frustration from long term users who would see their reputation dropped as after 100 days there is no impact on the score by that change. |
Beta Was this translation helpful? Give feedback.
-
Good points, the only thing that I was thinking about downsides, was that existing and/or new sellers would be penalized because of the possibility of a scammer to pop in... and you fixed that later by concentrating on the timing effect. That, and the trade amount limit based on reputation score, both combined, should be more than enough protection, |
Beta Was this translation helpful? Give feedback.
-
I think we need to consider the above numbers with a new seller in mind (at least one that is active on Bisq 1 and wants to try out Bisq Easy). Making it more costly for scammers is good but this needs to be balanced with keeping the platform accessible to sellers that want to participate in Bisq Easy. |
Beta Was this translation helpful? Give feedback.
-
I agree with @solomon1923 and if trade amount is limited based on repscore, as well as repscore increasing from 10% to the nominal value with a gradient function, I think it is okay if BSQ burn score is not reduced, at least not significantly, or legitimate new sellers could be deterred. |
Beta Was this translation helpful? Give feedback.
-
Just to make clear: Current version has dropped the 25% decrease of the weight but only added the time function from 10% at burn time to 100% in 100 days. To link the max trade amount to reputation is a good idea. Let's try to get a rough model for financial gain from a scam using burned BSQ. The current min required reputation score is 30 000. For a new trader to burn 300 BSQ but cannot trade for 100 days before reaching min. score reduces the motivation to burn in the first place. Lets link the trade amount to the reputation score: The highest reputation scores are about 70 000, this would allow a trade amount of 350 USD which seems a reasonable level. I think we still should have a upper hard limit, maybe the 600 USD we have already. Would only affect user with score of 120k and above. To change the reputation score algorithm might also lead to frustration for users who just burned BSQ to get over the 30k threshold and then discover they are below again. So maybe we can drop that time based function in favor of only changeing the max limits. |
Beta Was this translation helpful? Give feedback.
-
As discussed in Matrix, we could also include the profile age as factor for max trade amount. A new profile would have factor 1, after 6 months it grows linearly to factor 4. |
Beta Was this translation helpful? Give feedback.
-
More though about using a time function based on the burn BSQ event or based on profile age: Using time function based on burn event:Pro:
Using time function based on profile agePro:
Both models have the disadvantage that we add some additional concept next to reputation. If we can use the reputation score alone for deriving the trade limit it would be easier and more clean conceptually. We could add a boost factor from 1 to 2 over a period of 1 year to the Burn BSQ event or consider to add the same boost factor to all reputation sources from the time when they have been added. This would help to avoid to give Burn BSQ a higher overall impact as it is today (which might be already too high). We could even adjust that by using different boost factors by reputation source if want to change the impact of different reputation sources. But the added complexity might not pay off. By using that model we would avoid that user profiles which have been never been used or active trading (as seller) will become a valuable asset to purchase by scammers or that a scammer can just create a profile and leave it until it matures. |
Beta Was this translation helpful? Give feedback.
-
Here are screenshot with implementation of above boost factor: |
Beta Was this translation helpful? Give feedback.
-
One thing to consider is that with increase of the weight of old reputation events we reduce incentive for newly burned BSQ, which is the only funding source for Bisq Easy. But we have to take into account that sellers are competing with higher reputation and the relative ranking is the important factor and that would not change much. Btw. a nice side effect is that the account age and signed account age witness reputation sources will get a boost of factor 2 for any bisq 1 account older than 1 year. I think we had used a too low weight and this would correct that. If we consider that too much we could adjust the boost factor for each reputation source. |
Beta Was this translation helpful? Give feedback.
-
When using the trade limit derived from reputation we could apply for sellers without or with low reputation a low max trade amount of say 25 USD. So if the score/200 value is below 25 (score <5000) then the user would get that max. limit. We can adjust the text in the popup warning to create a sell offer with no reputation (extending it to <5000 scores and tell user that limit is at 25 USD). The upper limit of the trade amount is 600 USD, even for users with higher than 120k score. For creating a buy offer we can leave the max amount of 600 USD. Only sellers with >=120k score could take that. We could add information in the amount UI to make that more clear to users, that they limit their chances to find a seller. When taking a sell offer and having set one's min required score of say 30k, but offer makers score is 0 or too low but was using the 25 limit, we could give the user the choice to still take the offer and explaining the risks, but the low amount limits the potential damage. Now we show only the popup that one cannot take the offer. |
Beta Was this translation helpful? Give feedback.
-
I paused work to wait for more feedback and also as I think a hotfix release is not needed, so it will be part of next normal release. There are 2 potential trade limit solutions:
I think first one is better. |
Beta Was this translation helpful? Give feedback.
-
I just heard about the scammer incident and this discussion on Bisq2 itself. From my perspective, the idea of "reputation score" is not security at all! It is just a "feel safe" metric, and the minimum required reputation score is arbitrary in nature. Only a security deposit or bonding system makes sense to me, which requires cash or an indemnity to pay out liability on successful claims. For Bisq Easy, this means BTC sellers should be required to maintain a performance bond of BSQ on Bisq1, or a security deposit of BTC on Bisq2, in order to make any BTC offers (the same way governments often condition issuance of many business licenses and permits). The amount of the deposit or bond should be up to the prospective seller, but whatever it is, that amount determines the total amount of trade value in offers that the seller may accept on Bisq Easy at any one time. In the event that the seller loses a dispute, the bond or security deposit is used to satisfy the buyer's winning claim. The deposit/bond is for maintaining general selling privileges on Bisq Easy, not a per trade deposit as on Bisq1. The above system design would make Bisq Easy arguably safer than Bisq1, since when a scammer seller on Bisq1 loses his 20% BTC security deposit on a $5,000 trade by falsely not acknowledging receipt of the funds, he has still made a big win of $4,000! For this reason, Bisq1 buyer/seller security deposit amounts really should be set at 50% in order to eliminate the possibility of arbitrage from either party. As for "Burning BSQ" to gain reputation, that is essentially a, "buying reputation" scheme through paying a one-time fee, and it smells like a spoils system! Finally, when it comes to banning someone, is that actually effective in the Bisq environment? What stops peers from simply deleting their data directory and then getting a new identity to continue using the service notwithstanding? I will conclude by saying that Bisq as a service and a community has impressed me immensely. It seems a lot of smart people are here and working at the project, and I'm sure you all will figure out how to resolve these issues best to make Bisq Easy as safe and effective as it can be. |
Beta Was this translation helpful? Give feedback.
-
Hi @cparke2 I believe I replied to you in bisq2 as well. On the other side, bisq easy is an on-ramp to get your first btc, in order to trade on bisq1 for larger amounts and better security, so the reputation model is more than safe when trading with high reputation sellers, and for smaller amounts. |
Beta Was this translation helpful? Give feedback.
-
@HenrikJannsen Very thoughtful response, thank you! It is indeed the payment methods subject to signing on Bisq1 (ex: Zelle), which also happen to be the most commonly used, that are of particularly of concern for chargeback. Indeed, buyers don't like waiting for release of bitcoin after they've sent they've sent their payment, even if I acknowledge to them that I received the payment and will be releasing it after a clearing period (the same way banks hold funds availability on deposited checks for several days). Seller like me runs the clock for as long as the trade platform will allow before closing the trade, to give the payment service that buyer used a chance to catch any fraud and invoke a chargeback process, so that if it happens, I can dispute the trade with buyer rather than lose bitcoin (since there is no way to dispute after closing the trade and releasing BTC). It would be much better if a post-trade hold process was included in the Bisq trade workflow, but of course holds alone are still not a guarantee, and the timing has to be a reasonable amount of time (ideally 3-5 business days hold period from when payment was marked received by seller, particularly if it coming from a new buyer). There are some buyers like me who would appreciate being able to pay in several smaller payments. Even when sending money electronically to someone they already know personally, people often will send a small test payment first just to verify the funds transfer service works and the recipient information is correct, before sending the correct amount. Also, sometimes banks unexpectedly lower the send limits or even suspend a payment method, forcing a buyer to resort to some different payment arrangement to complete the trade (the bank does this to limit their own exposure to possibly unauthorized transactions). If trading a larger amount (Bisq1), as a buyer I want to limit my potential amount of loss if the seller suddenly disappears or denies receiving funds after I sent a large payment; baby steps to confirm each smaller payment to get to the final amount would be more reassuring than losing it all at once! Banks are less likely to consider a large number of transactions and multiple payments suspicious if seller is receiving them into a business bank account. Multiple small trades are not a good alternative, because the trade pricing is different on low amounts because of separate BTC transaction fees involved. Allowing multiple payments and payment methods within a single trade is indeed what I am asking for to be considered. Finally, I certainly don't want to see Bisq Easy turn into Bisq MS, and I do appreciate the differences of the two platforms (you mentioned several times the advantages of "UX", for example). I am not advocating for a per-trade security deposit as in Bisq MS; I am advocating for a per-seller security deposit or bond be required to enable sellers to accept offers on the platform. Admittedly, I do not understand how the BSQ bonding process actually works, how it is different from the MS of BTC, and accordingly why the bond couldn't be done with BTC instead. BTC would be better security currency than BSQ, which needs to be swapped on Bisq1 in order to be sent out. Either way, the strategy suggested is to have all Bisq Easy sellers bonded in BSQ or BTC before trading on Bisq Easy, with that bond amount available to moderators to distribute to buyers in a dispute if the seller doesn't participate or cooperate in the mediation process. The idea floated earlier in this thread about setting the (cumulative?) trade limits on sellers based on their reputation score is a good step in this direction, but what I am saying is reputation really needs to based on bond amount alone, and the other methods of gain reputation points (especially Bisq1 account ages) should be eliminated. P.S. Why is Bisq Easy limited to trading in BTC despite it not managing a BTC wallet nor dealing with MS? |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Thanks for suggestions. |
Beta Was this translation helpful? Give feedback.
-
Closing as implemented for upcoming 2.1.1 release |
Beta Was this translation helpful? Give feedback.
-
To increase security of the Bisq Easy reputation system we could consider various improvements:
The assumption is that potential scammers don't want to lose time and more repeated smaller trades increase their risk to get detected and banned, thus losing their investment.
The security of bonding BSQ is considerable higher as with burning BSQ.
300 BSQ burned lead to the same 30k score as 3000 BSQ bonded.
With burning 300 BSQ (about 600 USD investment) the scammer need to make trades of 600 USD to be break even before his profile gets banned. This could be done with 1 single 600 USD trade.
With bonding 3000 BSQ (about 6000 USD investment) the scammer need to make trades of 6000 USD to be break even before his profile gets banned and later his bond confiscated. This is much harder to achieve (about 10 trades with 600 USD).
We should consider to either decrease weight of burned BSQ or add some time factor.
Adding a factor derived from past trades is not feasible as we do not have a secure way to proof trades (problem with self trades).
The only known solution would be a signed-witness-like system to build a web-of-trust like reputation system. This could be considered as a new reputation source but is a larger and more complex project.
Map max allowed trade amount to reputation score
Change the max allowed trade amount in create offer for BTC sellers to the reputation they have. If they don't have any reputation we might still allow a lower as currently amount but add a big warning when one taking that offer and also in the offer book show a clear warning.
With burning 300 BSQ the user gets 30 000 reputation score. Thats with current BSQ rate of about 2 USD a 600 USD investment.
We could limit trade amount to 600 USD but only after a test period is over. Directly after the reputation score increase event (e.g. burnt 300 BSQ) the max trade amount could be 10% of that, so 60 USD.
Add time factor until reputation score gets it's full weight
When building up reputation by burning BSQ we could only count 10% of the burned BSQ for the score. Then there is a linear increase to the full score over a certain time period, let say 100 days.
A scammer could of course wait 100 days but there is a reasonable assumption that scammers don't want to have a long term commitment and there are opportunity costs for blocking that investment.
Change weight of proof of burn reputation score
I think we made a mistake in the weigh assignment for burned BSQ. We should adjust the weight even if we add the time factor to decrease the risk that a scammer waits the full time period before starting to try to get quickly some trades. Currently it would only require 1 trade to be break even. I guess to increase that min. required success rate to 2 or 3 is a considerable risk increase to the scammer. This would mean we would reduce the weight of burning BSQ from currently 100 to say 50, 33 or 25. I would say 2 is a good number. Then burning to gain 30k reputation score would require 1200 BSQ burned (2400 USD) which would require about 4 trades with 600 USD to be break even. This is much harder to achieve.
Add more fine grained ban mechanism
Currently the moderator can ban a user profile which would then make it impossible for anyone to communicate with the banned user (also the moderators). This is not great if there is a suspicious case detected as it might be a honest user just delayed with the Fiat payment. We should apply the ban only to trades and public messages.
We might add more fine grained level of bans:
Add signed-witness-like system
Similar as the Bisq 1 signed witness system we could build a cryptographic web of trust reputation system where the traders sign each other after completed trade (both ways might be useful as buyers could scam with charge-backs or cancel trades).
To have the right to sign could be derived from a source which represents trust. E.g. age and score level of reputation. A timing factors should be added as well so that scammers who managed to get signed cannot easily engage in self signing.
I think such a system requires it own discussion and is a larger project.
Beta Was this translation helpful? Give feedback.
All reactions