{"format":"receipts-proof/1","hash":"529a57405fe21836802c5eac9a813dd6507a52ea1f275a7d19157bff8699f6c5","provider":"demo-ema-cross","seq":42,"kind":"signal","issued_at":"2026-09-28T15:15:36.589Z","prev":"fdeaaf1d7bce38f6c5654e657e45a591b2956e59b990b4ee17cf40c4de0bd5fa","body":{"issued_at":"2026-09-28T15:15:36.589Z","kind":"signal","nonce":"7074cc501f2320fb156ee2d43140b107","payload":{"entry":{"type":"market"},"expires_at":"2026-09-29T15:15:36.589Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: EMA 9/21 cross, 15m. Mechanical rule, not advice.","side":"short","stop":"83441.4","targets":["81862.6"]},"prev":"fdeaaf1d7bce38f6c5654e657e45a591b2956e59b990b4ee17cf40c4de0bd5fa","provider":"demo-ema-cross","seq":42,"v":1},"signer":null,"sig":null,"batch":{"root":"529a57405fe21836802c5eac9a813dd6507a52ea1f275a7d19157bff8699f6c5","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-28T15:16:26.663Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969020},"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"]}