-
Notifications
You must be signed in to change notification settings - Fork 399
Description
Scanning a QR code generated by Elements for a Liquid address produces a URI prefixed with bitcoin: instead of liquidnetwork:.
Example produced QR content:
bitcoin:VJLHRjZWjLHL7YzSsXKQbX56PodWYG8r2oqHGvyafq7hsnJbPBSa5re1om7pCJKgshppqpZLjj6tWhyr
Because of the bitcoin: scheme, other wallets (e.g. AQUA) interpret the string as a Bitcoin URI, and the address is treated as invalid. If the same address is used without the bitcoin: prefix, the transaction works correctly and the wallet accepts it as a valid Liquid address.
This suggests the URI scheme is being set incorrectly when generating QR codes for Liquid addresses.
Expected behavior
When generating or encoding a QR for a Liquid address, the URI scheme should be liquidnetwork: (or no scheme), not bitcoin:.
This is the line of code involved in this bug:
https://github.com/ElementsProject/elements/blob/master/src/qt/guiutil.cpp#L212
Actual behavior
QR codes for Liquid addresses are encoded as:
bitcoin:<liquid_address>
Wallets that correctly distinguish between Bitcoin and Liquid URIs (e.g. AQUA) reject the address when scanned from the QR. Manually removing bitcoin: and using only the address works as expected.
To reproduce
- Open Elements Qt wallet.
- Generate a new Liquid receive address.
- Display the QR code for that address.
- Scan the QR with a wallet that understands Liquid but validates URI schemes strictly (e.g. AQUA).
- Observe the scanned string begins with
bitcoin:and the wallet marks the address as invalid. - Copy the same address manually (without
bitcoin:) and paste/send — it works.
Reproducible every time.
System information
- Version: Master branch
- OS: Desktop system (does not appear OS-specific).
- GUI: Elements Qt.
Additional information
The issue appears to be limited to URI scheme generation for QR encoding, not address validity. The address itself is valid and usable on Liquid when not wrapped in a bitcoin: URI.
