Revisiting BIP21

The more I think about it, this seems like a nice middle ground: update BIP21 to allow anything that already self identifies with an HRP to be included as a parameter. If it doesn’t have an HRP or if the HRP doesn’t indicate the protocol being used (payjoin, for example), it needs an extension key. This would allow URIs of the form:

  • bitcoin:sp1q..?lno...
  • bitcoin:bc1p..?lnbc..
  • bitcoin:sp1q..?bc1p..
  • bitcoin:bc1p..?pj=<>

The really nice thing here is we don’t need to define a new addr key and wallets that support address type X already know how to check for an HRP.