Privacy and Cryptocurrency, Part II: Bitcoin Wallets
By: Eric Wall
Tags: Human Rights, Privacy, Bitcoin, Bitcoin Wallet, Cryptocurrency

Another problem with this approach is that if you chose to cloud deploy your BTCPay Server for the sake of convenience, the hosting provider will have the ability to learn about your Bitcoin addresses and your identity. And if you chose to self-host for this reason, although Tor support for BTCPay Server is being worked on, it’s still difficult to guarantee that you’ll be able to hide your server IP address from your visitors.

BIP47 reusable payment codes: While this is in theory perhaps the most elegant approach, the user experience is hampered by the fact that it requires an opening transaction to be done before a donation can be sent, and it is currently only supported in a very small selection of wallets. Further, each of the wallets currently supporting BIP47 are mobile wallets that leak your addresses to their back-end servers. Samourai is developing support to use their wallet with your own full node (a solution called Dojo), but it is not currently released as open-source yet.

Static donation address: Even if you use Wasabi Wallet and mix the coins you receive in CoinJoins and transmit your transactions via Tor, everyone who saw the address you provided will still be able to tell how many coins you received to that address, regardless of what you do with them after.

There are no solutions, only tradeoffs. - Thomas Sowell

In this situation, we have to consider that there might not be any perfect option. However, the multitude of options at least gives us the opportunity to “choose our poison”. Perhaps your identity is already well-known, but you don’t want everyone to be able to identify the donations you’ve received — then BTCPay Server is an acceptable solution. However, if your work is controversial and risking exposing your identity via your IP address is unacceptable and you cannot trust a cloud provider to keep your details safe, then it’s probably better to receive donations to a static donation address. Yes, in this case, you’ll be exposing all the donation transactions you are receiving to the public, but if no one knows who you are, maybe that’s not the end of the world. You can try to limit this exposure by changing your deposit addresses manually regularly, but it only gives you a weak degree of obfuscation.

III. Privately conducting online purchases with bitcoin

Being able to make transactions on the Internet without a credit card company or payment processor harvesting our personal data is one of the reasons why Bitcoin was created. However, third-party tracking on websites is a very real thing and even a website you are visiting for the first time can learn your identity from your IP address, your browser fingerprint or your cookies. A first precautionary step is to use the Tor browser for online purchasing activities you wish to keep private.

Moreover, you might want to obfuscate the source of the funds you use for the payment. For example, if you withdraw bitcoins from your Binance account to your wallet and then purchase a copy of The King Never Smiles with that wallet while you are in Thailand and think that you are anonymous because you are paying in bitcoin, you run the risk of Binance providing corroborating evidence against you to the authorities, linking you to the purchase.

This leaves us the options of mixing and self-sending as mentioned in the previous examples. Wasabi Wallet is designed to make you aware of which UTXOs you are using when you are making a transaction and it also allows you to see whether this is an output that’s been previously mixed or not, which can help you achieve your goal of privacy.

A problem with the self-sending alternative when you are dealing with multiple UTXOs in your wallet is that you must weigh the advantage of the deniability you gain versus the disadvantage of consolidating outputs and thus losing privacy due to the common-input-ownership heuristic. Further, keep in mind that while the deniability self-sends provide may give you an “out” in a working legal system as long as there’s no other evidence tying you to the transaction, a suspicious person might still place a high probability on that you were the sender of the subsequent payment and act accordingly.

In the coming years, there’s a possibility that more and more stores start accepting Lightning payments. As discussed in the first article, there are many privacy benefits to Lightning over on-chain Bitcoin transactions. Among desktop applications, you can use the Lightning App. It’s built on the Lightning Network Daemon (lnd) which you can configure to run over Tor.

Even though Lightning payments are not publicly broadcasted and it’s not possible for a Lightning payment recipient to know which the initial channel in multi-hop route a payment came from, it’s always considered good privacy hygiene to first obfuscate your traces on the blockchain via mixing or self-sends before funding any Lightning channels.

Another technology to keep an eye on is sidechain technology which enables semi-trusted avenues for spending bitcoin using higher degrees of privacy than on-chain transactions (examples). Liquid, for example, already supports confidential transactions today which hides the amounts paid in transactions.

IV. Privately conducting in-person purchases with bitcoin

For in-person payments, regular cash is still a good, private, option. But for a multitude of reason, not everyone can comfortably hold their money in physical currency. A person in a hyperinflationary economy might want to be able to afford the next month’s groceries, or, a person in an abusive relationship might need to secretly hide money from their partner.

If we assume for practical reasons that we are confined to using smartphones for this use case, we run into a slight problem. As we can see on bitcoin.org, there is currently no mobile wallet applications in the “improved privacy” category. This is because smartphones typically rely on being serviced by third-parties who will learn the IP addresses of the user and their Bitcoin addresses.

There seem to be a few potential ways around this, and more solutions are likely to emerge in the coming years. The best current solution is to use a smartphone wallet application which has the ability to connect to your own full node. We have identified a few ones with this ability:

Bitcoin Wallet for Android (also known as “Schildbach’s Wallet”)

BRD for iOS

Blockstream Green for iOS & Android

In the category of mobile wallet applications, Jameson Lopp recommends Blockstream’s Green for iOS and Samourai Wallet for Android. Currently, Blockstream Green is not listed on bitcoin.org because it does not provide the user with full access to their own coins. Instead, it uses a 2-out-of-2 multisignature solution where Blockstream holds one of the keys and co-signs transactions if the user provides a secondary form of authentication (2FA). Enabling a mode where the user is in full custody of their own funds is currently in progress.

Samourai cannot currently be used with your own full node (despite the “Set trusted node” option, which is accused for being misleading [1][2][3]), although they argue that the amount of information that they can collect about users is limited as it is the only mobile wallet currently existing with native Tor support. Samourai is also the only mobile wallet that is implementing CoinJoins for mixing purposes (see Whirlpool) which is currently undergoing an experimental testing stage for advanced users. A potential problem with Samourai’s CoinJoin mixing is that many users will likely still be using Samourai without a full node, which could inhibit the effectiveness of the mixing, but might be better than no mixing at all.

It is good to think of mobile wallets similar as to what we did in the Lightning channel discussion above; it’s always prudent to attempt to obscure the origin of our coins (mixing, self-sends) before we fund a new mobile wallet.

Android users can use Orbit to allow their smartphones to communicate over the Tor network. This makes it possible for applications such as the Bitcoin Wallet to connect to personal full nodes running over Tor. For Lightning wallets, Spark is an example of a wallet that you can run over Tor.