{"format":"receipts-proof/1","hash":"0817e0db040c4fe6cee84b71826783a9dc69905c5c4e66d919470e8f21373acc","provider":"demo-ema-cross","seq":99,"kind":"signal","issued_at":"2026-10-06T09:30:41.398Z","prev":"3c6d0a3ac8a3538860e818fb67b5598c430d0d4f131b08d54c712760095609fd","body":{"issued_at":"2026-10-06T09:30:41.398Z","kind":"signal","nonce":"0aecc201fc8544acb0e351b128df04d9","payload":{"entry":{"type":"market"},"expires_at":"2026-10-07T09:30:41.398Z","market":{"kind":"perp","symbol":"SOLUSDT","venue":"binance-usdm"},"note":"Demo bot: EMA 9/21 cross, 15m. Mechanical rule, not advice.","side":"short","stop":"119.69","targets":["117.8"]},"prev":"3c6d0a3ac8a3538860e818fb67b5598c430d0d4f131b08d54c712760095609fd","provider":"demo-ema-cross","seq":99,"v":1},"signer":null,"sig":null,"batch":{"root":"0817e0db040c4fe6cee84b71826783a9dc69905c5c4e66d919470e8f21373acc","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-06T09:30:42.300Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":970158},"how_to_verify":["hash = sha256(\"receipts/v1\\n\" + canonical_json(body)), keys sorted, no whitespace.","body.prev must equal the hash of the same provider's event seq - 1 (64 zeros for seq 1).","If signer is set: sig must be a valid Ed25519 signature by signer over the UTF-8 bytes of \"receipts/v1/sig\\n\" + hash.","Fold the Merkle proof: node = sha256(0x01 || left || right); the result must equal batch.root.","Decode opentimestamps (base64) to a .ots file, then run: ots upgrade file.ots && ots verify -d <batch.root> file.ots","Or run: node scripts/verify-bundle.mjs bundle.json"]}