{"format":"receipts-proof/1","hash":"5604a6cb9ccd88d3cdcaf627f61c6babb272ca10ee8a57d6c584e5bfabdcac23","provider":"demo-macd-momentum","seq":22,"kind":"signal","issued_at":"2026-09-30T08:20:50.540Z","prev":"e42afe3fd035ed60c538072958c3a86de78fb051f8089ead60090ecaf7175e44","body":{"issued_at":"2026-09-30T08:20:50.540Z","kind":"signal","nonce":"9ab097f2f803e9785f997f0bddc82a12","payload":{"entry":{"type":"market"},"expires_at":"2026-09-30T20:20:50.540Z","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":"2673.17","targets":["2662.59","2654.66"]},"prev":"e42afe3fd035ed60c538072958c3a86de78fb051f8089ead60090ecaf7175e44","provider":"demo-macd-momentum","seq":22,"v":1},"signer":null,"sig":null,"batch":{"root":"5604a6cb9ccd88d3cdcaf627f61c6babb272ca10ee8a57d6c584e5bfabdcac23","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-30T08:26:40.599Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969281},"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"]}