I was asked to write a review on DEX.fo.
DisclaimerI used only Tor Browser for this review. Note that my review style it
not telling you what's good. I'll only tell you what I notice and think can be improved. This is me going through the site with a big red marker.
I later added quotes from
this topic where they fit in my review.
First impressionsI usually limit my testing to the coins I'm familiar with: BTC (for obvious reasons) and XMR (for privacy). I try to stay away from stable coins and ETH.
First impression: why is the minimum amount so high?
BTC > XMR: min: 0.00795921 BTC ($500!)
When I change BTC to LTC, the minimum is lower: min: 0.66867855 LTC ($30). But it took me a while to realize the trading pair automatically changed from the expected "LTC > XMR" to "LTC > BTC".
Clicking the green vertical arrows ("reverse transaction") doesn't work. If I select "XMR" under "YOU SEND", the receiving coin keeps animating:

So I can't send XMR and exchange it to something else.
This got me curious what works or doesn't work. Available coins:
BTC, ETH, LTC, USDC, USDT (ERC-20), USDT (TRC-20), XMR.
Every time I change the coin under "YOU SEND" to something else, the "YOU RECEIVE" reverts back to "BTC" (unless I select BTC, then it changes to ETH). It would be nice if the "RECEIVE" coin doesn't change (assuming the trading pair is available), so if I want to receive XMR, I want to be able to change what I send to compare rates without having to keep selecting XMR.
For other trading pairs, the minimum amount is more reasonable. To keep the minimum low, I'm not testing with XMR. BTC > LTC: min: 0.00047729 BTC ($30)
There are 2 options: "Chain" or "Fast". The latter isn't available:

I tried many different trading pairs, but none of them can use "Fast". At the same time, I see this:

I don't think this accurately reflects the System Status when not all functionality is available:
Fast mode (1.5%) is going offline for about a month while we do a major rework.
This could (and should) reflect in the System Status.
Rates and competitivenessLet's compare rates. DEX.fo: 0.0005 BTC > 0.67763909 LTC.
On Orangefren, I selected "Never-KYC" and got 3 available options that would give me:
0.69833597 LTC (3.05% more)
0.7018 LTC (3.57% more)
0.70034971 LTC (3.35% more)
(I didn't want to name the competitors here, that's not needed to make my point)So for small amounts, DEX.fo gives
terrible rates:
The difference in BTC received when using USDT-TRC20 vs USDT-ERC20 comes from network fees, not our exchange rate.
Our fee is the same — 0.8% Chain or 1.5% Fast for all networks and all pairs.
As I expected,
this topic explained that the difference is caused by certain fixed fees per transaction, but if that's the case, shouldn't you post the actual fee including everything in the OP?
If the higher fees are because of transaction fees in multiple hops, I would expect "Fast" to be
cheaper for small transactions, but I can't test it now due to unavailability.
Let's compare larger amounts:
DEX.fo: 0.01 BTC > 13.98818788 LTC
No-KYC competitors:
13.98654157 LTC (0.01% less)
14.028 LTC (0.28% more)
14.0217529 LTC (0.24% more)
14.0351 LTC (0.34% more)
14.05098916 LTC (0.45% more)
13.84152475 LTC (1.05% less)
So for larger amounts, the rates are more competitive, but not the best in the market.
At the bottom of the page, it shows what I
think are the site's reserves. If that's what it is, it would be good to add the word "Reserves":
ExchangingWhen I click "Exchange", I get a short time limit:
I like to thoroughly prepare transactions, and it might include manually typing and verifying addresses for offline signing, which takes a while (depending on the amount of course). Either way, 30 minutes can be tight.
This instantly raises questions: what if my transaction doesn't confirm fast enough? What if I use a
fee < 1 sat/vbyte: will it be picked up? What if it arrives late: will it be refunded or do I get the option so accept current exchange rates?
I found the answer on the forum, but it should be easier to find (in the Q&A):
if the order timer runs out before the deposit confirms, the swap goes into manual review.
The Letter of Guarantee is signed using PGP. I've always preferred a Bitcoin signed message, that's much easier to verify: any half decent can wallet do it without downloading additional software. So I suggest to create and offer both "types" of LoG.
@TryNinja
Huge thanks for adding our PGP key to BitList! 🙏 This is exactly what PGP is for — independent verification through a trusted third-party service. Now any user can verify the authenticity of our messages and orders directly through bitlist.co.
Trusting a third party with your transaction details is terrible for privacy. If that's what needed to easily check a PGP signed message, that should be a very strong argument to just use a Bitcoin signed message.
Because XMR wasn't possible in a reasonable amount for testing, I didn't want to touch any of my Bitcoin. So I created a small ETH > LTC exchange. The speed was not disappointing: about 7 minutes after I sent ETH, I had LTC with 2 confirmations in my wallet.
But: while the website shows: "No hidden fees", and "YOU RECEIVE <amount>", I'd expect to receive that
exact amount. I know the differences are tiny, but I like data, and data should always be consistent.
In just 7 minutes, I saw this:



This is what I would call
hidden fees.
Suggestion: I'd like to be able to edit the amount in the "YOU RECEIVE" field: I type how much of a certain coin I need, and the site should tell me how much to send. But that only works if I get the exact amount I entered.
Terms of ServiceThe minimum deposit amount must meet the established limit for the selected direction. If not followed – the deposit will not be processed, and the funds will be lost. The maximum deposit amount must not exceed the set limit. In this case, we process only the maximum allowable amount; the remaining amount will be lost.
Brutal! May I suggest to add a recovery option? Sooner or later, someone is going to mess up, and if they lose a large amount of money, one way or another that looks bad on you. Just charge them for manual recovery.
To think about: what happens when 2 users make a transaction that drains most of the reserves at the same time? Say, right now, I can make 2 transactions: 2 BTC > 2802 LTC and 2.5 BTC > 3498 LTC. That exceeds the current max: 2.7839187 BTC (for this pair), so even though both transactions stayed under the maximum, the second one to be processed will be above the (new) maximum. Does that mean the amount above the maximum of the second transaction ends up "lost" as the ToS suggests?
Prohibited Jurisdictions: None (we cannot determine the client's country, as IP logging is disabled, and none of our software components process such information).
If this exchange becomes successful, this
will become a problem. To quote myself:
I've said it before and I'll say it again: in the long run, we can't have good trusted no-KYC exchanges: if they're good, they'll be used by bad people, authorities will target them, and eventually shut them down. If they're bad, well, there's no point in using them.
Q&AWe can provide a proof of reserves on request.
I'm curious, but I didn't want to install SimpleX chat just for this.
.onion address
I suggest to make this more obvious. It took me a while to find it at the bottom of each page, I would have expected the link under the word "TOR" on the main page.
I always overlook the ".onion available" on the address bar.If you have selected the Simple mode during the order creation, we have sent Bitcoin to you and used the lowest possible mining fee.
I don't see a "Simple mode" when creating an order.
I'm missing the ELI12 explanation to this in the Q&A:
2️⃣ Chain mode: 0.8% fee, up to 60 minutes. Via decentralized cross-chain mechanisms.
How does this work?
OmegaStarScream asked the same question 2 months ago, but I'd like to see a more detailed answer than
we use atomic swap technology. I had to read through many pages
to find it, although "a vetted pool" still sounds ambiguous. Without a clear explanation, it sounds like just buzz words, so I suggest to add this to the Q&A.
This should be included in the Q&A:
If you send more than the amount specified in your order — the exchange will automatically recalculate and process the full amount you sent at the same rate.
EscrowI wouldn't call this an escrow,
as discussed here. To use is, a user has to trust Trevoid
instead of your site. It basically means a user won't use your site directly, and by adding a middleman that also means the middleman has access to private transaction data. That's one more party than needed.
That forum has a hard time loading in Tor Browser, and when it works, it tells me I need to Sign In to read any details. Having to create an account to read the escrow conditions to use an anonymous platform is kinda ironic.
We'll look at posting a screenshot or additional confirmation format that Bitcointalk users can independently review without needing exploit.in access. Something visible from here, not just a link to a place most of the thread can't reach.
Posting a screenshot isn't enough if a future victim has to pay $200 to register in order to be able to contact the escrow holders.
TL;DR: you made it to the end
