# Litecoin dust boundaries — release 2026-09-27.1

Original controlled experiment by Litecoin.watch, run 27 September 2026.
This is a local policy experiment, not a mainnet propagation or mining study.

## Reproduce

Use Python 3 and the official Litecoin Core 0.21.5.8 litecoind and litecoin-cli
executables. Verify your download against the project's published checksums:
https://github.com/litecoin-project/litecoin/releases/tag/v0.21.5.8

    python dust-boundaries.py /path/to/litecoind /path/to/litecoin-cli new-results.json

On Windows pass quoted full paths ending in .exe. The script has no pip dependencies.
The tested Windows litecoind SHA-256 was:
7430c6d0d4cb59d355361a0b90ffbfc4ac725609483e04c242bf95372cc9b8fe
Other platform binaries have different hashes.

The script creates a NEW temporary data directory and synthetic wallet, mines 101
regtest blocks, and stops its own daemon in a finally block. It leaves the temporary
lab directory for inspection. No existing wallet or data directory is accepted.
All peer discovery and outbound connections are disabled. RPC uses a local cookie
and a temporary loopback port. No real funds, keys or blockchain data are needed.

Regtest normally permits nonstandard transactions. The explicit
-acceptnonstdtxn=0 flag is essential to this experiment.

## Protocol

Each candidate spends the same mature test input, has one target output and a
large valid change output. It is signed and submitted to testmempoolaccept only.
No candidate is broadcast or mined. The mempool is checked to remain empty.

For each of P2PKH, P2SH-P2WPKH and P2WPKH we test threshold minus one, exactly
threshold, and threshold plus one, using a 10,000-litoshi whole-transaction fee.
Three additional candidates keep their below-threshold target but pay a
100,000-litoshi fee. They still fail with 'dust'. These are deliberately ample
experimental fees, NOT suggested payment fees.

After restarting the same isolated node with -dustrelayfee=0.00060000, we test
three more boundaries per output type. No dust-relay override is used in the
first phase. Pinned source defines the default as 30,000 litoshis per 1,000 bytes.
The second setting is 60,000. It is not a recommendation for public nodes.

## Expected result

21 candidate assertions pass. Default thresholds: P2PKH 5,460 litoshis;
P2SH-P2WPKH 5,400; P2WPKH 2,940. Each exact threshold and +1 is allowed; -1
is rejected as dust. Under the doubled setting: 10,920; 10,800; 5,880.
Random keys, raw transactions and transaction IDs differ across fresh runs;
compare script type, amount, fee, policy setting and acceptance instead.

JSON contains every signed candidate, output script, decoded size and RPC verdict.
CSV is a compact table of the same observations. Byte allowances in the threshold
formula are Core's policy estimates, not measured future spending sizes.
source-manifest.json records URLs and SHA-256 hashes of the upstream files we read;
those upstream source files are not bundled. Their licences remain with their authors.
SHA256SUMS.txt covers the files inside the downloadable package, excluding itself.

Scope excludes MWEB, P2WSH, mainnet peer propagation, mining, wallet GUI construction,
exchange minimums and future fee economics. 'Allowed' is only the local pinned node's
mempool decision. Dust policy must not be confused with a consensus minimum value.

Code: MIT (LICENSE.txt). Original results and diagrams: CC BY 4.0, attribute
Litecoin.watch and link to the article. AI-assisted coding and drafting with actual
executable checks; no independent human review claimed.
Corrections: https://litecoin.watch/corrections/
