TLDR:
Privacy is fast eroding in today’s world, yet it’s super important. Even Vitalik Butterin himself wrote a couple of weeks ago about the importance of privacy.
So below we take look at how to use Veil.Cash, a privacy preserving solution inspired by Tornado.Cash that lives on the Base chain.
Veil works by mixing funds in pools. Mixing has been used by bad actors in the past, so in order to limit this Veils larger pools require verification.
Although this limits Veil’s ability to provide true privacy, it still provides on-chain privacy for onlookers, meanwhile their lower limit pools don’t require verification.
This week I decided to look at Privacy. I’ve made posts before explaining the importance of privacy and showcasing privacy preserving technologies in crypto like Tornado.Cash and Umbra.Cash.
This time I decided to take a look at Veil.Cash a solution inspired by Tornado.Cash that lives directly on the Base chain.
If this post resonates with you and you want to continue the conversation then jump in here: beginners.tokenpage.xyz.
This blog goes out weekly to almost 10,000 subscribers. Please message me if you’re interested in sponsorships or partnerships.
Watch the Video version of this Post
Privacy
Privacy is eroding fast in today’s ever more technological world, especially with the growth of AI, yet it’s super important and most people don’t really appreciate just how important it is.
I’ve made posts before explaining its importance, in fact one of my earliest blog posts back from 2023 was called “Privacy in a world of Public blockchains”, where I explained that blockchains are only pseudo-anonymous, and so we need privacy preservation to avoid blockchains becoming mass financial surveillance machines:
Vitalik Butterin, the founder of Ethereum and one of the most important thought leaders in the Web3 space, made a post just a couple of weeks ago on the importance of privacy where he argued that:
Privacy is freedom: Privacy gives us space to live our lives in the ways that meet our needs, without constantly worrying about how our actions will be perceived in all kinds of political and social games.
Privacy is order: A whole bunch of mechanisms that underlie the basic functioning of society depend on privacy in order to function.
Privacy is progress: If we gain new ways to share our information selectively while protecting it from being misused, we can unlock a lot of value and accelerate technological and social progress.
I highly recommend reading his blog post to go deeper into all of this.
The crucial take away here though is that privacy is important and consequently so are privacy preserving technologies in crypto. I’ve written about some examples on the Ethereum chain in the past like the infamous Tornado.Cash:
And Umbra.Cash with its stealth payments:
Today though I decided to show you how to use a solution on Base that I recently came across called Veil.Cash, which has been clearly inspired by Tornado.Cash.
Open Veil.Cash
To begin, start by opening the app from veil.cash/app, and connect your wallet on the top-right:
You’ll be shown the interface above, which is clearly reminiscent of Tornado.Cash’s interface as shown below:
Both apps show the deposit and withdraw options on the left side, with incremental amounts of ETH that can be deposited in different pools. While on the right side they show the deposit history and balance of each pool. Both systems follow the same fundamental principles with a few key nuances that you’ll see below.
For you to get an understanding of how to use Veil.Cash we’ll both deposit some money and then withdraw it. But first we need to understand how Veil’s pools work.
Pools
Firstly, Veil.Cash (as inspired by Tornado.Cash) works by mixing a bunch of funds in a pool of money together such that the link between the money coming in and going out is severed. In other words you cannot see a clear flow of money going from sender to receiver because it gets all jumbled up with other people’s money.
However, an important consideration to note is that Veil has two pool types:
Public Pools that have a deposit limit applied to total amount of deposits per day.
Verified Pools where deposit limits are applied per address (user) per day.
For verified pools you need to use Coinbase’s onchain verification, which essentially links your wallet with a verified Coinbase account. Only Verified Pools allow for the larger pool limits of 0.01 ETH, 0.1 ETH and 1 ETH.
You may note that if you’re having to verify yourself to use these pools then you’re not being private, right? And you’d be right.
This seems to be the compromise that Coinbase/Base have found of allowing Veil.Cash exist on their network to mitigate it being used by bad actors who want to launder money. This way transactions on verified pools can be traced internally by Coinbase to a verified person if they seem to belong to a bad actor.
Therefore verified pools don’t provide the full anonimity that you get with Tornado.Cash where there’s no type of verification, but they do at least provide on-chain anonimity as sender and receiver addresses get split up on-chain.
With Veil’s public pools though you can send through your money without needing to verify yourself providing full anonimity. Yet, these pools only allow amounts above 0.05 ETH on Veil, whereas on Tornado by comparison their pools go up to 100 ETH so a lot of money can be anonimised far more easily.
Deposit
We’ll focus on public pools for now where you get a lot more privacy, even though the limits are far lower.
Start then by selecting “Public Pools” with the 0.005 ETH pool and hit “Start Deposit”.
You’ll then be given a secret note. Treat this a bit like a seed phrase in that this note should not be shared with anyone else, because anyone who has it can withdraw and therefore steal the money you’ve left on Veil.
Note that for this tutorial I’m breaking those rules by showing you the secret note below, but I’ll have taken the money out by the time you see this note so it’ll be worthless.
Save this secret note safely and securely, if you lose it you lose access to your money!
Then click the text box to confirm, and select “Deposit”, before going ahead it’ll double check you’ve saved your secret note.
Then your transaction should go through very fast since we’re on Base!
Wait
As I said above, Veil works by disconnecting the sender and the receiver addresses by putting one of Veil’s pools in the middle.
On-chain you can see that my address sent the 0.005 ETH into Veil:
However, when the money is withdrawn to a new address it’ll also come from Veil, so it won’t necessarily be clear who sent the original 0.005 ETH in.
In principle the larger the gap in time between deposit and withdraw transactions the more your ETH gets mixed with others’ in the pool and the more challenging it is for blockchain analysis to connect up sender and receiver, since the money could be coming from anyone who’s already in the pool.
Therefore, ideally you should now wait a good while before you withdraw what you put in to make the mixing of funds more effective.
If a sender sends 0.005 ETH in, and 10 minutes later withdraws, and there’s not been any more transactions in that pool over the last few days, then it’s pretty obvious who the sender and receiver are. The inverse is true if you’ve waited a long time and there have been a lot of transactions over that period.
So the longer you wait between depositing and withdrawing the better.
Withdraw
When you’re ready to withdraw your funds from Veil, you start by selecting “Withdraw” where you’ll then be given the option to put your secret note in plus select an address to withdraw too.
This withdraw address can be whatever you want it to be, but do note that sending it right back to yourself will render the process pointless since you’ll not be severing any link between the sender and receiver as they are the same address!
In this view some interesting stats are shown that are worth noting. On the left side you can see “Subsequent deposits” after my deposit, the more there are the more your furnds become harder to trace back to the depositor.
And on the right side you can see the total balance in the pool and total number of deposits, and once again the higher these numbers the more privacy you’ll be afforded as your money’s more deeply mixed with the rest.
Once you select “Start Withdrawal” it’ll generate a proof for you that’ll be put on chain to return the money to the withdrawal address, and then a new send button will appear and once you hit it the transaction will go through!
Success!
You’ll now see the transaction was successful with it showing that the money left Veil and went to your receiving address, hiding who the original sender was!
As I said at the start, privacy is incredibly important and underpins a functional society. So I welcome more privacy preserving technologies in Web3 and will continue to share them when I come across them.
With this sort of solution you can now split wallets comfortably without anyone onchain being able to know where the money originally came from.
You’ve seen how to use Veil.Cash and understand the principles of how mixing works onchain, but Base also has other privacy preserving solutions like Fluidkey that are similar to Umbra.Cash’s stealth addresses, which I may make a post for in the future.
Let’s keep fighting the just fight and make sure people have good privacy preserving technologies onchain.
Whenever you’re ready, these are the main ways I can help you:
FREE access beginners.tokenpage.xyz - Get yourself started in crypto, setting up your first wallet and buying your first crypto. Includes a 1-on-1 call with me for free, and $1,990+ of bonus course material.
VIP access beginners-vip.tokenpage.xyz - Learn to build real lasting wealth in crypto. Includes weekly Q&A calls where you can ask me anything, and our proprietary DeFi portfolio software.
Web3 software development at tokenpage.xyz - Get your Web3 products and ideas built out by us, we’ve built for the likes of Zeneca, Seedphrase, Creepz and more.