{"format":"receipts-proof/1","hash":"96355cbaa92ae4f40fac0d3c50201a0947d7641d49a679e80b3a6c4c69080bce","provider":"demo-macd-momentum","seq":11,"kind":"signal","issued_at":"2026-09-27T13:50:39.286Z","prev":"290b54549fae5ae17f5474ecc03c4218fce7121cb84d30f75c9ec36440ee75b0","body":{"issued_at":"2026-09-27T13:50:39.286Z","kind":"signal","nonce":"daa5a921b9f3705087ae8d5f4443c476","payload":{"entry":{"type":"market"},"expires_at":"2026-09-28T01:50:39.286Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"long","stop":"84697.9","targets":["85061.9","85334.9"]},"prev":"290b54549fae5ae17f5474ecc03c4218fce7121cb84d30f75c9ec36440ee75b0","provider":"demo-macd-momentum","seq":11,"v":1},"signer":null,"sig":null,"batch":{"root":"96355cbaa92ae4f40fac0d3c50201a0947d7641d49a679e80b3a6c4c69080bce","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-27T13:57:39.367Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968848},"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"]}