Let’s look at some of these offers. The first one is to sell .2 BTC for 1480.75 USD (trade ID: 9276360). At the time of offer this was 0% distance from market rate (perhaps even lower), so I thought it was a good deal. Taking the offer required I pay in 0.21492 BTC. At the end of the transaction, I receive .01 BTC back, and it costs 0.0004608 BTC to send this to an external wallet. This was at a tx fee chosen by Bisq of 250-260 s/b. This means the total cost of the trade is: 0.21492 - .2 - .01 + .0004608 = 0.0053808 BTC.
Next one is to sell .05 BTC for 286.89 GBP (trade ID: 3570072). This was -1% market distance if I remember correctly (is this history stored anywhere?). Taking the offer required I pay in 0.06362 BTC. At the end of the transaction, I receive .01 BTC back, and it costs .0004608 BTC to send this to an external wallet. Again, similar tx fee chosen by Bisq of 250-260 s/b. This means the total cost of the trade is: 0.06362 - .05 - .01 + .0004608 = 0.0040808 BTC.
What initially look like good deals with low market distances end up being not so good. This becomes quite obvious when I look at the final spread of the trades. For the first one, about 2.84% spread:
Unfortunately these seem prohibitively high. When I’m making a choice to trade on Bisq vs GDAX, I’m not quite sure why I should do it on Bisq. There are no fees on GDAX to move to external wallets or withdrawing fiat, and for total cost of trades the spread ends up being much lower.
The higher the distance of the offer is from the market price, the higher the fee is. This is to encourage people to post good offers and to allow Bisq to grow faster when people make more money by using it.
Tx fees of the Bitcoin network are independent of Bisq and it affects us all. Segwit and lightning network should help with this a lot in the future, when they get adopted.
It is obvious that overall fees are lower for bigger trades, this is the nature of blockchain technology, as the network cares about the size and the number of these transactions, not it’s contents and how much is being transfered.
When it comes to why someone would use Bisq, the answer is primarily security,privacy and decentralization. Same reasons as the main reasons why a person would use Bitcoin over national currencies. Bisq doesn’t really have competition in decentralized exchanges that offer fiat to crypto trades.
You can change the recommended miner fee for withdrawal tx in the settings. I use 5 sat for tx which are not urgent. Takes sometimes a few days but mostly they also get confirmed fast.
We have set the recommended miner fee more on the safe because we don’t know how many inputs are used in the trade transactions and to go too low would result in unconfirmed or delayed transactions. There is room for improvement in that area though, but fee estimation is tricky. The fee for the withdrawal should maybe get decreases by 50% of the estimated one. Will consider that in the next release.
The comparison with centralized exchanges miss the main point why Bisq exist: Privacy protection.
Also ask yourself how exchanges when not taking fees making their money? They have several options, none are nice.
EDIT: removed the part with the next release fee reduction. There will be some but not clear yet the details.
I checked again the fee model with the currently recommended miner fee of 40 sat/byte:
Maker:
Trade 0.5 btc with 1% price distance
0.001 BTC trade fee -> 7 USD @ 7000 BTC/USD (0.2% of trade amount)
0.00024 BTC mining fee -> 1.68 USD @ 7000 BTC/USD (0.04% of trade amount)
Total fees: 8.68 USD @ 7000 BTC/USD (0.24% of trade amount)
Trade 0.5 btc with 0% price distance
0.0002 BTC trade fee -> 1.4 USD @ 7000 BTC/USD (0.04% of trade amount)
0.00024 BTC mining fee -> 1.68 USD @ 7000 BTC/USD (0.04% of trade amount)
Total fees: 3.08 USD @ 7000 BTC/USD (0.04% of trade amount)
Taker:
Trade 0.5 btc (% price distance has no effect)
0.005 BTC trade fee -> 10.5 USD @ 7000 BTC/USD (0.3% of trade amount)
0.00072 BTC mining fee -> 5.04 USD @ 7000 BTC/USD (0.144% of trade amount)
Total fees: 15.59 USD @ 7000 BTC/USD (0.44% of trade amount)
I think the above fees are reasonable but the big impact is the miner fee.
But if miner fee goes up to 200 or more then of course that part gets pretty expensive.
Here is the same with a miner fee of 200 sat/byte
Maker:
Trade 0.5 btc with 1% price distance
0.001 BTC trade fee -> 7 USD @ 7000 BTC/USD (0.2% of trade amount)
0.0012 BTC mining fee -> 8.4 USD @ 7000 BTC/USD (0.24% of trade amount)
Total fees: 15.68 USD @ 7000 BTC/USD (0.44% of trade amount)
Taker:
Trade 0.5 btc (% price distance has no effect)
0.005 BTC trade fee -> 10.5 USD @ 7000 BTC/USD (0.3% of trade amount)
0.0036 BTC mining fee -> 25.2 USD @ 7000 BTC/USD (0.72% of trade amount)
Total fees: 35.7 USD @ 7000 BTC/USD (1.02% of trade amount)
So you see even if we reduce the trade fee to zero the total fee is not that much lower if mining fee is high.
That the taker has to pay 3 times and the maker only 1 times has conceptual reason (resulting from fee estimation) and cannot be changed.
I will consider to tweak the taker fee to make it maybe the same like the maker fee but that will not have too much effect on the totals in times when miner fee is high.
In your case when you had also withdrawals (and maybe funding txs) then of course that effect of high mining fee is even worse. But I assume many traders keep the BTC on Bisq and don’t make transfer to external wallets.
We can try to tweak a bit the fee estimation but that is very risky because getting too low will lead to unconfirmed txs and stuck trades.
@valankar: Thanks for your input. I actually found now a way how to solve a problem for the fee estimation. So the miner fee will be lower and more exact (at least in most cases - some edge cases are hard to handle).
I think one issue is makers are requiring to add high percent to get to a more accurate actual market price and thus having to pay higher fees because of this. For example, the 0% percent BTC/AUD price is low and makers add a high percent, possibly in other markets too? A 2% offset in the code will help with this, may require more, and may be different in each country.
The trade fee is not the problematic part, it’s the mining fee, specially for the taker as he pays 3 times.
We had the estimation set a bit high to be on the safe side and because of a difficulty how to know in advance the number of inputs in the trade fee tx. I found a solution for that now so we can reduce the fee to that exact target without security buffer. E.g. we used estimated 600 bytes for the tx size but if only one input is used its only 260 bytes. Now I make a dummy tx to see what the actual tx would look like before showing the funds need to get paid. This will only work if the user has already fund in his wallet, otherwise we use 260 bytes as assumption.
Beside that I will tweak the fee estimation service to deliver more smooth values and risk a bit more to get longer delay. The values are jumping quite strong. Just observe now (week end fees are low) and it jumped between 10 and 110 satoshi from call to call (we use 21.co). I will now use the average of that last 10 calls (50 min.) to get a more smooth estimation.
But that will require a bit ob observation before it can be deployed.
With both those changes I think the miner fee will drop by in average > 50% - and so the effective fee for the users.
Beside that I will adjust the taker fee to be the same as the maker fee (from 0.3% to 0.2%). But not 100% decided yet…
Thanks for the explanation Manfred and possible Bisq changes. I understand better now about this mainly coming from the mining fees. I’ll try adjusting the withdrawal tx fee, try to combine multiple trades into one withdrawal, and keep some funds in my Bisq wallet.
I always check at https://tradeblock.com/bitcoin the mempool and paid tx fee to get a feeling if there is a lot of congestion or not. Then it depends on the urgency. If not urgent I use 5 sat and I think the longest to waited was about a few days. Often it gets confirmed in less than an hour even with such low fees. Weekend the mempool usually gets cleaned.
We use https://bitcoinfees.21.co/api/v1/fees/list and take the maxFee where maxDelay is not more then 20 blocks (currently it was set to 10 blocks but i will increase to 20 as values are still too high).
But that is all educated guessing. Unfortunately there is still not a good fee estimation service out there.