Subject: [bitcoindev] BIP 21 Updates

From: Matt Corallo <[email-masked]>
Date: Thu, 30 May 2024 17:54:26 -0400

It was recently pointed out at [1] that BIP 21 mandates only base58 adresses, and doesn't allow for 
segwit or taproot addresses in the body of the URI. This is obviously somewhat nonsensical as nearly 
every wallet supporting BIP 21 today handles Segwit (and many even Taproot) just fine in that 
position today.

Further, nearly every BIP 21-handling lightning wallet today also supports decoding lightning 
payment instructions in the query parameters. With Silent Payments and BOLT 12 starting to get 
adoption and BIP 21 being the obvious place to put extra payment instructions with an (optional) 
on-chain fallback, there needs to be a standard way to decide which query parameter describes which 
payment instruction, and BIP 21 should document this in-practice usage.

Further, as future payment schemes (and existing ones like Silent Payments) may wish to not have the 
standard on-chain fallback, I'm also proposing the body of the URI be made optional.

None of these changes impact any existing wallets, as wallets already support bech32 and bech32m 
addresses, new query parameters are ignored by any existing spec-compliant wallet, and a BIP 21 URI 
with no body would only exist to provide a URI *without* a fallback for existing wallets, which 
would correctly reject them as invalid.

Thus, I'm proposing a change to (the already "Final") BIP 21. The relatively minimal change set is 
available at https://github.com/bitcoin/bips/pull/1555 but I'm open to discussion on it here as well.

[1] https://github.com/bitcoin/bips/pull/1394

-- 
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email-masked].
To view this discussion on the web visit https://groups.google.com/d/msgid/bitcoindev/93c14d4f-10f3-48af-9756-7e39d61ba3d4%40mattcorallo.com.