{"format":"receipts-proof/1","hash":"76bcd953f5c0d7e5e1472a12c3ff56676ea15d8592d96dd6c116c4c9f70774cd","provider":"demo-donchian-breakout","seq":22,"kind":"signal","issued_at":"2026-10-03T18:00:57.393Z","prev":"e118249f12b40e924fb61f94c8c8d88374b4f409fe2523b4009edeb040c11272","body":{"issued_at":"2026-10-03T18:00:57.393Z","kind":"signal","nonce":"a26ba233de584a27f42b9b8eef618cef","payload":{"entry":{"type":"market"},"expires_at":"2026-10-05T18:00:57.393Z","market":{"kind":"perp","symbol":"SOLUSDT","venue":"binance-usdm"},"note":"Demo bot: 20-bar Donchian breakout, 1h. Mechanical rule, not advice.","side":"long","stop":"119.04","targets":["121.24","122.57"]},"prev":"e118249f12b40e924fb61f94c8c8d88374b4f409fe2523b4009edeb040c11272","provider":"demo-donchian-breakout","seq":22,"v":1},"signer":null,"sig":null,"batch":{"root":"76bcd953f5c0d7e5e1472a12c3ff56676ea15d8592d96dd6c116c4c9f70774cd","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-03T18:01:57.349Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969756},"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"]}