Skip to content

Commit 5127234

Browse files
authored
Rename DNS payment instructions to Human Bitcoin Address (#1203)
* Rename DNS payment instructions to human bitcoin address * Encourage use in UI where appropriate
1 parent ce759ce commit 5127234

7 files changed

Lines changed: 16 additions & 21 deletions

File tree

guide/daily-spending-wallet/contacts.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ Whether we’re sending emails, physical mail, or following someone on social me
213213

214214
Addresses, invoices, node IDs and other transaction endpoints in bitcoin are highly unintuitive. Abstracting them via a contact list can create a much smoother user experience. There are many [payment request formats]({{ '/guide/how-it-works/payment-request-formats/' | relative_url }}), each with unique properties and varying levels of maturity and adoption, requiring unique design solutions. This page will use a more approachable "address" as an umbrella term for various types of payment information.
215215

216-
Some payment request formats such as [silent payments (BIP-352)]({{ '/guide/how-it-works/silent-payments' | relative_url }}), [lightning offers (BOLT 12)]({{ '/guide/how-it-works/payment-request-formats/#offers' | relative_url }}) and [DNS payment instructions (BIP-353)]({{ '/guide/how-it-works/human-readable-addresses/#bip-353-dns-payment-instructions' | relative_url }}) are designed to be safely reused. This property makes them ideal for abstraction through contacts.
216+
Some payment request formats such as [silent payments (BIP-352)]({{ '/guide/how-it-works/silent-payments' | relative_url }}), [lightning offers (BOLT 12)]({{ '/guide/how-it-works/payment-request-formats/#offers' | relative_url }}) and [DNS payment instructions (BIP-353)]({{ '/guide/how-it-works/human-readable-addresses/#human-bitcoin-address-bip-353' | relative_url }}) are designed to be safely reused. This property makes them ideal for abstraction through contacts.
217217

218218
Let's go over common user interactions around managing contacts. This will illustrate how such a feature could work, and helps explain the underlying design problems and decisions.
219219

guide/designing-products/common-user-flows.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ For the simplest form of base layer requests, the receiver only needs to share o
394394

395395
While it is possible to re-use the same receiving address repeatedly, this practice is highly discouraged for privacy reasons.
396396

397-
For more information-rich base layer requests, [BIP 21](https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki) describes a URI scheme to turn requests into links that can be shared like any other link. On click, wallets that support this scheme can immediately show the send screen with the correct information pre-filled. Links can also be encoded and transmitted via QR code. Since the scheme also allows for the inclusion of an address label and transaction description, it allows both sender and recipient to stay organized.
397+
For more information-rich base layer requests, [BIP 321](https://github.com/bitcoin/bips/blob/master/bip-0321.mediawiki) describes a URI scheme to turn requests into links that can be shared like any other link. On click, wallets that support this scheme can immediately show the send screen with the correct information pre-filled. Links can also be encoded and transmitted via QR code. Since the scheme also allows for the inclusion of an address label and transaction description, it allows both sender and recipient to stay organized.
398398

399399
For requests on the lightning network, the receiver needs to create a lightning invoice that includes the amount, and then share the invoice with the sender.
400400

guide/designing-products/interoperability.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ You should ensure your application is interoperable with the various techniques
5959

6060
Supporting, generating, and reading as many [payment request formats]({{ '/guide/how-it-works/payment-request-formats/' | relative_url }}) as possible in your application will make it more interoperable with others.
6161

62-
It also matters how these formats are generated. Your applications should be able to read, and generate, [BIP 21](https://bips.xyz/21) encoded payment requests.
62+
It also matters how these formats are generated. Your applications should be able to read, and generate, [BIP 321](https://github.com/bitcoin/bips/blob/master/bip-0321.mediawiki) encoded payment requests.
6363

64-
An evolving standard that improves payment usability between on-chain and lightning is being able to read and generate [unified bitcoin payment requests](https://bitcoinqr.dev/) that contain an on-chain address and lightning invoice inside a BIP 21 URI.
64+
An evolving standard that improves payment usability between on-chain and lightning is being able to read and generate [unified bitcoin payment requests](https://bitcoinqr.dev/) that contain an on-chain address and lightning invoice inside a BIP 321 URI.
6565

6666
When dealing with lightning invoice [amounts]({{ '/guide/daily-spending-wallet/requesting/#entering-an-amount' | relative_url }}), your application should be able to read and generate zero amount invoices.
6767

68-
Payment links, often using BIP 21, should be readable by your application. Forms should be automatically opened and filled when a user clicks a payment link or button.
68+
Payment links, often using BIP 321, should be readable by your application. Forms should be automatically opened and filled when a user clicks a payment link or button.
6969

7070
[Near-field communication](https://en.wikipedia.org/wiki/Near-field_communication) (NFC) should be supported for paying and sharing payment requests.
7171

guide/how-it-works/human-readable-addresses.md

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,23 +123,18 @@ From email and social media, we are familiar with addresses consisting of a <spa
123123

124124
For social media, users know to navigate to the respective website or app and look up the username there. Applications rely on domains (via the [Domain Name System](https://en.wikipedia.org/wiki/Domain_Name_System), or DNS) to resolve the global part. In physical addresses, we have more hierarchical parts - country, state, city, street, house number and apartment. It is a familiar system.
125125

126-
## BIP-353: DNS Payment Instructions
126+
## Human Bitcoin Address (BIP 353)
127127

128128
This [proposal](https://github.com/bitcoin/bips/blob/master/bip-0353.mediawiki) only relies on the Domain Name System (DNS) to retrieve payment information. DNS is a decentralized hierarchical naming system used to translate human-friendly domain names (like *www.example.com*) into IP addresses (like *192.0.2.1*) that computers use to identify each other on the network. Anytime we type in a domain into a browser, we rely on this system. This use case is very similar to what human-readable addresses try to achieve, making DNS a good fit.
129129

130-
{% include tip/open.html color="blue" label="Note" icon="info" %}
131-
132-
This is a new proposal. It is still being discussed, and not widely implemented.
133-
134-
{% include tip/close.html %}
135130

136131
### Address format
137132

138133
This proposal uses the formats *“<span class="-green">username</span>@<span class="-blue">domain.com</span>”* and *“₿<span class="-green">username</span>@<span class="-blue">domain.com</span>”*. It is similar to the email address format, which makes it familiar and easy to use. The ** prefix is an important addition for display purposes, to make it distinctly a bitcoin payment address. This provides clarity and trust to users, which is important when it comes to financial transactions.
139134

140135
### How it works
141136

142-
Users create DNS entries with payment information, which can be one or more addresses of different formats, combined to a [BIP 21 URI](https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki). Since address reuse is best avoided for privacy reasons, the included addresses should be reusable (like [silent payments]({{ '/guide/how-it-works/silent-payments/' | relative_url }}) and [BOLT12](https://bolt12.org/) offers). Single-use addresses can be used if needed, but a mechanism to rotate them should be in place.
137+
Users create DNS entries with payment information, which can be one or more addresses of different formats, combined to a [BIP 321 URI](https://github.com/bitcoin/bips/blob/master/bip-0321.mediawiki). Since address reuse is best avoided for privacy reasons, the included addresses should be reusable (like [silent payments]({{ '/guide/how-it-works/silent-payments/' | relative_url }}) and [BOLT12](https://bolt12.org/) offers). Single-use addresses can be used if needed, but a mechanism to rotate them should be in place.
143138

144139
{% include picture.html
145140
image = "/assets/images/guide/how-it-works/human-readable-addresses/dns-payment-instructions-mapping.png"
@@ -200,9 +195,9 @@ Framing the correct use of the address should be done right away and as early in
200195

201196
{% include tip/open.html label="Bubble Wallet" %}
202197

203-
The mock-ups below show an imaginary application called "Bubble Wallet". Its naming conventions are based on the idea that _Human-readable address_ is an appropriate descriptive term for technical proposal and discussion, but not necessarily practical for end-users. Due to the similarities to the familiar email format and social media practices, it borrows from those standards.
198+
The mock-ups below show an imaginary application called "Bubble Wallet". Its naming conventions are based on the idea that _Human Bitcoin address_ is an appropriate descriptive term for technical proposals and discussions, and can also be used contextually and subtly in product UI where appropriate—for example, in titles, labels, and input-field placeholders. Due to the similarities to the familiar email format and social media practices, it borrows from those standards.
204199

205-
- A human-readable address is referred to generally as (a new type of) _bitcoin address_
200+
- A human bitcoin address is referred to generally as (a new type of) _bitcoin address_
206201
- More specifically, it is referred to as _Bubble address_ or _Bubble bitcoin address_, because it is managed by the wallet (provider)
207202
- The first part of the address is referred to as _username_
208203
- Other address types are first referred to by their primary properties, and secondly by their technical names

guide/how-it-works/payment-request-formats.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ If you need to test whether your application supports a payment request type, yo
4545

4646
A [Uniform Resource Identifier](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) (URI) is a web technology that uses unique prefixes to identify anything. This can be real-world objects, websites, information, etc.
4747

48-
Bitcoin uses URIs to help apps identify payment requests. The technical details of this scheme are detailed in [BIP 21](https://bips.xyz/21).
48+
Bitcoin uses URIs to help apps identify payment requests. The technical details of this scheme are detailed in [BIP 321](https://github.com/bitcoin/bips/blob/master/bip-0321.mediawiki).
4949

50-
BIP 21 uses a `bitcoin:` URI scheme to identify and help applications manage bitcoin payment requests. Applications should support this if they want to be [interoperable]({{'/guide/getting-started/principles/#interoperability' | relative_url}}) with other bitcoin products. Some other URI schemes used for bitcoin payment requests include `lightning` and LNURL schemes such as `lnurlp`. Note that a URI scheme can be presented as lowercase or uppercase.
50+
BIP 321 uses a `bitcoin:` URI scheme to identify and help applications manage bitcoin payment requests. Applications should support this if they want to be [interoperable]({{'/guide/getting-started/principles/#interoperability' | relative_url}}) with other bitcoin products. Some other URI schemes used for bitcoin payment requests include `lightning` and LNURL schemes such as `lnurlp`. Note that a URI scheme can be presented as lowercase or uppercase.
5151

52-
BIP 21 is extensible and allows for the addition of other useful meta data that give more context to a payment request. This includes things like an amount, labels, messages, and other useful data. It also allows [more than one type]({{'/guide/how-it-works/payment-request-formats/#unified-payment-requests' | relative_url}}) of payment request format to be included in a payment request.
52+
BIP 321 is extensible and allows for the addition of other useful meta data that give more context to a payment request. This includes things like an amount, labels, messages, and other useful data. It also allows [more than one type]({{'/guide/how-it-works/payment-request-formats/#unified-payment-requests' | relative_url}}) of payment request format to be included in a payment request.
5353

5454
A common pattern using URIs for inter-app payments is detailed in the [wallet selector page]({{'/guide/how-it-works/wallet-selector/' | relative_url}}).
5555

@@ -236,7 +236,7 @@ Payment codes have been popularised in wallets such as [Samourai](https://samour
236236

237237
A downside to payment codes is that they require an additional on-chain transaction each time two users want to connect and use them. [Silent payments](https://gist.github.com/RubenSomsen/c43b79517e7cb701ebf77eec6dbb46b8?permalink_comment_id=4113680) are a new experimental proposal that prevents the need for this additional on-chain transaction at the cost of extra bandwidth for receivers.
238238

239-
Static payment codes are great for use with [DNS-based human readable addresses]({{ '/guide/how-it-works/human-readable-addresses/#bip-353-dns-payment-instructions' | relative_url }}).
239+
Static payment codes are great for use with [DNS-based human readable addresses]({{ '/guide/how-it-works/human-readable-addresses/#human-bitcoin-address-bip-353' | relative_url }}).
240240

241241
</div>
242242

@@ -255,7 +255,7 @@ Static payment codes are great for use with [DNS-based human readable addresses]
255255

256256
A unified payment request combines one or more of the formats listed above. This makes it easier to request a payment when you are unsure what formats the sender supports.
257257

258-
Unified payment requests use the BIP 21 `bitcoin:` URI to add multiple payment request formats to a single payment request. The more formats added, the larger the request becomes which can be an issue for lower end devices that can't scan complex QR codes.
258+
Unified payment requests use the BIP 321 `bitcoin:` URI to add multiple payment request formats to a single payment request. The more formats added, the larger the request becomes which can be an issue for lower end devices that can't scan complex QR codes.
259259

260260
You can learn more about unified payment requests [here](https://bitcoinqr.dev/).
261261

guide/how-it-works/wallet-selector.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ We’ll outline each of those below.
8282

8383
### 1. Opening the default wallet
8484

85-
A widely supported standard is [BIP 21](https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki#Examples) (also see [Payment request formats](/guide/how-it-works/payment-request-formats/#uniform-resource-identifier-uris-schemes)), which defines a URI scheme for passing bitcoin payment information to other applications.
85+
A widely supported standard is [BIP 321](https://github.com/bitcoin/bips/blob/master/bip-0321.mediawiki) (also see [Payment request formats](/guide/how-it-works/payment-request-formats/#uniform-resource-identifier-uris-schemes)), which defines a URI scheme for passing bitcoin payment information to other applications.
8686

8787
For example, clicking a link or button with the following URI is opened in the default bitcoin wallet (if there is one installed):
8888
`bitcoin:16AgmhoCVSJoGeEkERPdrsdvJG3RWmum6T`

guide/resources/learning-bootcamp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ Bitcoin Design Guide:
271271
**[Payment Request Formats]({{ '/guide/how-it-works/payment-request-formats/' | relative_url }})**
272272

273273
- What are the key differences between a regular Lightning invoice and a Lightning address in terms of user experience and privacy?
274-
- Why do unified payment requests use the BIP 21 bitcoin: URI scheme? What problem does this solve?
274+
- Why do unified payment requests use the BIP 321 bitcoin: URI scheme? What problem does this solve?
275275
- Between LNURL, Offers (BOLT 12), and regular invoices, which would you choose for building a subscription service and why?
276276

277277
**[Lightning Services]({{ '/guide/how-it-works/lightning-services/' | relative_url }})**

0 commit comments

Comments
 (0)