{"format":"receipts-proof/1","hash":"bb9e391037ab8285f21360308a01fccf4cdd905d1896291258595403d27ca52e","provider":"demo-macd-momentum","seq":29,"kind":"signal","issued_at":"2026-10-01T13:55:21.112Z","prev":"c62b43949708b42f37f30855bb5613074a2cb490b4d11cf98dfbe6c29a7e5677","body":{"issued_at":"2026-10-01T13:55:21.112Z","kind":"signal","nonce":"2925f97361b967ce49226ffdb7051df6","payload":{"entry":{"type":"market"},"expires_at":"2026-10-02T01:55:21.112Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"long","stop":"2685.1","targets":["2706.6","2722.73"]},"prev":"c62b43949708b42f37f30855bb5613074a2cb490b4d11cf98dfbe6c29a7e5677","provider":"demo-macd-momentum","seq":29,"v":1},"signer":null,"sig":null,"batch":{"root":"bb9e391037ab8285f21360308a01fccf4cdd905d1896291258595403d27ca52e","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-01T13:56:19.767Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969451},"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"]}