From 43f9688600c7bcd79eabc5cca15c54e51626b1dc Mon Sep 17 00:00:00 2001 From: Yuval Kogman Date: Thu, 3 Jul 2025 16:24:02 +0200 Subject: [PATCH] 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. --- bip-0077.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/bip-0077.md b/bip-0077.md index 25f73b26..77af747e 100644 --- a/bip-0077.md +++ b/bip-0077.md @@ -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, followed by the parameter value encoded using the bech32 character set in [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 lexicographical order: @@ -253,7 +253,7 @@ lexicographical order: 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 -`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 @@ -711,6 +711,8 @@ receiver also specifies the directory. ## Backwards compatibility +### BIP 78 + Senders not supporting Payjoin will just ignore the `pj` parameter and 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 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 A production reference implementation client can be found at