{"format":"receipts-proof/1","hash":"671c9792e8580511f2582ac7e0f3011e31310c9ab812501f54db8f032135db0e","provider":"demo-donchian-breakout","seq":30,"kind":"signal","issued_at":"2026-10-06T15:00:24.417Z","prev":"b37799e1fe03d4e146d95709c08df1e0c6b6a10c38d03d649d921d3e98f609cc","body":{"issued_at":"2026-10-06T15:00:24.417Z","kind":"signal","nonce":"85c46032189b5c112e8fe53e2f2e1a3d","payload":{"entry":{"type":"market"},"expires_at":"2026-10-08T15:00:24.417Z","market":{"kind":"perp","symbol":"SOLUSDT","venue":"binance-usdm"},"note":"Demo bot: 20-bar Donchian breakout, 1h. Mechanical rule, not advice.","side":"long","stop":"120.1","targets":["124.13","126.55"]},"prev":"b37799e1fe03d4e146d95709c08df1e0c6b6a10c38d03d649d921d3e98f609cc","provider":"demo-donchian-breakout","seq":30,"v":1},"signer":null,"sig":null,"batch":{"root":"8d44342dd3612540ada0ad23ccd9b76511db9ee11d0faf52b05d4b825b591b48","index":1,"leaf_count":2,"proof":[{"side":"L","hash":"b37799e1fe03d4e146d95709c08df1e0c6b6a10c38d03d649d921d3e98f609cc"}],"sealed_at":"2026-10-06T15:01:24.441Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":970191},"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"]}