Payment notes and the recipient wallet
Research release payment-notes-20261015-v1 /1.0.0
Measured 15 October 2026, 08:29:55.197171–08:30:02.032320 UTC.
Tested Litecoin Core 0.21.5.8 Linux binaries; Python3 standard library.

WHAT WAS EXECUTED
One new isolated regtest daemon, two fresh independent wallet databases named sender and recipient. No existing node, wallet, configuration, account or real funds were used. The sender generated101 blocks for valueless test funding, then made four ordinary native-SegWit sends and generated one confirmation block after each. The chain ended at105. No external peer or second network node participated.

N01 empty control0.01375LTC; N02 ASCII0.02125; N03 UTF8 0.0325; N04 long repeated markers0.0475. Recipient sum0.11500000LTC =11,500,000litoshis.
In the three nonempty cases, sender gettransaction retained comment and to (the stored comment_to value). Recipient gettransaction had neither key. These findings survived one actual daemon restart. Empty input left sender/recipient note keys absent.
The nonempty strings and their first24 UTF-8 bytes were absent from each corresponding raw transaction. Empty-string search is not meaningful and is recorded as null/N/A.
All four observed raw transactions were222 bytes and141 vB. This is a measured property of these generated transactions, not a universal size/fee or privacy guarantee.
Different labels assigned to the same recipient address in each wallet persisted separately. The actual published transaction remained byte-for-byte identical before and after relabeling.

ISOLATION
-regtest,-connect=0,-listen=0,-dnsseed=0,-dns=0,-discover=0,-listenonion=0,-upnp=0,-onlynet=ipv4.
RPC bound 127.0.0.1 on an ephemeral port; dbcache32 / par 1. The CLI uses the fresh datadir's local cookie implicitly; no cookie or key is recorded in the public trace. The runner accepts binary paths plus a NEW output directory, never existing node/config/wallet/RPC credentials.
Executable versions and SHA256 pins are in results.json. Both own processes exited 0. The unique temporary datadir is deleted only after own processes exit, with its resolved path checked against the dedicated research parent. The bounded test completed in 6.841 seconds; elapsed time is not a mainnet confirmation benchmark.
The public getaddressinfo transcript deliberately retains only address,scriptPubKey,ismine,iswitness,witness_version,labels; unrelated HD metadata is omitted.

REPRODUCE THE EXPERIMENT
Obtain and verify Core 0.21.5.8 separately from the official project. The runner requires the exact executable pins recorded in results.json.
  python reproduce.py.txt /path/litecoind /path/litecoin-cli NEW-output-directory
Runs on the tested Linux platform, no Python packages required. Never pass a live datadir. Identifiers, keys, ports, generated blocks, timings and signature bytes change across runs. The note metadata distinction should reproduce; actual transaction sizes are observations and need not all match future reruns.
No external network request is made by the experiment. It starts only its own disposable node, generates valueless regtest outputs and cleans up its own directory.

VERIFY THE PUBLISHED RECORDS WITHOUT CORE
  python verify.py.txt .
The verifier independently parses ordinary SegWit transaction bytes, reconstructs stripped TXIDs and witness TXIDs, calculates weight/vsize, checks exact integer recipient outputs and their sum, searches the literal UTF8 strings/prefixes and compares per-wallet metadata with the RPC transcript/CSV.
The recorded experiment passed 92 assertions. The export verifier reports its current check count on success.
The verifier does not validate signatures, establish real process execution independently, attest to the upstream binary distribution or act as an external witness. Its scope is internal-record consistency and independently implemented byte/arithmetic checks.

LIMITS
Only these four Core sendtoaddress cases and setlabel/restart observations are measured. One node/two independent wallets is not a two-peer delivery test. No complete mobile wallet, GUI, hardware device, service database, cloud-sync, backup encryption, deliberate transaction data carrier, merchant credit or MWEB workflow was tested.
The absence of tested strings in ordinary raw transactions does not establish universal Litecoin privacy or that no other software can expose a note. A payment-request URI/QR is a separate object that can visibly contain text before a payment. Do not use a local Core comment as proof that a merchant received an invoice reference.

FILES
reproduce.py.txt;verify.py.txt;results.json;rpc-trace.json;cases.csv;
rpc-help-sendtoaddress.txt;rpc-help-gettransaction.txt;rpc-help-setlabel.txt;
source-rpcwallet.cpp.txt;source-rawtransaction.cpp.txt;sources.json;
payment-reference-checklist.txt/.csv;SHA256SUMS.txt.
The source snapshots preserve their upstream open-source notices. Checksum verification establishes file integrity, not an independent audit.

All published addresses and TXIDs are generated regtest identifiers. Do not fund them or expect a mainnet explorer to find them.
Research, code and drafting used AI assistance; no independent human reviewer or funded-account test is claimed.
