The hash above is SHA-256 over this receipt's canonical JSON: keys sorted, no spaces, UTF-8. Re-hash it in one line; you should get 0e2bff0d52a2…4a1ff493:
That rebuilds the canonical form from the JSON with jq -S (jq 1.6+). Or hash the exact stored bytes: curl -s https://verano-square.fly.dev/api/turf/receipts/b995052-k9-defend/canonical | sha256sum
Chain. The document includes prev_hash. It must equal the previous receipt's hash (b995052-k2-defend), so no earlier receipt can change without breaking every one after it.
Source. Every value under facts is copied from grift.world's public feed, same keys, same values. While the city still lists it (about the last 14 nights; the last 300 burns), compare:
Canonical JSON the exact 1,037 bytes that were hashed
{"facts":{"burn":{"amount":"1000","at":1791095415680,"block":null,"burnt":null,"by":"k9","day":995052,"first":false,"from":"0x806e5A29a76425f066C41BF5a49FB182B032dBF7","hash":null,"id":"crew:d995052:k9:defend","n":null,"settledAt":null,"status":"reserved","to":"0x000000000000000000000000000000000000dead","wallet":"crew","what":"Boardwalk Beats: the defence of The Beach, city day 995052"},"chain":{"burnAddress":"0x000000000000000000000000000000000000dead","chainId":4663,"explorer":"https://robinhoodchain.blockscout.com","token":"0x9f4BA41F91a59A34e17eE8C9EB3A51363B11aBD5"},"night":{"at":1791095415837,"day":995052},"orders":{"k9":{"defend":"The Beach","defendBurn":"crew:d995052:k9:defend","defendSpend":0}}},"fetched_at":"2026-10-04T06:45:29.142Z","id":"b995052-k9-defend","key":"burn:crew:d995052:k9:defend","kind":"burn","prev_hash":"aa1876268f89c06dc6b85e562f374f46123a476760df9f9e8b4ef352d03b7e80","rev":1,"seq":755,"source":"https://www.grift.world/api/crews","source_path":"chest.burns[id=\"crew:d995052:k9:defend\"]","v":1}