{"format":"receipts-proof/1","hash":"e19251ccc4977e623a4cb929e0847213d75b3145ef409b99ee696d9f76b50b3a","provider":"demo-bollinger-squeeze","seq":48,"kind":"signal","issued_at":"2026-10-02T14:30:04.216Z","prev":"65837205aa5f9cf1f0777cc7f2460d343d84e682ce3751c65173c2f9ccc61ecf","body":{"issued_at":"2026-10-02T14:30:04.216Z","kind":"signal","nonce":"1497db82c4f1e838dd2255f79a4cabde","payload":{"entry":{"type":"market"},"expires_at":"2026-10-03T14:30:04.216Z","market":{"kind":"perp","symbol":"DOGEUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"short","stop":"0.09692","targets":["0.09516","0.09429","0.09341"]},"prev":"65837205aa5f9cf1f0777cc7f2460d343d84e682ce3751c65173c2f9ccc61ecf","provider":"demo-bollinger-squeeze","seq":48,"v":1},"signer":null,"sig":null,"batch":{"root":"bac8c78f8f1137b8d861eb64f2e5133ecfc980d63f60b93838eaf2e95d30f917","index":2,"leaf_count":3,"proof":[{"side":"L","hash":"446db2444a4b1ec5b3194b5de71a77c33ea42c785f431258bb0564fc87598046"}],"sealed_at":"2026-10-02T14:31:04.213Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969609},"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"]}