-
Notifications
You must be signed in to change notification settings - Fork 38.7k
GUI: Rephrase Bech32 checkbox texts, and enable it with legacy address default #12208
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
Conversation
src/qt/forms/receivecoinsdialog.ui
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think adding (bech32) here would be preferable since it seems to be used by the industry (Electrum, etc.).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
k
|
utACK 4959aa9a62ded74fcd343d6e402c79e3ebcba241 |
37a1c20 to
5f5fe40
Compare
|
Please see this comment #11991 (comment) tl/dr: Maybe "spend from" is not correct phrasing, but clicking this checkbox once won't reduce all your future transaction fees either |
|
Although I'm fine with this change, I think #11937 is a better solution for users who launch with If #11937 is merged, I think it's more clear to hide the checkbox when the user switches to legacy, if only so they don't forget to switch back to p2sh. There's a certain airdrop coin that just switched to using bech32 without SegWit. In addition bech32 is used by Lightning, so calling this "native segwit" might lead to confusion. I also don't think the phrase "native SegWit" is any less intimating than "bech32". Maybe call it "Use modern address format (Bech32)?" Adding support back for
Alternatively "beginning with a digit" or make the "1" and "3" a variable in the string that you can switch during runtime. |
|
bcash's thing is not bech32, it's gratuitously incompatible. I would prefer to call these "bc1 addresses" because that's how they're recognize able to users. Something like "Use bc1-style addresses. These addresses use segwit natively which reduces your transaction fees later on and offers better protection against typos, but old wallets don't support them. When unchecked, an address compatible with older wallets will be created instead." [Edit] The text above "begins with Bc1 ... " sounds quite good to me. Esp the instructions telling you what to do if it fails! The "when you spend it" could be changed to "later when you spend the received funds".
Yes there is, the reason for having legacy in the first place is backwards compatibility. That reason is blown up the first time the user selects anything but legacy. Also, more choices aren't without a cost. Along those lines, I don't see the usecase for #11937 but will comment there.
An alternative to hiding it completely would be when legacy is set it could grey out the BC1 address option (and perhaps add a note 'legacy mode enabled'). ... this would reduce confusion for someone that managed to follow some instruction to set legacy and then are later confused when they can't find the combobox. |
|
+1 for "bc1 address" I agree the bcash thing is weird, but assuming wallets hide** the
|
|
"The separator is 1 because using a non-alphanumeric character would complicate copy-pasting of addresses (with no double-click selection in several applications)" -- BIP173 There were many design considerations in BECH32 which we didn't explain in the spec but that wasn't one of them. One of them was the potential for using an invisible magic value instead of or in addition to the HRP for distinguishing uses. Instead of has the problem of having no useful error reporting, in addition to had the problem that cross application usage would be more likely to be falsely accepted.
Almost all of the time: but not all the time-- the HRP they use is so long that any replacement one is going to exceede the guaranteed detection difference and possibly accept a swapped address however this would be very rare. Though preventing an erroneous send won't stop the user from being confused and doing something to fix it that makes things worse since UI's can't give feedback. I'd take a bet that someone will create a spinoff that doesn't change the effective HRP for the checksum, since it's not operably part of the address. I don't think they're all that visually similar compared to any other string of encoded data, but the big difference is the bc1 prefix--- talking about that more will make people pay attention to it. |
|
utACK 5f5fe406d6e9b5b64c13a76c2d74b0dc7f27c01a |
|
Maybe I'm alone here, but from previous discussions the goal is to push native segwit addresses forward. IMO the UI should not give the impression it is optional to not generate native segwit, instead, it should give the option to generate non-native segwit address. When
When
I'm not fond of "changing" the texts of the UI, but with this approach, the checkbox text will reflect when the Please correct me if my reasoning is wrong in any way. |
Having this checkbox already goes a long way in encouraging adoption. Firstly it lets normal (non-RPC) users actually use it. Secondly it raises the bar for other wallets / services and gives them some confidence they're not wasting engineering time. See e.g. this tweet from Kraken. Like RBF, I think this needs to happen in two phases: first we clearly offer it to the user and then - assuming no unexpected problems arise and the rest of the industry actually adopts it - we make it the default. Making it the default now would lead to confusion, especially from users who don't even notice the checkbox, suddenly see a different address format and think something is wrong with their wallet. I forgot the word for "UX should not change as fast as technology allows, but should respect human ability to adapt to these changes", but it's similar to how Apple used Skeuomorphism on their early iPhones but switched to more abstract representations (and relied more on gestures) once people became familiar with smart phones in general. |
I'm not suggesting that. |
|
FWIW, my view on deployment is that even having the checkbox is rushing things... but not unacceptably. I think initially software should be made able to send to these addresses, then later made able to receive them. Having the checkbox allows faster usage, but at a cost of creating a small amount of confusion due to having a somewhat complicated option that often (esp initially) won't work. I think it's a good trade-off, and I'm already using BC1 addresses (as I assume many other advanced users will)-- but it's not a free decision either. |
I was confused by what you meant with:
I don't think it's worth changing the text for when a user launches with |
Those users would get the "future" UI. They won't see a difference when the default is changed. |
|
Is this for 0.16? |
|
Concept ACK, i think the new text is fine. It's always going to be a bit fuzzy to explain the way in which a new address format influences fees later, but the current text is non-actionable anyway (users don't generally control the coin selection, so the link between transactions and fees is vague at best). |
|
Needs rebase |
5f5fe40 to
0cdd445
Compare
|
Rebased. I wouldn't mind "bc1", but the existing terminology seems well-established, and listing all 3 seems like a bit much. |
|
+1 for "bc1 addresses." |
Echoing @MarcoFalke. |
randolf
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In line 209 of src/qt/forms/receivecoinsdialog.ui, please change "(aka Bech32 or BIP-173)" to: (a.k.a., Bech32 or BIP-173)
(This is only a minor correction to punctuation.)
|
IMO "aka X" is standard English these days...? |
|
@luke-jr You make a fair point, especially since English has been changing due to acronyms being used in texting on cellular phones (e.g., "afaik" is obviously easier to type than "a.f.a.i.k."), and so I don't think that you're wrong. My thinking was that in many circles "aka," (without the periods) is still regarded as slang, leaving "a.k.a.," (with the periods) as being the more traditional usage, but of course English is evolving (as it always has). Also, for people who are not fluent in English, "aka" has the potential to be confusing because it looks like a word, whereas "a.k.a." will be much more easily understood as an acronym. My personal preference is to favour the English style that lends itself more to academia and English writing tradition because from my perspective it gives the Bitcoin software, as a whole, a more professionally-polished appearance, which I think is ultimately beneficial to this project overall. But this is also peer-review, and what I think isn't necessarily correct either. |
src/qt/receivecoinsdialog.cpp
Outdated
| } else { | ||
| address_type = model->getDefaultAddressType(); | ||
| if (address_type == OUTPUT_TYPE_BECH32) { | ||
| address_type = OUTPUT_TYPE_P2SH_SEGWIT; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand the logic here: if default address type is BECH32 set it to P2SH_SEGWIT
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because ui->useBech32->isChecked() is false in line 145, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed. The logic is that if useBech32 is unchecked, we don't want to use Bech32 even if that's the user's default. In that case, we use P2SH_SEGWIT instead. But if the default is P2SH_SEGWIT or LEGACY, then we leave it alone.
| Addresstype default | Checkbox | Result |
|---|---|---|
| legacy | on | Bech32 |
| p2sh-segwit | on | Bech32 |
| bech32 | on | Bech32 |
| legacy | off | Legacy |
| p2sh-segwit | off | P2SH-Segwit |
| bech32 | off | P2SH-Segwit |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense.
Sjors
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested ACK 0cdd445, though I have a light preference for dropping that commit and sticking to 3920633 (just the text change).
When launched with -addresstype=legacy the phrase "an address compatible with older wallets will be created instead" is ambiguous. It might be better to drop the last sentence in legacy mode.
It's weird that the user can't create a P2SH_SEGWITaddress, but it's strictly an increase in functionality over the current situation.
src/qt/receivecoinsdialog.cpp
Outdated
| } else { | ||
| address_type = model->getDefaultAddressType(); | ||
| if (address_type == OUTPUT_TYPE_BECH32) { | ||
| address_type = OUTPUT_TYPE_P2SH_SEGWIT; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense.
|
Needs rebase. |
- "Bech32" isn't very user-friendly - You don't spend from addresses
0cdd445 to
c21f42a
Compare
|
Rebased |
|
utACK |
|
Needs rebase again (seems merge ready). |
|
Needs simple rebase, utACK thereafter. |
|
I've rebased this in #13251. |
… legacy address default 82dda6b GUI: Allow generating Bech32 addresses with a legacy-address default (Luke Dashjr) 7ab1c6f GUI: Rephrase Bech32 checkbox text/tooltip (Luke Dashjr) Pull request description: - "Bech32" isn't very user-friendly; used "native segwit" as in #11937. - You don't spend from addresses. - No reason to block off Bech32 access with legacy address default. Rebased from #12208 Tree-SHA512: c82dd20d967a7f47bcc75b25be0d3a8cf00cfccc1cd14916b87d70b9c56fd53e366b456348b173f36c89b145b76624413780abaed4cea82117a9ecd47dd8fb99
…it with legacy address default 82dda6b GUI: Allow generating Bech32 addresses with a legacy-address default (Luke Dashjr) 7ab1c6f GUI: Rephrase Bech32 checkbox text/tooltip (Luke Dashjr) Pull request description: - "Bech32" isn't very user-friendly; used "native segwit" as in bitcoin#11937. - You don't spend from addresses. - No reason to block off Bech32 access with legacy address default. Rebased from bitcoin#12208 Tree-SHA512: c82dd20d967a7f47bcc75b25be0d3a8cf00cfccc1cd14916b87d70b9c56fd53e366b456348b173f36c89b145b76624413780abaed4cea82117a9ecd47dd8fb99
Uh oh!
There was an error while loading. Please reload this page.