Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coin Control + Generate & Label Addresses for Privacy #131

Open
trymeouteh opened this issue Jan 20, 2022 · 2 comments
Open

Coin Control + Generate & Label Addresses for Privacy #131

trymeouteh opened this issue Jan 20, 2022 · 2 comments

Comments

@trymeouteh
Copy link

trymeouteh commented Jan 20, 2022

To make privacy easier in AirGap when using non-private cryptos (Which are most cryptos out there) I would like to suggest adding coin control and the ability to easily create new addresses within a wallet. There are a few ways this could be done but I think this is the best and most user friendly approach.

By adding a label feature to label addresses in your wallet will also enhance the experience with privacy coins such as Monero so the user knows what a sub address was used for or is being used for.

How it works

Lets say this is your 12 word seed phrase...

humor camp fitness whisper duty sort organ betray monkey wait hedgehog network

The BTC address this will be with the derived path set to "m/44'/0'/0'/0/0" would be...

1ETs5hXpsEPkNnTnE9zpNvVvpXuPVPsxcc

The BTC address this will be with the derived path set to "m/44'/0'/0'/0/1" would be...

1Hw49fABAg9DFxWLtx6Z4SLY5H1dm2LTNq

The BTC address this will be with the derived path set to "m/44'/0'/0'/0/2" would be...

12e4WwmdTeCcieHhSmE2Zp5XxqN7wzh6v6

And so on.

We can call these addresses "sub addresses". When you browse your sub addresses for a certain coin you have these options on managing sub addresses.

  • Rename the sub address (Give the sub address a label). If no label is set it will set the label to the derivided path number
  • Show/Hide sub address (To be able to hide addresses you no longer use)

Sub Address Label File

In the apps setting you will choose a directory on the device on where sub address label file will be stored. This directory will save the sub address labels for each wallet and the app will read this directory for files to determine if you have labels set for certain sub addresses.

A folder will be designated for saving TXT files which will look like the example below. Each file will be named after the address.

/Wallet 1/Address Labels/Bitcoin (Segwit)/1Hw49fABAg9DFxWLtx6Z4SLY5H1dm2LTNq.txt

McDonalds on Main Street

/Wallet 3/Address Labels/Dash/XjhdSYsh6vrnq86vbCaeiPtX8Z1uqhH929.txt

KFC on 3rd Street

Using the 12/24 word phrase and BIP39 passphrase (If there is a passphrase used), this could be used to encrypt the text files and even the text file names making it so other apps or malware cannot determine what addresses you control by seeing the text file names and by seeing the contents of the text files (the labels themselves).

Import/Export

Simpily you can export all of the files in the "Address Labels" folder into a ZIP, GZIP or 7Z file. And be able to import a ZIP/GZIP/7Z file into the app to restore your sub address labels.

Third Party Backups/Syncing

Another important feature to this will be syncing/backups of the sub address label files. I strongly suggest having a directory that the user can choose where the sub address label files are stored on a device which gives the users options on how to backup the sub address label files. The user can setup their cloud storage app such as Nextcloud, FileN, etc to do automatic backups of their sub address label files. Users can also use Syncthing to backup and sync the sub address label files between devices.

With how I suggested the file structure to be setup by having a file for every single label, it will take up little space, and reduce conflicts when using third party syncing/backup tools compared to having a file that will store multiple labels in it at once.

Coin Control

Coin Control will need to be added to the wallet. Coin Control is a feature were sending an transactions, it will only use one output and never combine two or more addresses to send coins in a outgoing transaction. If Coin Control remains as a setting in the wallet (Coin Control can be disabled or enabled) Then I would like to suggest having it on by default and when turning if off, it will warn the user that with coin control off, your outgoing transactions may use two or more outputs.

Conclusion

This is a big feature request but a powerful one for any crypto wallet. AirGap Wallet is the most secure fully open source wallet on the market. Most cryptocurrencies are not private due to the traceability of the coins on the transparent blockchains. This feature when used will allow users to use transparent non-private cryptos such as Bitcoin, Litecoin, Ethereum, etc with privacy. It will also allow for adding labels to privacy coin wallets like Monero sub addresses. To transfer your coins from your main Bitcoin wallet to one of your Bitcoin sub addresses, you do not just send it from "Wallet 1" Bitcoin main to "Wallet 1" Bitcoin sub address 001, you swap from "Wallet 1" Bitcoin to a privacy coin like Monero and then swap Monero to "Wallet 1" Bitcoin sub address 001 and then send it out from there.

This feature would benefit with more privacy coins being added to AirGap such as Monero and having swaps within the app that support all coins to be exchanged for privacy coins and vice-verse.

This feature also shares many similarities to the Offline Transaction Notes. If the Offline Transaction Notes comes to be, it would be amazing to also have offline transaction notes for sub address transactions.
#46

@trymeouteh
Copy link
Author

Updated the main post which explains a way to reduce conflicts when syncing files using third party apps like Syncthing, removes the built in syncing mechanism in the feature request.

@AndreasGassmann
Copy link
Member

Hi again.

The main focus of AirGap is security and usability. While privacy is important as well, it is generally not our main priority. The reason for this is because privacy is a very subjective topic. For you, privacy is about who can see how much crypto you have on one address and with whom you have transactions. But for other people, this doesn't go far enough. They want privacy from the wallet developers as well, so they will only use wallets where they can use other nodes. Others want to go even one step further and only access the cryptocurrency network over TOR, etc.

Once we open the rabbit hole of privacy, there are so many things that could be done, and we simply don't have time to look into those.

The solution for this is that we continue to focus on security and simplicity, but we allow AirGap Vault to be used with other companion apps that have a different focus. This is why a few updates ago, we made AirGap Vault compatible with other watch-only wallets. The BTC watch-only support is still in Beta because we have only tested it with BlueWallet (mobile wallet) and Sparrow Wallet (desktop wallet). However, because we use an industry standard, other BTC watch-only wallets should also be compatible.

Because you are very concerned about privacy and would like to use advanced features like coin-control, i would suggest that you take a look at Wasabi Wallet. This is a privacy-first wallet and it will hopefully give you all the tools that you need to manage your funds.

I think ultimately, you just have to accept that some currencies simply do not provide the level of privacy you are looking for.

We're currently working on tutorials for watch-only wallets. They are not released yet because they are not complete, but you can already take a look:

https://support.airgap.it/guides/bluewallet/
https://support.airgap.it/guides/sparrow/

For ETH, we added support for MetaMask last week:

https://support.airgap.it/guides/metamask/

PS: Regarding the sub-addresses, did think about how you can actually put funds onto those addresses in a way that isn't trackable? The coins need to come from somewhere. Unless you use a feature like CoinJoins, it will be easy to track individual addresses and link them together, so simply having sub-addresses does not really solve the privacy issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants