{"format":"receipts-proof/1","hash":"ef1c387be4c4b9a2340f4cc86326d635411e435c7652650b0ccb9ae3ad8197d5","provider":"demo-macd-momentum","seq":15,"kind":"signal","issued_at":"2026-09-28T00:49:43.335Z","prev":"f914122ecc2483b4379b759065ef1fb83919655ab78c1b27e03d653918b90d99","body":{"issued_at":"2026-09-28T00:49:43.335Z","kind":"signal","nonce":"a3db943ed166e0bb96676cc492fb8285","payload":{"entry":{"type":"market"},"expires_at":"2026-09-28T12:49:43.335Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"84519.7","targets":["84002.3","83614.2"]},"prev":"f914122ecc2483b4379b759065ef1fb83919655ab78c1b27e03d653918b90d99","provider":"demo-macd-momentum","seq":15,"v":1},"signer":null,"sig":null,"batch":{"root":"ef1c387be4c4b9a2340f4cc86326d635411e435c7652650b0ccb9ae3ad8197d5","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-28T01:23:28.182Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968917},"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"]}