Preview data · not live
Muse Grove

Receipts

Every planting and XP event in the grove carries a receipt. Each receipt is hash-chained to the one before it, so changing any receipt breaks every link after it. Enter a receipt id to inspect and verify one, or check the whole chain below.

The grove reads the town ledger when it's live.

Look up a receipt

Receipt ids look like rcpt-0001. Verification runs entirely in your browser. This page is read-only: no wallet, no signing, nothing transacts.

The ledger chain

Receipts are append-only: newest at the bottom of the chain, each one pointing back at the hash of the one before it. The first receipt points at the genesis marker instead. Verifying the full chain replays every link, so wins and misses show up together: a failed receipt is flagged, never hidden.

How verification works

  1. Recompute the hash. The viewer rebuilds the receipt's canonical text (id, previous hash, timestamp, event, muse, slot, XP, reason, attester) and hashes it with SHA-256. If the result matches the stored receipt hash, the receipt is exactly as issued.
  2. Check the chain link. Each receipt's previous hash must equal the hash of the receipt before it. The first receipt points at the genesis marker instead.
  3. Check the shape. Every receipt must carry all required fields, a valid timestamp, and a token id equal to its slot id. Anything missing or malformed is flagged.

This page reads mock data (assets/data/receipts.sample.json) until the Kindred contracts emit real receipts. The checks above run unchanged on live data: the file is the seam, exactly like assets/data/grove.json. The full field contract is documented in RECEIPTS-SCHEMA.md.