question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Uppercasing BECH32 address and schema in QR code

See original GitHub issue

Uppercase QR codes are easier to scan, so we should make the effort to uppercase whatever characters we can in the URI.

Since Bech32 addresses are already uppercased by default in Bitcoin Core I expect that shouldn’t be a problem. Upper-casing the schema could be a different beast… but so far in my testing it seems that only CashApp implemented this in a wrong fashion. Also, before I changed it last year, BtcPayServer was uppercasing schema component of QR Code URI.

To make sure we’re not creating problems for merchants, this time I would prefer we first test which wallets support different format and then decide whether:

  1. We will uppercase BECH32
  2. We will uppercase schema
  3. We will do both

List of tested wallets

Here is the list of wallets tested so far, feel free to contribute by testing with wallets you have.

Wallet Name BITCOIN:BECH32 BITCOIN:bech32 bitcoin:BECH32 bitcoin:bech32 Validated By
Atomic Wallet ✔️ ✔️ ✔️ ✔️ @brijananand
BitBoxApp ✔️ ✔️ ✔️ ✔️ @Stadicus
BitBoxApp for Android ✔️ ✔️ ✔️ ✔️ @Stadicus
Bitcoin Wallet Android (Schildbach) ✔️ ✔️ ✔️ ✔️ @freerko
Blockchain Info @pavlenex
Blockstream Green ✔️ ✔️ ✔️ ✔️ @britttttk
BlueWallet ✔️ ✔️ ✔️ ✔️ @britttttk
BLW Android ✔️ ✔️ ✔️ ✔️ @anitaposch
BRD ✔️ ✔️ @pavlenex
Breze ✔️ ✔️ ✔️ ✔️ @Kixunil @brijananand
BTCPay Server ✔️ ✔️ ✔️ ✔️ @pavlenex
Casa ✔️ ✔️ ✔️ ✔️ @jlopp
CashApp ✔️ ✔️ ✔️ ✔️ @britttttk
Coinbase Wallet ✔️ ✔️ @Fichte42
Coinomi ✔️ ✔️ ✔️ ✔️ @rockstardev
Copay @anitaposch
Eclair ✔️ ✔️ ✔️ ✔️ @rockstardev
Edge ✔️ ✔️ ✔️ ✔️ @pavlenex
Electrum 4.0.8 ✔️ ✔️ ✔️ ✔️ @pavlenex
Electrum Android ✔️ ✔️ @LinoxBE @anitaposch
Exodus ✔️ ✔️ ✔️ ✔️ @Fichte42
Fully Noded ✔️ ✔️ @pedromvpg
Hexa Wallet ✔️ ✔️ @mutatrum
Ledger Live Desktop ✔️ ✔️ @onyb
Ledger Live iOS ✔️ ✔️ @woutersamaey
Lighting by L.Labs @brijananand
Moonshine ✔️ ✔️ ✔️ ✔️ @pedromvpg
Muun ✔️ ✔️ ✔️ ✔️ @Fichte42
Mycelium iOS @britttttk
Mycelium 3.7.0.5 - Android ✔️ ✔️ ✔️ ✔️ @vjsingh-lite
Phoenix ✔️ ✔️ ✔️ ✔️ @Kixunil
Samourai ✔️ ✔️ @Kixunil
Shakepay ✔️ ✔️ ✔️ ✔️ @aiouy
Specter Desktop @mutatrum
Strike ✔️ ✔️ ✔️ ✔️ @rockstardev
Trezor (wallet.trezor.io) ✔️ ✔️ @schulzemic
Trezor Suite ✔️ ✔️ ✔️ ✔️ @prusnak
Trust ✔️ ✔️ ✔️ ✔️ @Fichte42
Wallet of Satoshi ✔️ ✔️ ✔️ ✔️ @Kixunil
Wasabi ✔️ ✔️ ✔️ ✔️ @johnsBeharry
Zap ✔️ ✔️ ✔️ ✔️ @britttttk
Zeus ✔️ @davterra
Bitcoin.com (owned by Roger Ver, scammer) ✔️ ✔️ @pavlenex

How to test

A) Scan the following QR codes from your wallet.

1. BITCOIN:BECH32

1 BITCOIN:BC1Q6APR55WRXTDTK3CJ6M69MXAYW99VVGTVDNVUNT?amount=0.00005142

2. BITCOIN:bech32

2 BITCOIN:bc1q6apr55wrxtdtk3cj6m69mxayw99vvgtvdnvunt?amount=0.00005142

3. bitcoin:BECH32

3 bitcoin:BC1Q6APR55WRXTDTK3CJ6M69MXAYW99VVGTVDNVUNT?amount=0.00005142

4. bitcoin:bech32

4 bitcoin:bc1q6apr55wrxtdtk3cj6m69mxayw99vvgtvdnvunt?amount=0.00005142

B) Report results in the comments in table view if possible. For example Wallet| No | Yes | Yes | Yes |

DO NOT SENT ANY FUNDS. Just test if the QR codes above can be scanned and report.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Reactions:9
  • Comments:68 (28 by maintainers)

github_iconTop GitHub Comments

5reactions
rockstardevcommented, Dec 29, 2020

All right gents, I’ll open PR for uppercasing BECH32 by the end of the week, but rollout will go easy and slow as we build awareness… and keep an eye if we can uppercase more parts of URI.

4reactions
kaloudiscommented, Feb 1, 2021

Zeus is adding support for all cases with this PR: https://github.com/ZeusLN/zeus/pull/411. Will squeeze this into v0.5.0 and will be available for testing from v0.5.0-beta1 and onwards.

Shouts to @rockstardev for the reminder.

Read more comments on GitHub >

github_iconTop Results From Across the Web

[Feature request, discussion] Uppercase schema in QR- ...
Bitcoin Core 0.19 through 0.21 (at least) uppercases the bech32 address in BIP21 strings so that they will produce less complex QR codes...
Read more >
Bech32(m)
Bech32 and Bech32m are address formats used to pay native segwit outputs. ... Problems with QR-encoded bech32 BIP21 invoices with uppercase schema ......
Read more >
Bitcoin Optech Newsletter #127
This week's newsletter describes a proposed change to the bech32 address format for taproot, mentions a bug handling certain QR-encoded ...
Read more >
Address in bitcoin_explorer - Rust
Creates a URI string bitcoin:address optimized to be encoded in QR codes. If the address is bech32, both the schema and the address...
Read more >
Unified QRs for Bitcoin
Note that every example features uppercase `bech32` strings (bitcoin addresses, invoices, and offers). When a QR code is encoded in mixed mode, ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found