Skip to content

QR codes for Liquid addresses use "bitcoin:" URI scheme instead of "liquidnetwork:" #1529

@coelhogonzalo

Description

@coelhogonzalo

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

  1. Open Elements Qt wallet.
  2. Generate a new Liquid receive address.
  3. Display the QR code for that address.
  4. Scan the QR with a wallet that understands Liquid but validates URI schemes strictly (e.g. AQUA).
  5. Observe the scanned string begins with bitcoin: and the wallet marks the address as invalid.
  6. 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.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions