unstoppable-wallet-android icon indicating copy to clipboard operation
unstoppable-wallet-android copied to clipboard

Coin Control + Generate & Label Addresses for Privacy

Open trymeouteh opened this issue 2 years ago • 13 comments

To make privacy easier in Unstoppable Wallet 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. Unstoppable Wallet is the best fully open source wallet on the market and the best crypto wallet on F-Droid for degoogled users to have access to and enjoy. 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 Unstoppable wallet 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. https://github.com/horizontalsystems/unstoppable-wallet-android/issues/3301

trymeouteh avatar Jan 20 '22 23:01 trymeouteh

I dislike this. This looks.. Completely non standard?

If you want new bitcoin addresses, create a new bitcoin wallet.

What you describe sounds like you want monero-style addresses.

Monero is not a fork of bitcoin and doesn't process tx, create addresses, accounts etc in the same way.

Your best bet is to just use XMR

JMHO. But I don't like these far reaching changes that don't follow protocol standards (and seemingly would have no backwards compatibility?)

You can already create multiple bitcoin 'accounts' on separate derivation paths within Unstoppable.

If you want separate wallets, I don't think unstoppable has a limit to the amount of wallets you can name and create. Yes they will have different seeds. But what you're asking above seems to be a answer in search of a long, painful problem.. A problem that doesn't really exist.

Just my 2c

Don't like the syncing backups idea either. Simply create an "export setup" that creates an encrypted backup the entire wallet. Then sync however you choose.

If you want privacy, it's simple: use the right tool for the job...

nahuhh avatar Jan 24 '22 04:01 nahuhh

Yes this feature makes transparent cryptos like Bitcoin have Monero like addresses. To sum it up, all this feature request is adding coin control to prevent you using two or more addresses to send coins in a transaction, adding custom labels to addresses so the user knows what each address is and was used for with the ability to easily backup and sync labels with other apps using a file, and to optionally have a sync feature.

The sync feature I can care less about as long the labels are stored as files which can be accessed in the phones file manager. Monero is great but most people use transparent cryptos. This feature can allow you to interact with non private coins with the most privacy possible.

The problem with generating a new 12/24 seed phrase wallet is that there is no easy way to backup or restore your seed phrases on the go, especially securely since copy/pasting seed phrase is not ideal. I dont want to have to keep track of dozens of 12/24 seed phrases, would prefer to only have to keep track of one 12/24 seed phrase and a file which labels my wallet addresses, that is much simpler.

No other wallet does this but even if one wanted to switch wallets, they wont lose their coins, all that will happen is that from there on most like not have coin control and not have their addresses labelled. By creating a file and a directory for these files to be stored on a system, a simple standard can be born to enhance privacy of those using transparent cryptos, especially in a world of transparent crypto adoption.

trymeouteh avatar Jan 24 '22 23:01 trymeouteh

Monero is great but most people use transparent cryptos.

If others use them, that's on them. Maybe you need to request to these people you do business with, that they need to respect your privacy. E-fiat is more private than transparent crypto a, b and c.

Why are you using garbage for transactions? "Because it's all people accept". Supporting that statement is bad for crypto.

"support protocols that don't work" .. In a tech arms race? No thanks. Since xmr has been fully private zec has implemented zk tech, dash with auto-coinjoins, and fedcoins have done nothing aside from losing their "transactional crypto" status, and they dont even work as a store of value.. Mining isn't free.

So, because people were tricked into holding a terrible store of value, that has more cobs than pros vs fiat.... we should support further usage of this garbage? No. The projects clearly don't care about you.

a simple standard can be born Yes, happened years ago. They are called privacy coins.

to enhance privacy of those using transparent cryptos, especially in a world of transparent crypto adoption. Sounds like a shitcoin problem.

Why are you trying to cut the grass with a chainsaw? Just use the lawnmower.

Use the tools as intended. Transparent crypto isn't usable in ethereal world? Stop using it..

If these protocols respected people, or were meant to be USED for transactions, they would be at least as private as e-fiat. But no.. In the real world, anyone who uses them for transactions is not pro progress.

These are protocol level problems. Bitcoin needs privacy.... At the protocol level. If it's not at the protocol level, crazy workarounds like this request will be here forever (or until people give up on supporting fedcoins).

BTC might be #1 today, but that because it's only an investment vehicle. Why invest in btc? It cant actually hold its value, isn't usable without sacrificing privacy or jumping through hoops to hide your tracks (lol..).

The problem with generating a new 12/24 seed phrase wallet is that there is no easy way to backup or restore your seed phrases on the go, especially securely since copy/pasting seed phrase is not ideal.

Keepass

nahuhh avatar Jan 25 '22 05:01 nahuhh

Not going to debate this but I assume someday Monero will be integrated into Unstoppable Wallet and I never used Zcash and I assume it uses multiple addresses to receive Zcash.

If Monero and other privacy coins get integrated, you will be able to generate sub addresses with these privacy coins. To be able to add custom labels to each address will be useful in itself on knowing what sub address was used for. Adding coin control will ensure two or more address dont mix together in transactions.

Yes privacy coins are better, yes increasing adoption of privacy coins is good. However many more functions can be done on transparent coins and dominate the market like DeFi, staking, NFTs, which one can use Unstoppable Wallet using WalletConnect. Right now and to the near future it will seem transparent coins will become mainstream for popular crypto coins, especially with bitcoin growing in popularity. How many places do you go and buy things from that accept crypto, let alone a private coin like Monero. If I had to guess it will be 0 or close to 0. In fact more places are refusing cash and will only accept E fiat. I dont like this and neither do you I assume and lets face it, I doubt most businesses will accept a privacy coin on a massive scale or it will be a long time for this to happen.

Using Keepass is not ideal since you need to copy/paste the seed phrase which is not good security practice and storing a seed phrase in a digital format is never as secure as using paper. Better to have one 12/24 seed phrase and have it backed up in a secure fashion.

With that being said, wouldn't it be nice to have a wallet with some optional (not required/forced) tools to enhance your privacy to the fullest in a surveillance digital world while the public only knows about transparent coins? The internet is not private so people use things like VPNs and Tor to enhance their privacy online. In a way your advocating people to only use Tor an onion sites and to forget about the world wide web and businesses that use it since they do not meet ones privacy needs by using such non-private technology. Email is popular and still popular today and is not going away anytime soon. To increase email privacy one can use PGP when accepted and email aliases like Anonaddy, these are tools to make the transparent email more private. Why not add two features to make crypto more private which will be optional for the user to use?

trymeouteh avatar Jan 25 '22 15:01 trymeouteh

Not going to debate this but I assume someday Monero will be integrated into Unstoppable Wallet and I never used Zcash and I assume it uses multiple addresses to receive Zcash.

No. Zcash uses 1 static t address and one static z address.

Monero is on the short term roadmap.

If Monero and other privacy coins get integrated, you will be able to generate sub addresses with these privacy coins. To be able to add custom labels to each address will be useful in itself on knowing what sub address was used for. Adding coin control will ensure two or more address dont mix together in transactions.

You can currently add labels to monero accounts and subaddresses in every monero wallet.

Monero yes. Zcash, no.

How many places do you go and buy things from that accept crypto, let alone a private coin like Monero. If I had to guess it will be 0 or close to 0. In fact more places are refusing cash and will only accept E fiat. I dont like this and neither do you I assume and lets face it, I doubt most businesses will accept a privacy coin on a massive scale or it will be a long time for this to happen.

And it doesn't get better by supporting protocols that don't care about your privacy.

You seem to be under the impression that somehow privacy coins are more private than cash, but no. The reality is just that xyz shitcoin is insanely more public than efiat.

Using Keepass is not ideal since you need to copy/paste the seed phrase which is not good security practice and storing a seed phrase in a digital format is never as secure as using paper. Better to have one 12/24 seed phrase and have it backed up in a secure fashion.

No you don't have to copy and paste. You can easily type it, or type it on an offline device. Keepass works on Linux, Mac, Windows, Android, iOS etc etc etc.

  • if twofish/aes + argon2d encryption isn't strong enough for you, I don't know what to tell you 😅

I'm not sure if you realize, but your unstoppable seeds are stored ON the device. I'd assume unstoppable uses the secure element (which has been hacked on iOS) or uses an encryption algo to secure the seed file.

There is 0 difference between using a hot wallet vs saving the seed to an encrypted file. In fact, keepass likely allows for higher levels of encryption than any default setting offered by any wallet (you can increase the ram requirements, encryption rounds etc)

With that being said, wouldn't it be nice to have a wallet with some optional (not required/forced) tools to enhance your privacy to the fullest in a surveillance digital world while the public only knows about transparent coins?

Nah. I'll use and promote stuff that works.

The internet is not private Btc = http Xmr = https

The internet IS private today. Wasn't so when btc was created. BTC and (other transparent blockchains) have not kept up with the times. For tech projects, they are failing on purpose.

so people use things like VPNs and Tor to enhance their privacy online. In a way your advocating people to only use Tor an onion sites and to forget about the world wide web and businesses that use it since they do not meet ones privacy needs by using such non-private technology. Email is popular and still popular today and is not going away anytime soon.

Email is centralized and old tech. "Not your server, not your emails"

No. I'm recommending everyone stop using http.

To increase email privacy one can use PGP when accepted and email aliases like Anonaddy, these are tools to make the transparent email more private. Why not add two features to make crypto more private which will be optional for the user to use?

There are plenty of projects that aim to add privacy to shitcoins

Tornado cash Coinjoin Samourai wallet

Even ltc is taking about mimblewimble

What we don't need to do, is add more bandaids to the problem. More lipstick on the pig. Look the horse in the mouth. The problem isnt wallets, coinjoins, etc. The problem is: you're supporting the wrong projects.

People will learn. https://youtu.be/WZItfC5d8Bc?t=2786

nahuhh avatar Jan 25 '22 19:01 nahuhh

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.

trymeouteh avatar Jan 26 '22 01:01 trymeouteh

Not because xyz crypto doesn't work well. Not because xyz crypto does.

But this request doesn't, to me, appear to be realistic in the slightest.

Storing zip files on public storage? In the name of privacy? You should know that every app on your phone has read access to public storage before asking to store readable addresses.

This request would also need "features" like "always return change to the same spend address".

Trust wallet doesn't rotate bitcoin addresses. Maybe their users would like this. They don't seem to care about privacy either.

I 100% understand that it is easier to find places that accept dogecoin... But to ask others to make dogecoin usable is ridiculous. These public blockchain are broken at the protocol level.

Use monero or fiat.

Or, if you care about privacy, you need to go bother those public blockchain communities and find out why they don't care. And if they do, why they won't turn their coin into a monero clone (since that's what you're asking for)

nahuhh avatar Jan 26 '22 01:01 nahuhh

That is why I suggest having the text files and ZIP files encrypted, and syncing/backup to the cloud is optional to the user by them setting up their cloud storage app to sync the folder to their cloud. You already expressed how you do not like this feature request which even if it is implemented will not affect your current use of the wallet for you by simply not using these features and disabling coin control in the settings.

I am not going to debate you on this, just made an adjustment to improve on the scalability of the feature. You do not have to like this feature and can refuse to use transparent coins but I personally would like to see this feature and I think others will to for what it offers.

trymeouteh avatar Jan 26 '22 03:01 trymeouteh

@trymeouteh @nahuhh thanks for insightful discussion guys. I will try to followup on all raised points shortly. Keep the ideas coming !

esengulov avatar Jan 26 '22 06:01 esengulov

That is why I suggest having the text files and ZIP files encrypted, and syncing/backup to the cloud is optional to the user by them setting up their cloud storage app to sync the folder to their cloud. You already expressed how you do not like this feature request which even if it is implemented will not affect your current use of the wallet for you by simply not using these features and disabling coin control in the settings.

I am not going to debate you on this, just made an adjustment to improve on the scalability of the feature. You do not have to like this feature and can refuse to use transparent coins but I personally would like to see this feature and I think others will to for what it offers.

No need to debate. As a users, I vote no on this proposal.

I've explained why, but tdlr

  • Every feature you asks for, exists on a blockchain that was built for the features you ask for. It's called monero.
  • monero is not yet implemented, and should be prioritized over doing hackish workarounds to try to make a broken machine work.

Also,

  • you don't seem to know how zec works, or even that it is already implemented in unstoppable
  • unstoppable does not support many blockchains at the moment. Bitcoin and ether forks being the main ones.
  • you don't seem to understand how a hot wallet stores sensitive info

I really think you need to take your proposal to the blockchains that this issue pertains to. Unstoppable is a very good wallet and does not need any dirty hacks to make things work. Having things work as designed is why I am a user of unstoppable.

This is not a wallet problem, as monero has proven, this is a blockchain problem. If vocal advocates of privacy like ourselves won't speak up, the blockchains will never fix their inherent issues.

https://github.com/bitcoin/bitcoin https://github.com/bitcoin/bitcoin/issues/6568

nahuhh avatar Jan 26 '22 07:01 nahuhh

If Monero was implemented, would you be against a feature to add labels to sub addresses? If not then all this feature is is that, labels for sub addresses with the label system to be stored as files for easy backup and syncing if the user decides to sync or backup the labels folder and adding coin control setting to make transparent coins not mix two or more addresses when sending, that is it.

The label feature will benefit any coin, especially Monero. And coin control will add additional privacy to users. Here is a reason why I want to see this feature.

My currency of choice is Monero. Because it is private. I do hope unstoppable wallet integrates Monero someday. And I hope to store most of my crypto in Monero, however not everyone uses Monero and to be able to not surrender my privacy, it would be very useful to have a wallet with coin control to ensure 2 or more addresses do not mix and to be able to label addresses on what the addresses were used for. If someone wants to send me bitcoin and bitcoin only, I can accept the bitcoin by generating a new address, adding a label to remember who gave it to me in that address and then convert it to Monero later. Same for buying something online but the store only accepts bitcoin and instead of using a swap service, I want to hold BTC for a bit before buying the item since I think Monero will go down or bitcoin will rally, I can create a new address, label it for what I am using it to buy in the future, and be ensure no one else on the blockchain can know that this bitcoin address is connected to my other bitcoin addresses.

This feature I suggest is useful for privacy coin users. To use the coin control to its fullest, it requires the users understanding traceability on blockchains and I think many advanced crypto users who want privacy understand this and this feature will be a good tool for them to use.

I use something called Invidious and Newpioe which is a YouTube front end and Youtube app which enhances the users privacy, I could just use another video platform and boycott YouTube but I will never have access to good content or a large library of videos by doing so, so instead I use tools like Invidious and NewPipe to use YouTube in a private. I prefer Monero but Bitcoin is king and it would be nice to have a fully open source app that is available on F-Droid which has the tools to use cryprocurrencies with the up most privacy. Believe me, I am all for privacy. I use Linux, mostly use open source software only, use a degoogled Android ROM, only download apps on F-Droid and never Google Play or sideload APK files.

Just like a VPN can prevent your internet provider from tracking you, coin control can prevent blockchain analytics from knowing two or addresses you control are connected and labels can help you organize your many addresses you will accumulate over time. VPNs are not perfect on their own, just like coin control is not perfect out of the box on its own. Still prefer Monero but I am realistic on the crypto space and understand transparent coins are more adopted and know of a solution to use transparent coins for someone who wants privacy.

Hope this clears up the usefulness for such a feature

trymeouteh avatar Jan 27 '22 14:01 trymeouteh

As previously mentioned, all current monero wallet implementations allow labeling of subaddresses. I'd assume the same to be true in unstoppable, given full integration. So the feature request isn't relevant to monero, it should be assumed that you will be able to label the subaddresses.

The default monero cli wallet is an encrypted file.

I think it's easier to simplify

  1. Generate bitcoin address
  2. Bitcoin (etc) address has symbols for
  • 🔁 generate
  • 🔐 lock
  • ✏️ rename next to address
  1. Not using any of those 3 features results in default behavior
  • 🔁 will immediate show the "next" address
  • 🔐 will freeze / stop auto rotation of addresses
  • ✏️ will show the renamed wallet as a subaccount (available when expanding main coin on wallet screen). and cycle the "main" account to the next address.
  1. Main account will blacklist (not spend) any outputs from subaccounts
  2. Sub account can be x'd to and confirmed to "delete" the subaccount from the main account blacklist. Doing so should aggregate the balance from deleted sub account and main account.
  3. Unstoppable should allow "export/import" of the entire wallet file, in encrypted form. Export should include
  • seeds and restore heights
  • wallet names
  • watchlist
  • settings

Backup should be encrypted, of course. .. And only work with unstoppable.

nahuhh avatar Jan 27 '22 16:01 nahuhh

With my suggestion, you can still just use every single address once and the UI can be designed to ask for what address to receive to when you tap the receive button, it can ask for a new address or a older address you have which will give more control of your wallet with clear address management.

If it is not possible to use the 12/24 seed phrase to encrypt the label files and the label backup ZIP file, then even having a setting in the app to "Set a password" for label files which will be used to encrypt/decrypt label files and encrypt/decrypt the ZIP file when imported and exported. If possible I would suggest using the 12/24 seed phrase since it is one less step and one less password that will need to be remembered and written down.

This idea is new for a crypto wallet but a powerful one for managing addresses, having more privacy with transparent coins for ensuring addresses do not mix and with labels getting implemented, it will also help with integrating Monero fully and allowing you to use Unstoppable Wallet on two or more devices with Syncthing or some similar setup and keep track of all of your Bitcoin addresses, Monero addresses, Ethereum addresses, etc?

The label feature has many similarities to my Transaction Notes feature suggestion, such as a directory to store transaction notes for the ability to sync them between devices, encrypting the transaction notes. Imagine a fully open source wallet that you can get from F-Droid, that supports many currencies, has strong privacy by supporting privacy coins and by having coin control, allows you to label your addresses, transaction notes, wallet connect, 12 word/24 word seed with optional passphrase, VPN/Tor support. Sounds like the best wallet on the market to me!

There are features that Unstoppable have I will never use and future goals I do not care to see in the wallet but I understand the is most likely demand for these features and as long they do not affect my privacy or prevent the app from being delisted from F-Droid, I am not bothered by these things.

trymeouteh avatar Jan 30 '22 22:01 trymeouteh

@trymeouteh @nahuhh hey guys it's been a while. we decided not to implement such non-standard functionality for the time being as this would add unnecessary complexity to the app

esengulov avatar Apr 14 '23 08:04 esengulov