{"format":"receipts-proof/1","hash":"ced7be15b242beaa1cc5102fd059dbcf417f46de85a2ea8f13c712f26e878e04","provider":"demo-bollinger-squeeze","seq":21,"kind":"signal","issued_at":"2026-09-27T13:00:39.210Z","prev":"793e0c10259cd7db4f997512d2578f92d9fa98fb6384aaafd4422dc0c68897c5","body":{"issued_at":"2026-09-27T13:00:39.210Z","kind":"signal","nonce":"3a10eb4d2843f77c029476a5ffc31711","payload":{"entry":{"type":"market"},"expires_at":"2026-09-28T13:00:39.210Z","market":{"kind":"perp","symbol":"AVAXUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"short","stop":"10.99","targets":["10.814","10.725","10.637"]},"prev":"793e0c10259cd7db4f997512d2578f92d9fa98fb6384aaafd4422dc0c68897c5","provider":"demo-bollinger-squeeze","seq":21,"v":1},"signer":null,"sig":null,"batch":{"root":"a2a00290a9dc97f94f9c4a6c83958b8b132d64afd5494d3f2df89d37854ac34c","index":0,"leaf_count":2,"proof":[{"side":"R","hash":"0b61887f7e6f2041d63c434850d175fa69db124aad8774d24129f0447885f037"}],"sealed_at":"2026-09-27T13:01:39.279Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968844},"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"]}