moth: independent verification
we recover the package from transaction history and verify its bytes before making the local copy available.
verified: 28,593 finalized transactions and 18 recovered files. every checksum matched.
Published: 2026-09-15T20:25:56.999Z · Reconstructed: 2026-09-15T20:26:30.007Z
1. read the root
fetch the root through an archival solana mainnet rpc with maxSupportedTransactionVersion set to 1. check finalization, transaction success, publisher and the spl noop program. the root records the source revision, package length, sha-256 hash and index references.
root: 2EG8gntgo6vmmwjF185c4vstsmM6JhtjYjoFmQK6rumnb9Xh7r1LV6wWbr6EPPe17Ungst3kKXgA7DnrDqqycDnu
source: HuggingFaceTB/SmolLM2-135M-Instruct @ 12fd25f77366fa6b3b4b768ec3050bf629380bac
2. reconstruct the package
follow the two index levels in order. read every data transaction, reject duplicate signatures or inconsistent chunk numbers, and concatenate its payload. the verifier checks the signer, record type, package identifier, expected size and successful execution.
3. check every file
compare the compressed package sha-256 with the root, decompress it and parse the embedded manifest. verify file sizes and hashes; reject unsafe paths, overlapping offsets, missing data and trailing bytes.
c33a7c6e6e73f05a1d8df6a4d6440d3a5b621fe6d965fe024d2360c9249b1003
these are the 18 effective recovered files, including the root-pinned player correction. checking downloads about 148 MB and hashes each file on your device.
not checked in this browser session.
this compares our served files with our published report. it is not a fresh blockchain verification. use the independent verifier below to reconstruct from your own archival rpc.
| file / sha-256 | bytes | local check |
|---|---|---|
model/config.json8eb740e8bbe4cff95ea7b4588d17a2432deb16e8075bc5828ff7ba9be94d982a | 861 | not checked |
model/generation_config.json87b916edaaab66b3899b9d0dd0752727dff6666686da0504d89ae0a6e055a013 | 132 | not checked |
model/tokenizer.json9ca9acddb6525a194ec8ac7a87f24fbba7232a9a15ffa1af0c1224fcd888e47c | 2,104,556 | not checked |
model/tokenizer_config.json4ec77d44f62efeb38d7e044a1db318f6a939438425312dfa333b8382dbad98df | 3,764 | not checked |
model/special_tokens_map.json2b7379f3ae813529281a5c602bc5a11c1d4e0a99107aaa597fe936c1e813ca52 | 655 | not checked |
model/merges.txt0b54e8aa4e53d5383e2e4bc635a56b43f9647f7b13832d5d9ecd8f82dac4f510 | 466,391 | not checked |
model/vocab.json82b84012e3add4d01d12ba14442026e49b8cbbaead1f79ecf3d919784f82dc79 | 800,662 | not checked |
model/onnx/model_q4f16.onnx9358cd4ce037c304621f8c194a525607ae7c5ea73239fcae4c21bd02f2e34ff7 | 117,691,126 | not checked |
model/README.md4f97533ad95b1b2fea15fbc075c01b94578ebdd7c8138888fa43fa3abd530dc4 | 6,772 | not checked |
model/LICENSEcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 | 11,358 | not checked |
index.html (correction)df2ba8eea60fa4395ee761f0f344d04824e0c48353243f6cea9222909988130a | 2,932 | not checked |
runtime/transformers.min.jse74bd32ed4453369ebb0edcaa27f6bc6204004a949a0233cdb87b62dda8d6978 | 558,373 | not checked |
runtime/ort-wasm-simd-threaded.jsep.mjs522b3769929f5684c83a12cf1e06eedf073b65d161728b4f3757c75d62b14384 | 46,490 | not checked |
runtime/ort-wasm-simd-threaded.jsep.wasmae61141f8fbf0a4e43fd7b4f4d40a1a115627f6facc4f33ddf84074a655e33ea | 26,101,073 | not checked |
runtime/TRANSFORMERS-LICENSEcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 | 11,358 | not checked |
runtime/ONNXRUNTIME-LICENSE2f07c72751aed99790b8a4869cf2311df85a860b22ded05fa22803587a48922c | 1,073 | not checked |
runtime/ThirdPartyNotices.txt0e07b95f3a8d6230037707c5c4a2b554d12c4cb67369669ac255635528ffcee2 | 325,054 | not checked |
provenance.jsond382edca3e50d63ddbcfae0dae0b5c5146a86b218d9341487eb92d97ee992a4c | 3,773 | not checked |
4. verify independently
extract the kit in a fresh directory. use node.js 22.13 or later, run npm install, then copy .moth-private/config.example.json to .moth-private/config.json and set your own archival mainnet rpc. no wallet or private key is needed. the kit includes the source and full instructions.
the root also references a corrected player page. the verifier checks that transaction and its hash separately, preserves the original bundled page, and installs the verified correction as index.html.
player correction transaction · original archived player
browser compatibility note: the archived player can automatically select an absent asyncify runtime on webgpu devices. our site launcher explicitly selects the included jsep wasm pair and cpu inference. it is a site-only adapter, not an onchain correction. all 18 recovered files remain byte-for-byte unchanged.
node scripts/moth/verify.mjs \ 2EG8gntgo6vmmwjF185c4vstsmM6JhtjYjoFmQK6rumnb9Xh7r1LV6wWbr6EPPe17Ungst3kKXgA7DnrDqqycDnu \ 4SMNYFvwKLkhMrCw4qgcyJya4TThizewuXf8eX4ZBKtg
download the verification report and file checksums · all transaction records
5. what this proves
matching hashes establish that the recovered files match the selected root. they do not prove model accuracy, original training, or inference performed by solana validators. the model is stored in transaction history; inference happens on the device running it.
an archival provider or a verified mirror is needed if a node no longer retains this history. the browser player opens our recovered local copy; it does not itself download and verify every transaction. the downloadable verifier and report are site-provided tools and evidence, not additional onchain records.