{"format":"receipts-proof/1","hash":"ec8f6ac7ce6397798a083b268728fe9468c8edc510f2df85dd06d1ee7bfc1650","provider":"demo-donchian-breakout","seq":53,"kind":"signal","issued_at":"2026-10-20T15:00:58.440Z","prev":"82fa1f2727e31b0316228ee8eb0b91493664b41520dc37de83e52c6402591a5e","body":{"issued_at":"2026-10-20T15:00:58.440Z","kind":"signal","nonce":"0f2e62529fa1a176fd16fe4ecd12943c","payload":{"entry":{"type":"market"},"expires_at":"2026-10-22T15:00:58.440Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: 20-bar Donchian breakout, 1h. Mechanical rule, not advice.","side":"long","stop":"2431.54","targets":["2531.31","2591.17"]},"prev":"82fa1f2727e31b0316228ee8eb0b91493664b41520dc37de83e52c6402591a5e","provider":"demo-donchian-breakout","seq":53,"v":1},"signer":null,"sig":null,"batch":{"root":"126daf34266d86a80d75e499eb68eada900f194b4d5a080cd505804073d66ea2","index":1,"leaf_count":4,"proof":[{"side":"L","hash":"82fa1f2727e31b0316228ee8eb0b91493664b41520dc37de83e52c6402591a5e"},{"side":"R","hash":"3f86f4706ec5b9eddc579ce524fc00828b537f7409db6f14bbe5d1d081564b18"}],"sealed_at":"2026-10-20T15:18:41.539Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":972349},"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"]}