Name of the feature is yPhoon: aka Typhoon on Yearn…based upon the Tornado cash privacy mixer Tornado Cash · GitHub
If this proposal passes it will add the ability for each vault in the yearn ecosystem to function as a mixer, giving everyone the ability to deposit funds from one address and withdraw them via another. Doing this will enable absolute anonymity and privacy for all users by breaking the chain so to speak and allowing deposits into a fresh address with no traceable history.
The proposal will work in the same way that tornado cash does for Ethereum mixing with slight changes as described below.
See an intro to tornado cash here Introducing Private Transactions On Ethereum NOW! | by Tornado Cash | Medium
To enter a yPhoon enabled vault the user must perform the following actions
- Generate a secret and send the hash plus the coins to the vault.
- The amount of coins to be sent must be one of a list of certain quantities. If the amount sent is not part of the anonymity set the deposit should fail.
- Leave the funds in the vault, the longer the better, not just from a yield perspective but from an anonymity perspective
- To withdraw, send proof that you lay claim to an unspent commitment (the secret provided in step 1), plus the address you wish to withdraw to
Why would we want to do this? For 3 simple reasons.
- To attract more/different users to yearn which will generate more fees. We have tapped the investors that want a cheaper way to get yield, there are other discussions around using vaults to work with options, and now we are tapping the privacy market which is new and has not been done before in DeFi afaik. If it works, this piece of lego can be used by other defi dapps, which would bring tremendous volume through
- To create the largest mixing service on the Eth chain and allow anyone to protect their privacy, not only with Eth, but with any coin/token that yearn provides a vault for. Currently with tornado cash you can only mix Eth, Yearn has the ability to mix anything a vault holds due to the amount of participants within the vault.
- While your funds are “in the mixer” they will actually be gaining in value via the yield generation strategies, which is something Tornado cash cannot do which is a huge point of difference.
Before I get into the spec, just know im not a dev so I have made some assumptions on how the underlying smart contracts work. Also if any of these changes would break something im not aware of please provide feedback in the comments on this proposal.
Firstly we would have to decide what anonymity sets we want. For ETH, Tornado cash has 0.1, 1, 10 and 100 ETH deposits, I don’t see any reason why these would not be appropriate for yPhoon. We could add in 5, 20, 50??? For our Link delegated vaults we might choose a different set, maybe 10, 20, 50, 100, 150, 200, since 1 Link is worth less than 1 ETH accepting anything less than 10 may be a waste of time. The yUSD vault would be in a similar situation and due to its price would need a different set that makes sense.
As a suggestion it would make sense to run a few reports of the vaults to get a sense of the sizes that people are depositing with per vault.
Once we have anonymity sets worked out, the smart contracts that govern deposits will have to be upgraded to filter for yPhoon deposits…ie any deposit that matches an anonymity set quantity, would also require a “secret” to be sent. (Alternatively we could have a check box on the webpage or a separate webpage all together to selectively turn this on, so if it wasn’t ticked yPhoon would be off and the vaults behave as they do now, even if you did end up sending say 10 ETH)
The yearn yPhoon deposit smart contract receives the secret and the coins, sends the coins to the strategy and earns yield. These particular coins are locked and cannot be withdrawn unless a secret is also provided along with a new ETH address. There will need to be a different withdrawal tab on the website to allow yPhoon withdraws vs regular withdraws.
Please note, if you forget your secret, you will not be able to get your coins back, ever.
As stated im not a dev, so if this passes, ill need someone to do the actual work on this. If there is any one time reward or on going reward for this if implemented it would be split with the dev or devs.
- Great idea, let’s start the dev process and flesh it out more
- No, we should not do this