moth

CA: ......

root · 2EG8gntgo6vm7DnrDqqycDnu transactions

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

publication manifest · source provenance · model license

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-256byteslocal check
model/config.json8eb740e8bbe4cff95ea7b4588d17a2432deb16e8075bc5828ff7ba9be94d982a861not checked
model/generation_config.json87b916edaaab66b3899b9d0dd0752727dff6666686da0504d89ae0a6e055a013132not checked
model/tokenizer.json9ca9acddb6525a194ec8ac7a87f24fbba7232a9a15ffa1af0c1224fcd888e47c2,104,556not checked
model/tokenizer_config.json4ec77d44f62efeb38d7e044a1db318f6a939438425312dfa333b8382dbad98df3,764not checked
model/special_tokens_map.json2b7379f3ae813529281a5c602bc5a11c1d4e0a99107aaa597fe936c1e813ca52655not checked
model/merges.txt0b54e8aa4e53d5383e2e4bc635a56b43f9647f7b13832d5d9ecd8f82dac4f510466,391not checked
model/vocab.json82b84012e3add4d01d12ba14442026e49b8cbbaead1f79ecf3d919784f82dc79800,662not checked
model/onnx/model_q4f16.onnx9358cd4ce037c304621f8c194a525607ae7c5ea73239fcae4c21bd02f2e34ff7117,691,126not checked
model/README.md4f97533ad95b1b2fea15fbc075c01b94578ebdd7c8138888fa43fa3abd530dc46,772not checked
model/LICENSEcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d3011,358not checked
index.html (correction)df2ba8eea60fa4395ee761f0f344d04824e0c48353243f6cea9222909988130a2,932not checked
runtime/transformers.min.jse74bd32ed4453369ebb0edcaa27f6bc6204004a949a0233cdb87b62dda8d6978558,373not checked
runtime/ort-wasm-simd-threaded.jsep.mjs522b3769929f5684c83a12cf1e06eedf073b65d161728b4f3757c75d62b1438446,490not checked
runtime/ort-wasm-simd-threaded.jsep.wasmae61141f8fbf0a4e43fd7b4f4d40a1a115627f6facc4f33ddf84074a655e33ea26,101,073not checked
runtime/TRANSFORMERS-LICENSEcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d3011,358not checked
runtime/ONNXRUNTIME-LICENSE2f07c72751aed99790b8a4869cf2311df85a860b22ded05fa22803587a48922c1,073not checked
runtime/ThirdPartyNotices.txt0e07b95f3a8d6230037707c5c4a2b554d12c4cb67369669ac255635528ffcee2325,054not checked
provenance.jsond382edca3e50d63ddbcfae0dae0b5c5146a86b218d9341487eb92d97ee992a4c3,773not checked

4. verify independently

download verifier source

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.