@@ -234,26 +234,30 @@ These session-specific parameters use a bech32-inspired encoding.
234
234
The HRP is used as the parameter key, followed by the '1' separator,
235
235
followed by the parameter value encoded using the bech32 character set in
236
236
[ uppercase] ( #uppercase-url ) . No checksum is used. Parameters are separated
237
- by a ` + ` character.
237
+ by a ` - ` character.
238
238
239
- The following parameters are defined, and must be provided in reverse
240
- lexicographical order:
239
+ The following parameters are defined, and must be provided in lexicographical
240
+ order:
241
241
242
- - ` RK ` : encodes the * receiver key* as a 33-byte compressed public key.
243
- Senders will initiate HPKE with the receiver using this key.
242
+ - ` EX ` : specifies a [ session
243
+ expiration] ( #session-expiration ) in [ unix
244
+ time] ( https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16 ) .
244
245
- ` OH ` : encodes an alternate format of the OHTTP Key Configuration of
245
246
the directory. It consists of a 33-byte compressed public key of the
246
247
directory's OHTTP Gateway, prefixed by the 2-byte Key Identifier. A [
247
248
RFC 9458 Key
248
249
Configuration] ( https://www.ietf.org/rfc/rfc9458.html#section-3.1 )
249
250
is reconstructed by assuming the HPKE KEM ID and Symmetric Algorithms
250
251
are [ fixed] ( #secp256k1-hybrid-public-key-encryption ) .
251
- - ` EX ` : specifies a [ session
252
- expiration] ( #session-expiration ) in [ unix
253
- time] ( https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16 ) .
252
+ - ` RK ` : encodes the * receiver key* as a 33-byte compressed public key.
253
+ Senders will initiate HPKE with the receiver using this key.
254
254
255
255
For example, a properly encoded endpoint Bitcoin URI looks like this
256
- ` bitcoin:tb1q6q6de88mj8qkg0q5lupmpfexwnqjsr4d2gvx2p?amount=0.00666666&pjos=0&pj=HTTPS://PAYJO.IN/TXJCGKTKXLUUZ%23RK1Q0DJS3VVDXWQQTLQ8022QGXSX7ML9PHZ6EDSF6AKEWQG758JPS2EV+OH1QYPM59NK2LXXS4890SUAXXYT25Z2VAPHP0X7YEYCJXGWAG6UG9ZU6NQ+EX1WKV8CEC `
256
+ ` bitcoin:tb1q6q6de88mj8qkg0q5lupmpfexwnqjsr4d2gvx2p?amount=0.00666666&pjos=0&pj=HTTPS://PAYJO.IN/TXJCGKTKXLUUZ%23EX1WKV8CEC-OH1QYPM59NK2LXXS4890SUAXXYT25Z2VAPHP0X7YEYCJXGWAG6UG9ZU6NQ-RK1Q0DJS3VVDXWQQTLQ8022QGXSX7ML9PHZ6EDSF6AKEWQG758JPS2EV `
257
+
258
+ Until 2026 implementations SHOULD also accept ` + ` as a fragment parameter
259
+ separator and not enforce parameter ordering requirements, for compatibility
260
+ with the [ previous version of this document] ( #changelog ) .
257
261
258
262
### Sender Original PSBT Messaging
259
263
@@ -734,3 +738,15 @@ directory, and development kit may be found here:
734
738
< https://github.com/payjoin/rust-payjoin > . Source code for an Oblivious
735
739
HTTP relay implementation may be found here:
736
740
< https://github.com/payjoin/ohttp-relay > .
741
+
742
+ ## Changelog
743
+
744
+ - 0.2.0 2025-07-08
745
+ - Change fragment parameter delimiter from ` + ` to ` - ` to improve
746
+ compatibility with generic URI parsing libraries, and order them
747
+ lexicographically. ` + ` can cause issues due to a common convention (not
748
+ specified in RFC 3986, but in RFC 1866, in relation to HTML form
749
+ submission and query parameters) of interpreting ` + ` as ` ` when decoding
750
+ URIs.
751
+ - 0.1.0 2025-05-28
752
+ - First merged Draft version of BIP 77
0 commit comments