← Back to home

Tsunami Wallet

JavaScript

A mobile privacy wallet for Ethereum.

Problem Statement

Tsunami WalletTsunami 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:IP address & timing lookup linkabilityAddress linkabilityIP address linkabilityEthereum 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:The IP address of the userThe addresses & contracts the user is interested inTo 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.Address privacyFor 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:Sending a transaction outside Tornado from the deposit address to the withdrawal address (or vice versa)Depositing a specific amount and withdrawing the exact same amount to the withdrawal addressDepositing and withdrawing at almost the same timeTsunami wallet has features in place to try to block users from making these mistakes. This means:Tsunami wallet will never let you directly transfer from your private addresses to your non-private addressTsunami wallet uses multiple withdrawal addresses for private balances, as opposed to a single addressIt enforces a randomized time before it allows you to redeem a Tornado.cash noteTornado 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.

Solution

'- Uses Tornado.cash for ZKForked Samourai Wallet (for Tor and other UX)Uses webviews in android with a javascript interface

Hackathon

HackMoney

2024