1
0
mirror of https://github.com/bitcoin/bips.git synced 2025-07-21 12:58:14 +00:00

Separate fragment params with - instead of +

Since only Bull Bitcoin Mobile and Cake wallet are currently deployed in
production, both using PDK, and the `+` character is causing some
friction, this change seems justified to avoid similar issues with
future implementations.
This commit is contained in:
Yuval Kogman 2025-07-03 16:24:02 +02:00
parent c17a3dbceb
commit 43f9688600

View File

@ -234,7 +234,7 @@ These session-specific parameters use a bech32-inspired encoding.
The HRP is used as the parameter key, followed by the '1' separator, The HRP is used as the parameter key, followed by the '1' separator,
followed by the parameter value encoded using the bech32 character set in followed by the parameter value encoded using the bech32 character set in
[uppercase](#uppercase-url). No checksum is used. Parameters are separated [uppercase](#uppercase-url). No checksum is used. Parameters are separated
by a `+` character. by a `-` character (previously a `+` separator [was specified](#bip-77)).
The following parameters are defined, and must be provided in reverse The following parameters are defined, and must be provided in reverse
lexicographical order: lexicographical order:
@ -253,7 +253,7 @@ lexicographical order:
time](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16). time](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16).
For example, a properly encoded endpoint Bitcoin URI looks like this For example, a properly encoded endpoint Bitcoin URI looks like this
`bitcoin:tb1q6q6de88mj8qkg0q5lupmpfexwnqjsr4d2gvx2p?amount=0.00666666&pjos=0&pj=HTTPS://PAYJO.IN/TXJCGKTKXLUUZ%23RK1Q0DJS3VVDXWQQTLQ8022QGXSX7ML9PHZ6EDSF6AKEWQG758JPS2EV+OH1QYPM59NK2LXXS4890SUAXXYT25Z2VAPHP0X7YEYCJXGWAG6UG9ZU6NQ+EX1WKV8CEC` `bitcoin:tb1q6q6de88mj8qkg0q5lupmpfexwnqjsr4d2gvx2p?amount=0.00666666&pjos=0&pj=HTTPS://PAYJO.IN/TXJCGKTKXLUUZ%23RK1Q0DJS3VVDXWQQTLQ8022QGXSX7ML9PHZ6EDSF6AKEWQG758JPS2EV-OH1QYPM59NK2LXXS4890SUAXXYT25Z2VAPHP0X7YEYCJXGWAG6UG9ZU6NQ-EX1WKV8CEC`
### Sender Original PSBT Messaging ### Sender Original PSBT Messaging
@ -711,6 +711,8 @@ receiver also specifies the directory.
## Backwards compatibility ## Backwards compatibility
### BIP 78
Senders not supporting Payjoin will just ignore the `pj` parameter and Senders not supporting Payjoin will just ignore the `pj` parameter and
proceed to typical address-based transaction flows. proceed to typical address-based transaction flows.
@ -726,6 +728,18 @@ seconds or else the directory should respond with an `unavailable` JSON
error code as [defined in BIP error code as [defined in BIP
78](https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#receivers-well-known-errors). 78](https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#receivers-well-known-errors).
### BIP 77
A previous version of this document specified `+` as the fragment parameter
separator. This can cause issues due to a common convention (not specified in
RFC 3986, but in RFC 1866 in relation to HTML form submission and query
parameters, not URI fragments) of representing ` ` with `+` in URI query
parameters.
As a result of this change implementations are encouraged to still accept `+`
delimited fragment parameters for during 2026 (a grace period of just under 6
months).
## Reference implementation ## Reference implementation
A production reference implementation client can be found at A production reference implementation client can be found at