{"format":"receipts-proof/1","hash":"aad92e8373fed0ac74ff3c96ffe18059348240c927784ea74ad4ee6e66d25042","provider":"demo-bollinger-squeeze","seq":137,"kind":"signal","issued_at":"2026-10-21T15:00:55.453Z","prev":"48f6286041fd6fa7a686a1fab4299fd59e0b2ab4ec345b189c1fcded5f5bbe41","body":{"issued_at":"2026-10-21T15:00:55.453Z","kind":"signal","nonce":"6be44c124994d6c8aee7461f4130c3ae","payload":{"entry":{"type":"market"},"expires_at":"2026-10-22T15:00:55.453Z","market":{"kind":"perp","symbol":"ADAUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"long","stop":"0.225","targets":["0.2292","0.2312","0.2333"]},"prev":"48f6286041fd6fa7a686a1fab4299fd59e0b2ab4ec345b189c1fcded5f5bbe41","provider":"demo-bollinger-squeeze","seq":137,"v":1},"signer":null,"sig":null,"batch":{"root":"aad92e8373fed0ac74ff3c96ffe18059348240c927784ea74ad4ee6e66d25042","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-21T15:00:58.008Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":972492},"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"]}