{"format":"receipts-proof/1","hash":"4ff9230c4b36ab2804ff28641ffab7da5e7a809d453f3f14397c04d4156d97e3","provider":"demo-donchian-breakout","seq":19,"kind":"signal","issued_at":"2026-10-02T18:00:54.470Z","prev":"08d7afaf8d2ee3f6b25ad8b31fbbb09487d9a6d39194c324205620b625079f3c","body":{"issued_at":"2026-10-02T18:00:54.470Z","kind":"signal","nonce":"5ad013e76334e5801523d61f0fe9e32e","payload":{"entry":{"type":"market"},"expires_at":"2026-10-04T18:00:54.470Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: 20-bar Donchian breakout, 1h. Mechanical rule, not advice.","side":"short","stop":"2732.58","targets":["2608.87","2534.65"]},"prev":"08d7afaf8d2ee3f6b25ad8b31fbbb09487d9a6d39194c324205620b625079f3c","provider":"demo-donchian-breakout","seq":19,"v":1},"signer":null,"sig":null,"batch":{"root":"4ff9230c4b36ab2804ff28641ffab7da5e7a809d453f3f14397c04d4156d97e3","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-02T18:01:54.468Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969621},"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"]}