{"format":"receipts-proof/1","hash":"9dc10440fdbf2f4388ebba95a35bfa8441e2d8e18466d7bfc1fcd5ac4e98df05","provider":"demo-macd-momentum","seq":23,"kind":"signal","issued_at":"2026-09-30T17:30:30.484Z","prev":"5604a6cb9ccd88d3cdcaf627f61c6babb272ca10ee8a57d6c584e5bfabdcac23","body":{"issued_at":"2026-09-30T17:30:30.484Z","kind":"signal","nonce":"b9ff77ebaad351ced0efbc884b3c6355","payload":{"entry":{"type":"market"},"expires_at":"2026-10-01T05:30:30.484Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"2692.99","targets":["2679.47","2669.34"]},"prev":"5604a6cb9ccd88d3cdcaf627f61c6babb272ca10ee8a57d6c584e5bfabdcac23","provider":"demo-macd-momentum","seq":23,"v":1},"signer":null,"sig":null,"batch":{"root":"9dc10440fdbf2f4388ebba95a35bfa8441e2d8e18466d7bfc1fcd5ac4e98df05","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-30T17:31:20.672Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969330},"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"]}