Let’s make some Noise!

Amnesia cash
3 min readNov 5, 2022

--

An anonimity incentivicing token model.

A short recap: Amnesia Cash is a token mixer inspired by Tornado Cash. Due to recent events, it was decided to beyond just cloning Tornado and includes a new ‘bouncing’ model in order to self-regulate and fend off tainted funds from being mixed in with legitimate uses.

The act of mixing is quite simple to understand with a simple analogy. Have a bag, everyone puts in one coin, shake the bag, and everyone takes one coin. Since coins on blockchains have a history we can now say the link is broken. But can we really? If the bag contains only 2 coins, does it really break any link? Probably not, but 3 then? Or 5? or 100?

From the above statement, it is quite clear that more entries in the mixer is better. But people eventually want to take it out, usually rather faster than later as most think of privacy when it is already too late. So the question comes up, should we rely on people to just leave their funds there? Of course that could be the answer. But the entire blockchain and crypto space is held together by a game-theoretical cost-benefit equilibrium. It doesn’t assume certain behavior because ‘it is the right thing’.

So, onto incentivicing anonimity. Tornado Cash actually had a very good way of doing this. The introduction of the ‘Anonimity Mining’. Tornado Cash had the ‘problem’ of patching this method on an already deployed ecosystem which resulted in a non-optimal implementation. We at Amnesia Cash don’t have this problem(yet) and can make some adjustments accordingly.

The basic principle is very simple: reward those who keep their funds in the mixer.

Now when adding privacy and zero-knowledge proofs things get a bit more complicated and there is a lot of ‘irreducible’ complexity to the details of this implementation.

Introducing ‘Noise’

Noise is a measurement of added anonymity to a specific token pool. You generate Noise simply by keeping your tokens inside an anonymity pool. The moment you withdraw your tokens from the pool you get access to a ‘shielded’ account that represents the amount of Noise generated. What does shielded mean exactly? It is exactly similar to z-cashes shielded balances. No outsider knows the amounts held in these accounts exactly but you can validate that the minting of the shielded accounts is done correctly.

Since Noise generation is very straightforward [X Noise Per Second] we can easily know the total supply of Noise by simply calculating the total of all entries in the pool between each timestamped ‘pool interaction’ (deposit or withdraw). However, we cannot know exactly who owns what as those amounts are shielded!

Now, cool, there is a token with auditable totals but shielded distribution, but what is the incentive exactly? Well, happy you asked:

When depositing into an anonymity pool you need to pay an extra deposit fee upfront. This fee is not small, depending on governance, somewhere between 0.5% and 5%. Amnesia will at a certain time and/or volume intervals auction off these received fees for a single currency: Noise tokens.

In theory, this means that if 100 people deposit and withdraw at the same time and bid in the same auction at the same time, they all get their deposit fee back. In practice, people will deposit and withdraw at different intervals. Meaning those who keep their funds in longer, eventually, get a larger bidding potential in the auctioning of deposit fees enabling them to earn back more tokens as they put in as fees, potentially giving them a net profit. And those who wish to get access to their funds quickly forfeit a claim on their deposit fees.

This mechanism opens up a whole new set of game-theoretical behavior, and one particular inevitability I want to mention here:

There will be popular times to deposit and withdraw, depending on auction times. Withdraw right before an auction, and deposit right after. Creating these game theoretically occurring intervals will add tremendously to the anonymity of the protocol because it makes it much harder to perform an external analysis on the incoming and outgoing transactions.

There is a lot more detail to this and will be explained later with proper documentation. However, if you have any questions feel free to talk about it on our discord or Twitter.

--

--