Andrey from the core team of Incognito chain has carried out an experiment on how to send some a crypto asset (specifically for 50 USDT) confidentially. He tested out the most popular 7 privacy tools for Ethereum by appreciating all of the tools. You may find his original work in Resources section.
The goal of the experiment is to transfer value confidentially between two guys around the world. The experiment came from real-life uses, considering what people need. Most of the crypto folks are more than happy to receive payments in ETH or USDT.
- Both are based on the Ethereum blockchain
- Both are tradable against fiat in the biggest number of countries around the world.
- Combined market cap on Mar 28 ~ 18B USD
- Combined trading volume 24h ~ 52B USD
Let’s get started!
Meet Nick🕵♂ 👋. He works in blockchain space, and keeps his salary and in stable coins (We’ll say it’s USDT). He also invests in crypto. His friend Bob 🙋♂️ who is also a master in crypto and playing a lot with DEFI asked Nick to borrow 50 USDT to pay back DEFI loans to get his collateral back. Typical story 🙂
Nick keeps a lot of other cryptos in his wallet, so the only acceptable way to send 50 USDT without showing his main wallet balance — is using a privacy tool.
If Nick uses Incognito wallet, he could send privately 50 USDT within a couple mins and forget about this situation. Easily, without any unnecessary movements, by lying on a sofa and listening to music:
- Open a mobile wallet
- Shield his USDT (if it’s not shielded yet)
- Send them privately to Bob
But Nick🕵♂ likes challenges and the flashbacks do not let him sleep peacefully 🤯 So Nick decided to go with those the most popular tools: Tornado Cash and Aztec.
Nick is smart☝️, he knows that USDT is an ERC20 token based on Ethereum blockchain. So Nick went to google and found several the most popular tools for private transactions on Ethereum on ethhub.io
Here is the list of tools and products on ethhub which promise private transactions for Ethereum (onchain, layer 2, and mixers). Here is the whole list:
- Aztec Protocol is building an efficient zero-knowledge privacy protocol and decentralized exchange. The protocol is already live on Ethereum’s manner.
- Starkware Industries is using STARK technology to improve scalability and privacy on Ethereum.
- Enigma Protocol is building ‘secret contracts’ which enable computation over encrypted data.
- Zether is a confidential (transaction amounts are hidden) and anonymous (transaction sender and receiver are hidden) payment mechanism on blockchains with the account model like Ethereum.
- Tornado is a mixer, which uses zk-SNARKS.
- Heiswap uses stealth addresses and linkable ring signatures.
“Oh” — thought Nick🕵️♂️, — “ if I want to be a master I have to try all of them. I’ll send funds to Bob quickly and keep exploring all 6 tools”
Let's start with ZK-Based tools.
Keep in mind that Nick is lying on his sofa and going to send 50 USDT to his friend.
👉 The first step is getting a wallet (or connect to the web).
Ops… First problem. Aztec supports only DAI but promises to add ETH and BTC (Bob🧞♂️ can’t wait, because his collaterals will be liquidated, so he is ready to accept DAI too). Money is money.
Let’s try to find a way to transfer 50 DAI privately to Bob🧞♂️
👉 Nick🕵♂ is 3 years in crypto, but still can’t do transactions via API or SDK, unfortunately. 👎
❌The Aztec protocol looks awesome, but we must conclude that the mission is failed ❌
Thank God, we have 5 more options to send $50 (yes, you saw right $50, because now Bob🧞♂️ready to accept any crypto — “just make it faster please”).
Probably this bullet is also missed. Starkware is a technological company and they work on improving privacy set on the chain level. Vitalik’s name on the landing page gives us hope that such a tool will be implemented on Ethereum chain in the future. Meanwhile, we go further.
Enigma also looks like more research-based development, so far Nick🕵♂ hasn’t found a practical implementation 😦 A lot of documentation, SDK, Enterprise staff. Totally, not our case.
Just a quick reminder, Nick’s🕵♂ goal is to find a way to send his friend Bob🧞♂️ 50 USD, without linking his main wallet. Doesn’t matter already USDT, DAI or ETH, — “Send him at least something🤯”
Nick found research from Stanford and talks on ethresearch. So far he hasn’t found any practical implementation. Also, he left a question on the forum to find out the status of the implementation. Will keep this publication updated.
To be honest it’s quite a pity, but very knowledgeable. Now Nick🕵♂ knows difference between all projects above and know that there is a lot of work going on around privacy fundamentals.
Let's move on to Mixers.
Still have some hope that mixers will not fuck up with this 🙏. Let’s go!
👉Open the website and it feels better. At least they have an option for USDT. So the initial idea could be executed 🥳.
Oops. You can’t send a custom transaction: Only 100 or 1000 USDT. Other options do not exist yet. So In Nick’s case, he has to send 100 USDT instead of 50. No problem. Let’s do it.
We tried to Deposit on Tornado Cash form mobile. The challenge was almost impossible. There are no questions to Tornado, more questions to the third party from which we are supposed to send funds.
Long story short. Nick🕵️♂️ failed with a top-up tornado from mobile.
👉He took a laptop. With squarelink it was the same issue, so he decided to use the well-known Metamask and everything went smoothly. Deposit fee surprised Nick ~ $1.39.
Deposited successfully! 🥳 We are almost there.
Oops… New surprise. Looks like we have to wait for around 24h to be able to proceed with the transaction for Bob🧞♂️
Yep, definitely need to wait some time to be allowed to withdraw. Besides, withdrawal fee is similar to the deposit ~ $1.39.
At least Tornado Cash works, and we almost proceed with the transaction, and our funds are locked for around 24 hours, hopefully🙏
Nick🕵️♂️ feels fucked by Tornado Cash. He is out of money, and Bob still haven’t’ receive anything 🙆♂️💆♂️
This adventure makes Nick🕵️♂️ smarter. Now he starts understanding the whole power of the phrase which he saw in the beginning.
To be honest, now Nick wants to say now — “Bob, fuck off with your fucking 50 USDT. I already spent two hours and not sure how long it takes.”💆♂️🙆♂️🙅♂️
And this is happening for Etherum based assets, a protocol where thousands of people are involved in the ecosystem development. Even afraid to think what the situation is like with other protocols.
We took a coffee break with Nick and we’re ready to move forward.
UPDATE: 24 hours later.
Nick got a chance to withdraw funds further. Thank God and Tornado Cash 🙏
Meanwhile, Nick went to etherscan to be sure that Bob can’t trace his main. And he got a small disappointment again 😦
Can we count it as private transaction ?
Amount sent: 100 USDT
Status : Successful
Delay : 24 hours
Fee paid : $6.39 (6.39%)
Privacy level: Low (Bob still can trace the transaction)
We have one more tool to test out. Nice to e-meet you, Heiswap 👋
👉Let’s go mobile-first. Okay, it was a bad idea.
👉Not a problem at all, we do not give up that fast. Let’s go on the web version.
At first sight, Heiswap works in a similar way as Tornado Cash, but it supports only ETH. Nick is not picky, so he found $50 in ETH and deposited on his Metamask. And we faced one more challenge, the min amount is 1 ETH, which is even a bit more than with Tornado Cash 😅. Nick really hates Bob now, you can’t imagine how much. While he was thinking about where to get 1 ETH, he found that Heiswap still works only on the Ropsten Ethereum’s testnet 😰
Fuck fuck fuck! So much time wasted. 100 USDT locked on Tornado cash. Bob has received nothing yet😅
Let's finish with Incognito.
Nick really wanted to do such a transaction with other tools but looks like we are in the situation, that there are no other ways. So he is going to send 50 USDT privately to Bob with Incognito wallet, and he promises to be as objective as possible 🙏
Let’s assume that Nick never used Incognito wallet, keeps all his funds on Trust wallet and is still lying on his sofa.
👉Let’s get Incognito wallet.
👉Let’s shield 50 USDT.
👉Perfect, USDT is shielded successfully and quickly 🥳️! Now we can send it to Bob 🧞
👉Hey 👋, Bob is here. The transaction is received!
The mission is completed. Bob🧞 received his 50 USDT, Nick🕵 made it confidentially, without linking his main wallet with savings. It seems that comparing Incognito with other privacy tools on the blockchain space at this moment is the same as comparing spaceX with starcruiser. The latter is really cool and flies through galactic and solar systems, but the former is real and ships goods and people in space and back. The result of the experiment is below: