{"format":"receipts-proof/1","hash":"9c28fcaa9e83c6208a78f354f93092026a3e5cc23263b3068dbcd2de05be90cc","provider":"demo-macd-momentum","seq":44,"kind":"signal","issued_at":"2026-10-03T15:50:57.083Z","prev":"b04b2d318ea8cd8f28c47d2f44d9492a24f37fae2b3d5ea601262e75c3709d73","body":{"issued_at":"2026-10-03T15:50:57.083Z","kind":"signal","nonce":"07d1389633ce0a107d627253fda50c79","payload":{"entry":{"type":"market"},"expires_at":"2026-10-04T03:50:57.083Z","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":"2678.32","targets":["2683.52","2687.43"]},"prev":"b04b2d318ea8cd8f28c47d2f44d9492a24f37fae2b3d5ea601262e75c3709d73","provider":"demo-macd-momentum","seq":44,"v":1},"signer":null,"sig":null,"batch":{"root":"9c28fcaa9e83c6208a78f354f93092026a3e5cc23263b3068dbcd2de05be90cc","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-03T15:51:57.033Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969745},"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"]}