Tsunami wallet aims to provide enhanced privacy on Ethereum. The main objectives are to improve privacy in an adversarial environment. The end goal is to enable someone to create a transaction with no possible link with the origin, even from highly sophisticated adversaries.
The main leaks of privacy it aims to improve upon are:
Ethereum does not have a feasible SPV mode available at this time. Mobile users hoping to connect to the Ethereum network are required to do so though a node provider. This node provider will have access to a few key datapoints the user:
To prevent IP address leaks, all network connections through Tsunami Wallet are through TOR. This provides one level of privacy, in that the IP address of the user is never disclosed to the node operator.
The next problem is timing analysis. If a node operator sees a Tor IP looking up the balance of 3 different addresses at almost the same time, they could make the assumption that the three addresses may be linked in some way.
It is for this reason that Tsunami wallet has two distict wallets. A regular ethereum wallet, and a "private" ethereum wallet.
Care needs to be taken to not request balances of either wallet at the same time.
For address link-ability, ZK proofs are used, and attempts are make to prevent the user from accidentally making transactions that can leak privacy. Initially, the Aztec protocol was used, but until Aztec 2.0 is launched, it is not feasible for address privacy. The current version uses Tornado.cash for address privacy. Tornado.cash only allows for fixed deposit amounts.
The main method that a user can link a Tornado deposit to a Tornado withdrawal are:
Tsunami wallet has features in place to try to block users from making these mistakes. This means:
Tornado Cash notes are encrypted using the wallets private key and saved to the devices local storage. Eventually, they will be backed up somewhere. As it stands, if the user un-installs the wallet, all notes will be lost.
'- Uses Tornado.cash for ZK
Forked Samourai Wallet (for Tor and other UX)