{"format":"receipts-proof/1","hash":"fa5ac7afac0948c6300b56136797a857fc3f213733337a926d4449d1f246b098","provider":"demo-donchian-breakout","seq":1,"kind":"signal","issued_at":"2026-09-25T11:00:58.912Z","prev":"0000000000000000000000000000000000000000000000000000000000000000","body":{"issued_at":"2026-09-25T11:00:58.912Z","kind":"signal","nonce":"609c6649949587157404a018845469ce","payload":{"entry":{"type":"market"},"expires_at":"2026-09-27T11:00:58.912Z","market":{"kind":"perp","symbol":"SOLUSDT","venue":"binance-usdm"},"note":"Demo bot: 20-bar Donchian breakout, 1h. Mechanical rule, not advice.","side":"long","stop":"117.18","targets":["122.1","125.05"]},"prev":"0000000000000000000000000000000000000000000000000000000000000000","provider":"demo-donchian-breakout","seq":1,"v":1},"signer":null,"sig":null,"batch":{"root":"fa5ac7afac0948c6300b56136797a857fc3f213733337a926d4449d1f246b098","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-25T11:01:58.837Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968549},"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"]}