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
Develop coin control section #22
Comments
I'd love to see an outline of practical use cases for coin control. It seems like actual coin selection is not an isolated UI thing, but part of general wallet management. Meaning that I only know which coins I want to select for a transaction when I have labelled my transactions/inputs properly beforehand (knowing where they came from), and understand why I should choose specific coins for a transaction to get whatever result I have in mind. Not knowing a ton of detail, it would be ideal to avoid manual coin selection. What if the wallet can have a few coin control preferences that automatically picks coins for me? If it is connected to a full node, can it run some analysis and tell me what I should do? As a user, I'd also like to know if I did my coin selection properly. How do I know whether it "worked"? I personally would find it much easier to design an interface with these question discussed. |
We just talked about this in the design review session. Two use cases that come up were:
With those in mind, it would be easier to create a more focused UI beyond general selection features. For example, a wallet can auto-detect if outputs are piling up and recommend a clean-up at an appropriate time. For the first case, a simple "Sender is an exchange" checkbox might suffice (or maybe a community-generated list of exchange addresses could be loaded in some privacy-preserving way) with a matching "Exclude exchange coins" during the send flow. Either way, a manual selection feature might be needed, with those smarter options layered on top. |
A while back I started playing around with this idea to test content creation on the guide in case that might be helpful:
Also some research done here |
Something to add that I mentioned in today's design review call around having buckets (though I prefer the term folders now). This would exist alongside clever UTXO labeling (such as using hash based icons for each). A privacy focused example would be to only combine UTXOs within designated folders that have a set level of privacy associated with that folder. Instead of individually selecting UTXOs the user could just do something like 'send 0.253 BTC from folder x to address y' once they have assessed the threat model of the receiver. You could design the UI to look like an email inbox which would be familiar to most people with the folders on the left and UTXOs listed the right. Folder examples: Taint free folder - Not concerned about privacy (e.g. UTXOs from close friends) Users should be able to create folders, name them what they want, give descriptions to folders and group UTXOs in them how they like. If there is any major concerns with this idea let me know - keen to do up a mock up to illustrate this further. |
|
@GBKS a drawback to simplifying and only presenting "is from an exchange" is that it doesn't capture other privacy-sensitive things such as
|
So much good information already in this thread, thanks everyone. @pedromvpg good stuff. Is this something you are actively working on or more of an exploration to get thoughts "on paper"? @Bosch-0 do you think this way of organizing transactions could be moved up to an account level? So just like I have a business and a personal account with my bank, I could have multiple accounts that match the taint risks you outlined but use a mental model that people are already familiar with (business, personal spending, social/friends/family, investment)? I am just thinking that all these organizational systems can so easily pile up, make the UI complex and confuse people. Maybe when you create an account, you can choose what privacy level you want to assign and then the UI gives you appropriate tips? Not sure what the right answer is, maybe a matter of mocking up ideas and prototyping... @moneyball could dust attacks be automatically identified by wallets? Seems very suspicious to randomly receive a few satoshi. And for PII, what are the risks? Tons of people these days use reward cards and seem comfortable when companies build profiles of their shopping behaviors. It would, of course, be great to prevent that, but in the end it's "fairly harmless" compared to risks like getting hacked and losing all your money. Drilling down into all of these things might allow us to come up with some elegant solutions (I hope :)). I tried to summarize and structure things in this Google Doc, feel free to edit. |
Yeah you could have a structure like: Account 1 - spending etc. though this could get messy. I'll think about this in more depth soon and do some mockups. |
Ledger just added support https://twitter.com/P3b7_/status/1305966436851089408 |
These are the coin selection strategies Ledger supports (source). |
@GBKS yes good point about automatic detection of dust attacks. It isn't possible to be certain of one, but the pattern is pretty obvious as the minimum amount of sats is (537) is typically used in the attack. so if 537 sats is sent to an address that already has received bitcoin before could be flagged and perhaps a wallet would auto-freeze that UTXO and warn the user. This is a good example of a best practice we can share in our design guide and AFAIK no wallet does this. |
@GBKS regarding this: "And for PII, what are the risks? Tons of people these days use reward cards and seem comfortable when companies build profiles of their shopping behaviors. It would, of course, be great to prevent that, but in the end it's "fairly harmless" compared to risks like getting hacked and losing all your money." Is this a question about financial privacy overall? I'd break it down into 2 things:
I'm not sure if I'm addressing your question so let me know if it is more nuanced. |
@moneyball bigger picture, what I am trying to figure out is how a user should practically think about these risks. This is something that also came up today in the Bitcoin Core GUI call and hebasto referred me to the Privacy section of the Bitcoin wiki. It has a really thorough outline, but also a great and case studies. I'll study this and see if helps me think through this better. |
Sort of similar to the folder/groups/etc described above, I had following idea some time ago: https://bitcoindesign.slack.com/archives/C014BHV38EA/p1595323833349900, on what I've now started to think of as a "simplified coin control with presets", see attached PDF for example design using Blockstream Green. Concept: "Simplified coin control with presets"
some things missing/could be interesting:
The idea is that using presets, and reference as well, to match utxos to use in transaction, and thus not require user to manually select UTXOs, can provide a good chunk of privacy benefits automatically to users while not adding that much extra friction. Also, by having the user from the get go select presets, and maybe even enter references also, then in the future once they've learned more about the privacy benefits of finely selected UTXOs for each transaction, they could advance into utilizing manual utxo selection in the wallet app as well, and, crucially, do so with relative ease as all their UTXOs would already be with labels (presets + reference in my suggested design) Also shown in attached PDF is flow to manually select UTXOs, again, for Blockstream Green as example. |
Concept ACK Simplified coin control with presets. Would love to see this as a good starting point for the design guide. |
@s-5Q2X8mgeGR your proposal is great. Would you be open to sharing your design source files for collaboration? Would be great to turn this into a clickable prototype, too. When sending, I think it would be easier to be able to select a preset and the app picks the specific coins (instead of me having to pick coins). Do you think the tags could be used in other areas of the app as well? From your proposed labels, there is some overlap with contacts. This might sound more complex initially, but might be easier once set up. So if I have you in my contacts and previously sent you bitcoin via the "Friends" preset, then it could automatically pick the right preset for the next transaction also and I just need to pick you from my contacts (which is more intuitive/personal, ignoring the potential address re-use issue for a moment). Another use for presets (and contacts) is that the app can categorize my finances. It can show me how much I spend on "Goods and services" or how much I spent in fees for "Exchanges", etc. It's always great when new features also make existing use/features better. |
Would you be open to sharing your design source files for collaboration? Would be great to turn this into a clickable prototype, too. For sure, will get done sometime this week, just gonna clean up figma file a bit first. When sending, I think it would be easier to be able to select a preset and the app picks the specific coins (instead of me having to pick coins). Yes, this is what I propose in the design as well. The concept is to match the UTXOs based on same preset, and same reference if possible too. The "Select UTXOs" flows is just an extra flow for more advanced users. The overlap with contacts-- without solving the address re-use (which, without a centralized service involved, seems only possible with paynyms maybe), I don't see how this could make sense for the user. It'd be neat to, yes, select a recipient from contact book but it'd just add a lot of trust to various components. Yep, categorization of finances would be neat. Basically, for a mobile wallet appealing to new users, the closer we can get to an experience and functionality to a generic neobank mobile app, probably the better (without losing any of the core bitcoin properties, of course) |
@s-5Q2X8mgeGR sorry, totally missed that part about auto-select, thanks for the tip. Regarding all this additional data wallets store locally, it would be ideal if there was some standardized formats so it could be easily ported and synced between wallets. Could include meta data for transactions and addresses (tags, descriptions), as well as a list of contacts. I bet somebody has already worked on something like this somewhere. |
Attached is Figma file for the above linked design (not link, my Figma account's KYCd, need setup a bitcoin-only Figma account...) (zipped bc Github don't accept .fig) |
Thank you. Is it alright if I share a re-uploaded version of your Figma file that we can use to discuss and collaborate? |
@GBKS yes, please do. |
And here you go. |
I like the idea of tags better than folders. Having multiple tags give you more flexibility, whereas folders force you to choose one category. When sending you could filter all your UTXO's by multiple tags: show me all #spendable #KYC #CashApp for example. The wallet could ship with a few default tags (that get localized), and the user should be able to add their own as well. |
Could always use both tags and folders |
Already some great thinking here https://www.figma.com/file/mPoRMRTBOvi61M8psIp4XY/Coin-Control?node-id=0%3A1
The text was updated successfully, but these errors were encountered: