I am helping a friend try to recover approximately $36K of value traded through an 0X router. We have been given the run-around on multiple customer supports each one pointing to a different entity leading us now to 0x. We contacted Coinbase Wallet---> Uniswap---> Matcha/ZeroEx and now we have been advised to seek resolution from 0x

Transaction Hash:0x19ca4778e802f45bca6811fb29d72149f90d3faa97a664cc8e3aeeda7afd65a8

Trade 1,127,271.922585672 REV tokens which was worth approximately $35,847.2413822437 USD @ $0.0318 per share with no inadvertent sudden dips or spikes in valuation anywhere near the time in question.

Trade intended for Ethereum which at that time was trading for approximately $3,903.47 with zero inadvertent sudden dips or spikes in valuation during the 2 second transaction.

The ending result did not receive the correct ratio. What was received was 0.007616559975 ETH whereas $35,847.2413822437 USD divided by the value of Ethereum at the time ($3,903.47) is in fact 9.183429456930295 Shares of Ethereum (valuation may differ slightly by pennies X the amount of shares but not at the massive loss of $35K+)

Coinbase Wallet says they are not responsible for Dex trades, Uniswap says this was traded using ZeroEx Proxy 0x, ZeroEx is operated my Matcha, Matcha says it did not trade through their services and said to come to this 0x forum for resolution. It has now been over 70 days who can help track and recover this?

-Rome [email protected]

2 Answers 2


The contracts behaved as instructed. According to the transaction trace, this swap was executed for REV -> ETH with a minimum buy amount of 0.007388063175813944 ETH, where a return of less would cause a revert. The output was 0.007616559975065922 ETH, which is larger.

What likely happened was your friend received a quote for ~1,127,271 REV -> ~0.007461943807572084 ETH (assuming default 1% slippage tolerance) and agreed to it. This was the best route that 0x API could find at the time. It's entirely possible that this was a terrible rate, but it was ultimately up to your friend whether to accept it or not. Maybe they rushed through the confirmation screen. We've seen this mistake happen before, where people assume centralized prices are the same as decentralized prices (they almost never are).

0x API is a backend service. It's the frontend's responsibility to clearly communicate the details of the quote to its users so they can take an informed action (or not). If your friend feels like they were misled by the app's UI, then that indicates an issue with CB Wallet. Transactions are not reversible on the blockchain so I would advise anyone to always double-check transactions before sending them out.

Sorry this happened to your friend. Best of luck in the future.


Sorry this happened Rome, it's hard to use some of these web3 services especially when they're composed with each other. However if you look at the transaction trace below

UniswapFeature.sellToUniswap(tokens = [REV, 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE], sellAmount = 1127271922585672546773479, minBuyAmount = 7388063175813944, isSushi = False)

This indicates that Ox sold REV tokens to ETH (using Uniswap) at the ETH price of 0.0073. It's not 0x's contract fault. The user signed (via the frontend) for that price:

ZeroExProxy.optimalSwap(_msgData = ...1A3F67812C2B38..., _feeToken = REV, _fee = 11386585076622955017913)

Note that 1A3F67812C2B38 is the hex representation of the price. Again, this is unfortunate but my advice is to understand, double, triple check transactions before signing them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.