BitcoinDesign / Guide

A free, open-source community resource for designers, developers and others working on non-custodial bitcoin products.
https://bitcoin.design/guide/
Other
457 stars 98 forks source link

Adds new page about human readable addresses #1082

Open GBKS opened 8 months ago

GBKS commented 8 months ago

This is something we've discussed for a few weeks in the this issue and the UX channel in Discord and turns the findings into a page.

Primary focus of the page is on the DNS-based payment information proposal, with an additional paragraph about Lightning Address and a small note about PayNyms.

The UI mock-ups are more directional than implementation-ready, which I think is fine. But we could flesh this out further in a revision at a later point.

I think there's more work to do in cross-linking this from all the right places. I updated a few spots, but there's probably more. The page is at a point where more review and public feedback would be helpful in identifying missing and incorrect bits.

If you have criticism of the DNS-based payment information proposal, please post it in that PR, and not here. This page is a reflection of the logic described in that PR.

🧐Check the preview🧐

netlify[bot] commented 8 months ago

Deploy Preview for bitcoin-design-site ready!

Name Link
Latest commit 8734a1e93f6abb85ef223793b480d69934927625
Latest deploy log https://app.netlify.com/sites/bitcoin-design-site/deploys/667439045e61a000070e2806
Deploy Preview https://deploy-preview-1082--bitcoin-design-site.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

BitcoinErrorLog commented 8 months ago

Hi, Chris!

Looks great so far, but I have a few issues:

  1. Use of ".btc" as an example, which is a Stacks-oriented tld. Stacks is kind of a scam, and while non-ICANN domains are totally possible, this adds some nuanced confusion, particularly in that there can be many different namespaces with overlapping TLDs.

  2. the B prefix is not practical or necessary.

    • Domains already have a prefix scheme with dedicated subdomains, ex: john@btc.bitcoin.org
    • The B symbol is an uncommon impractical, non-keyboard character
    • This (nicknames for specific endpoints) is not a Bitcoin-specific problem so shouldnt be isolated as one (why not use a Sat symbol, or $, or Eth symbol, or a common keyboard character, etc?)
  3. While I have no special care for/against Paynyms, it seems odd that the text here is so dismissive about it and centralization when all of the other patterns on this page require it too.

  4. While it is interesting to show UX for helping users set up their DNS TXT entry and their own self-hosted payment address, this is a very unlikely pattern, particularly in mobile. Most people wouldn't do this and use a trusted provider, and such likelihood and risk are important to focus on.

GBKS commented 8 months ago

Thank you for the super-fast feedback.

Use of ".btc" as an example, which is a Stacks-oriented tld. Stacks is kind of a scam, and while non-ICANN domains are totally possible, this adds some nuanced confusion, particularly in that there can be many different namespaces with overlapping TLDs.

Thanks for pointing that out. I just pushed a commit updating the sample domains. I had checked whether there are official .btc domains, but was not aware of this "other" use.

the B prefix is not practical or necessary.

There was a lot of discussion around the prefix, and I also asked various people directly. From what I heard, the opinions seem to be really split with no clear majority/consensus. Personally, I agree with the trust argument. The prefix makes it 100% clear that it's a bitcoin address and nothing else. For a casual user, who is not aware of the technical realities of what can and can't go wrong when mixing up emails and bitcoin addresses, this might be an important signal. But I also understand the other way of approaching this argument. Is the better place to discuss this in the original proposal, which this page follows?

Also, did you just mention using a sat symbol? 😉

While I have no special care for/against Paynyms, it seems odd that the text here is so dismissive about it and centralization when all of the other patterns on this page require it too.

True, it is pretty dismissive. But PayNyms is basically a single database, while the other proposals do their best to decentralize, but are bound by the "basic infrastructure of the internet". Ver different ends of the spectrum to me. But if it is too dismissive, then it should be revised.

While it is interesting to show UX for helping users set up their DNS TXT entry and their own self-hosted payment address, this is a very unlikely pattern, particularly in mobile. Most people wouldn't do this and use a trusted provider, and such likelihood and risk are important to focus on.

Agree, this needs more fleshing out. I mention in the page that the UI mocks are conceptual, and I'd like to take more time to discuss and sort this out. I still have some open questions, but also wanted to get this page out.

How do you think this will play out? Dedicated bitcoin address services like we have in Nostr for NIP-05 identifiers?

Thanks again for the feedback.

BitcoinErrorLog commented 8 months ago

With Paynyms, I'm a bit too ignorant, but I'm skeptical they are any more centralized than DNS. All namespaces require an authoritative list to exist somewhere. And anyone can host a new list, or query any existing list they want to. Centralized/decentralized isn't really the correct paradigm for namespaces.

Regarding how I think this will all play out, well, I think it is all moot tbh, and that such things are a fad born of ignorance. No one needs nicknames at a protocol level, they are app-level concerns and thus should be rendered in contact list UX. Domain names are a scam, and thus pay-names follow in kind. This is my, likely unpopular, opinion, so it could also be wrong :)

Think of DNS more like a list of phone numbers. I can either make a list myself, or trust someone else to provide a list (like a phone book/directory), but the difference is all about there being a trusted authority, thus solutions that do not require such an authority are more interesting, or, solutions that aggregate many lists, etc.

If a user wants to pay "Mom" they should be able to just tap on Mom's face, not type in her fake email address into some novel UX.

johnsBeharry commented 8 months ago

PayNyms are perhaps a bit more centralised than a DNS based option solely cause more people host the DNS to HTTP resolvers (1, 2, 3), and such resolvers are open source. With PayNyms only samurai maintain a registry and doesn't look like they have open sourced it.

sbddesign commented 8 months ago

I don't see the value in using the B symbol (which I frankly don't even know how to make with my keyboard). Can somebody educate me on the dangers of mixing up an email address and a bitcoin payment identifier?

TheBlueMatt commented 8 months ago

I don't see the value in using the B symbol (which I frankly don't even know how to make with my keyboard). Can somebody educate me on the dangers of mixing up an email address and a bitcoin payment identifier?

To be clear, the keyboard issue shouldn't be an issue - it should be displayed and in a copy (if wallets allow copying the human-readable names directly, though generally they should prefer to copy the underlying payment instructions for noncustodial wallets), but users shouldn't need to type it.

The reason its there is because payment instructions are a different namespace from email. We've already seen at least one case where a company uses their domain for emails and also to provide users with lnaddresses, with someone having the lnaddress who doesn't work for the company and doesn't have the corresponding email.

@moneyball thought we should have some suggestions to cache name -> (reusable) payment instructions mappings. Sadly, in some protocols (at least DNS) we have pretty tight timeouts for the data itself (eg the domain might expire tomorrow!), so it'd need to be a cache with a notice on changes rather than not doing further lookups. Can happen separately, but something to think about.

alltheseas commented 8 months ago

The "B" symbol is a recipe for frustration, and setting up normies for failure.

but users shouldn't need to type it.

Why limit the design space of what users can, and can't do?

The reason its there is because payment instructions are a different namespace from email. We've already seen at least one case where a company uses their domain for emails and also to provide users with lnaddresses, with someone having the lnaddress who doesn't work for the company and doesn't have the corresponding email.

That's fine - add some other way instead of an impossible to type "B" symbol.

There's "human readable", and there should be, in my view, "human typable". These are the most basic human machine interface requirements.

Normies will not memorize the special character shortcut for "B". We don't have "B" on keyboards today.

Really, anything else on the keyboard, or perhaps even on the more difficult to access emoji keyboard reduces user friction. The designers I'm sure can come up with something better.

Examples: BTC.name@domain SATSname@ ZAPname@ LNname 🌽name@ (or any other emoji)

GBKS commented 8 months ago

The "B" symbol is a recipe for frustration, and setting up normies for failure.

To keep things a bit orderly, I'd like to ask for criticism of the proposal to be posted on the original proposal pull request. This new page in the guide is a reflection of the logic in that proposal. I'll also add this note to the PR description. Proposal criticism is not really something that can be resolved in comments here.

There's "human readable", and there should be, in my view, "human typable". These are the most basic human machine interface requirements.

Totally. The page mentions "read, memorize, pronounce, understand, and type".

mouxdesign commented 7 months ago

Adding in some birds eye view ideas as well. More on the overarching structure of the content, less about the copy itself.

Reading through the content it forms 4 larger chunks:

GBKS commented 5 months ago

I think I addressed all feedback. There are some points around the UI visuals that I will address in a follow-up in #1083. Please take a look and let me know how it looks know. Now that conference season is over, I'd like to wrap this PR up at a good pace. Thanks in advance.

GBKS commented 2 months ago

Strike now supports BOLT12 and DNS-based human readable addresses, along with Zeus, Phoenix and others (full list on bolt12.org). Posting this here, due to the editorial question about proposals with little or no adoption. More adoption over time speaks in favor of this content.

yashrajd commented 2 months ago

Strike now supports BOLT12 and DNS-based human readable addresses, along with Zeus, Phoenix and others (full list on bolt12.org). Posting this here, due to the editorial question about proposals with little or no adoption. More adoption over time speaks in favor of this content.

Concur with Phoenix and Strike support, BIP-353, has decent adoption now.

I'd go further and say Proton Wallet's "Bitcoin via email" is the biggest step thus far in the direction of human-readable addresses and should be added to this page as an example.

GBKS commented 2 months ago

Selfie Records extends BIP353 with additional data types. Another sign of adoption. Nonetheless by Synonym, so it sounds like @BitcoinErrorLog may have embraced it as well.


I'd go further and say Proton Wallet's "Bitcoin via email" is the biggest step thus far in the direction of human-readable addresses and should be added to this page as an example.

@yashrajd, this seems like an internal solution by a private company, and not an open standard, right? Not sure that really belongs on the page, unless there's more to their way of doing things.

BitcoinErrorLog commented 1 month ago

fwiw we are not currently pro- or anti-Selfie Records. The project was made by a motivated team member and we thought it was a good way to express capabilities DNS always had, to frame the design space clearly. All namespaces that want to enforce uniqueness (squatting) require a central authority, but that does not negate that some people find it useful and are willing to take that risk to solve what they consider to be problems, despite its censorability and difficulty for individuals to self-manage.

Our actual love letter to decentralized identity, routing & payment coordination is PKARR (and Paykit, but R&D for that is paused til January) https://github.com/pubky/pkarr -- All of the public keys and endpoint records people want to be putting in DNS or relays or such should be put into Mainline DHT with PKARR. Because it is objectively the most decentralized and resilient network on the internet afaik. Projects like Iroh and Web5 are already using this setup, but Bitcoiners typically prefer bitcoin/LN-dedicated solutions. PKARR doesnt need blockchains or bitcoin keys.

We still arent sure whether/how we might support Selfies in our own products, but we have a bookmark on approaching the "nickname" problem ideally/holistically someday if it seems needed.

Sorry for shilling, but we wouldn't be building these things if we didn't think they were the best solutions :)

ConorOkus commented 3 weeks ago

The self-hosted/DIY path will add a lot of friction, and I don't think many people own personal domains. It may be something more suited to people running businesses/merchants/freelancers etc.

Feedback from the Phoneix implementation suggests users are having a few issues https://x.com/methobit/status/1811496354549760022