{"format":"receipts-proof/1","hash":"46c372294a8d4fb501133f243da61e2f2f42d4470279f6ad192effec77a8e5d0","provider":"demo-ema-cross","seq":58,"kind":"signal","issued_at":"2026-09-30T15:30:30.301Z","prev":"eeaa0d6b3c38f4e3160afe7eed04a45f402b2cb134b9da9b5ba01b097006d7c0","body":{"issued_at":"2026-09-30T15:30:30.301Z","kind":"signal","nonce":"391e8c0e3525f48c36604edd469c0103","payload":{"entry":{"type":"market"},"expires_at":"2026-10-01T15:30:30.301Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: EMA 9/21 cross, 15m. Mechanical rule, not advice.","side":"short","stop":"84729.3","targets":["82134.7"]},"prev":"eeaa0d6b3c38f4e3160afe7eed04a45f402b2cb134b9da9b5ba01b097006d7c0","provider":"demo-ema-cross","seq":58,"v":1},"signer":null,"sig":null,"batch":{"root":"46c372294a8d4fb501133f243da61e2f2f42d4470279f6ad192effec77a8e5d0","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-30T15:31:20.477Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969313},"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"]}