VERIFY · IN BUILD

Snapshots

A dataset you can sum yourself, its checksum, the Merkle root over it, and the command that reproduces both. Do not take the proof page on trust; recompute it.

◐ Fixture data · algorithm real, entries are not

The tree below is genuine and every proof it produces verifies. The entries are fixtures, and no root has been anchored to any chain. A snapshot of the live ledger cannot be published until balances are integers behind one guarded writer — a dataset drawn from a float ledger with 124 writers would not reproduce twice, and a reader who fails to reproduce a published root has learned something false about our competence rather than something true about our data. Verify the mechanism here; do not treat it as evidence about the ledger.

The current commitment

Snapshot date2026-08-14
Entries committed5
Excluded1 · read failed, excluded rather than zero-filled
Outstanding liability18 887.5000 FG
188875000 minor units · FG counted · no commodity units exist yet to exclude
Dataset sha2560x14c054dbacae443420f409ccee0b34d78d929ecb2db6c741747a3e959b176396
Merkle root0x6d978d553a9813aeb25efdcd6524bf103d751f7eb9707a6ee145733b07aa76f2

What is inside the liability

Σ of every entry amount in the published snapshot, over obligation-class assets only — the ledger classes REWARD_CURRENCY and PARTNER_CREDIT. Commodity units are excluded and named. Signed integer minor units throughout, summed as BigInt — a total in the hundreds of millions of minor units exceeds what a double holds exactly. Reproduce it from the JSONL on /snapshots/.

AssetLedger classIn the liabilityBasis
Flashy Gold FGReward currencyCountedRedeemed against a stated obligation for stated goods, so every outstanding unit is something the group owes. See /redemption/.
Wheat WHEATCommodity unitExcludedProduced and consumed inside the economy. Nothing can be presented to the group in exchange for it, so it is not a debt.
Stone STONECommodity unitExcludedA building input, destroyed on use. Inventory inside the economy, never a claim.
Wood WOODCommodity unitExcludedA building input, destroyed on use. Inventory inside the economy, never a claim.

The class names are the ledger’s own — REWARD_CURRENCY, COMMODITY_UNIT, PARTNER_CREDIT — so the perimeter published here and the field stored on the asset are one fact rather than two. Commodities do not exist yet. The rule is written now so that adding the first one is a row in the asset registry rather than an argument about what a published total meant last quarter.

∅ Unavailable · outstanding liability, book-wide

The published snapshot is a sample, and the live book stores amounts as floats behind 124 writers. A book-wide total drawn from it would not reproduce between two reads. Blocked on CYG-LED-1 — integer minor units — not on effort.

How the root is built

Specified rather than described, so it can be reimplemented in a language we did not choose. A root only we can compute is a number we assert, not a number you check.

canonical(entry) = id | asset | type | source | amount_minor | recorded_at
                   joined with U+007C, no padding, no whitespace

leaf(entry)      = SHA256( 0x00 || utf8(canonical(entry)) )
node(left,right) = SHA256( 0x01 || left || right )

leaves sorted by id, ascending, byte-wise
odd nodes are promoted to the next level, never duplicated

tenant(id,root)  = SHA256( 0x02 || utf8(id) || 0x1f || root )

tenants sorted by id, ascending, byte-wise
one day root over every tenant subtree — one transaction per chain per day

Why the 0x00 / 0x01 prefixes

Domain separation. Without it, an internal node digest can be presented as though it were a leaf, and an inclusion proof forged for an entry that was never in the tree.

Why odd nodes are promoted

Duplicating the last node to pad a level lets two different entry sets produce the same root — the flaw behind CVE-2012-2459. Promotion carries the node up unchanged.

Reproduce it

# the proof for one entry, self-contained
curl -s https://flashy.network/api/v1/public/ledger/proof/gl_01K2F7QW3M/ | jq

# rebuild the root from the dataset
npx tsx scripts/anchor.ts

The self-check in that script proves every entry against the root before it will print one, so a broken tree fails here rather than in front of a reader who could not reproduce a published number.

Where roots get published

TargetNetworkWhy it earns a rowState
TON TestnettestnetThe strategic home, on testnet first. Proves the pipeline against the chain our holders are closest to, at no cost and with no claim that it is production.IN BUILD
Base SepoliatestnetThe credibility anchor, on testnet first. EVM, so the deepest auditor and tooling pool. Proving the pipeline here costs nothing and means the first mainnet root is not the first root we have ever produced.IN BUILD
TONmainnetWhere the people who hold Flashy Gold already are. Telegram-native, and the chain that makes the settlement record legible inside the product rather than only to auditors on a desktop.NORTH STAR
BasemainnetThe one an integrator checks. Median fee near two cents, so a daily root is on the order of seven dollars a year regardless of how many entries the day contained.NORTH STAR

No contract is deployed on any of them. A root is 32 bytes in a transaction — it needs no contract, and deploying one named after Flashy Gold would create exactly the artifact /no-contract/ exists to say does not exist.