Litecoin.watch payment URI parser comparison, release 2026-09-30.1
Measured 30 September 2026 UTC. AI-assisted research/code/drafting; no independent reviewer claimed.
20 identical public synthetic fixtures in two source-isolated functions.
NOT complete application, desktop/mobile GUI, signing, camera or payment tests.
"Parsed without error" is not "valid payment". No known private keys for the
synthetic fixture addresses. Never send funds to the corpus addresses.

Electrum-LTC 4.2.2.1: official source tarball SHA256 is recorded in sources.json.
Original AST function bodies run unchanged, including address checksum validation.
Reproduce with Python 3, no pip dependencies:
 python uri-parser-study.py /path/Electrum-LTC-4.2.2.1 output-electrum
This creates the exact corpus. Original source files are distributed as .py.txt;
restore .py extensions if using the bundled subset rather than official archive.

Cake Wallet v6.4.5: exact Git commit and payment_request.dart SHA256 in sources.json.
We execute the unchanged constructor and fromUri factory in a Dart harness.
Throwing adapters replace unrelated Lightning/ERC681/Nano dependencies.
All fixtures avoid those dependency branches. This does not execute the
fromString fallback, scanner, SendViewModel or app address/amount checks.
Dart 3.13.5 archive URL and SHA256 are in dart-source.json. No pub/npm packages.
Copy payment_request.dart.txt and run-cake-study.py.txt to their normal filenames:
 python run-cake-study.py payment_request.dart /path/dart uri-corpus.json output-cake
The generated harness has the original function bodies, with an explicit tested
boundary. An unsupported branch aborts the run instead of being recorded as a
wallet rejection. Its SHA256 is in cake-results.json.

Repeated amount: Dart Uri.queryParameters returns the last value in this pinned
runtime; Electrum's parse_URI rejects a duplicate. Do not generalize this to all
wallet versions or to a successfully constructed/signed transaction.
Nine decimals: Electrum truncates to integer litoshis at this parsing boundary;
Cake preserves the string. Neither behavior implies the GUI will accept payment.
Unknown req-* is retained by Electrum and unexposed by Cake's returned object;
neither parser return establishes enforcement by later application layers.
Labels and expiry fields are not recipient authentication or a guaranteed deadline.

The SVG hero is an original explanatory drawing, not a scan target or wallet UI.
Result tables can be inspected at https://litecoin.watch/wallet-qr/
Correct reproducible errors through https://litecoin.watch/corrections/
Cake source retains its upstream copyright; Cake project uses MIT licensing.
Electrum-LTC source retains its upstream GPLv3 copyright/license notices.
Harness and editorial figures: MIT. See LICENSE.txt and upstream license copies.
