{"format":"receipts-proof/1","hash":"cbe5637e32529e9810afcbeadac1de53159dfaf01d0d446fca797d4060382a07","provider":"demo-bollinger-squeeze","seq":107,"kind":"signal","issued_at":"2026-10-13T23:30:18.687Z","prev":"3b8d0a0af2663ca8ae9c2a82ee24f6d9712071ddfce046948d94cd0b0a06c06e","body":{"issued_at":"2026-10-13T23:30:18.687Z","kind":"signal","nonce":"a5c852a0349883c7ed5ed2c45801800f","payload":{"entry":{"type":"market"},"expires_at":"2026-10-14T23:30:18.687Z","market":{"kind":"perp","symbol":"ADAUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"short","stop":"0.2368","targets":["0.234","0.2327","0.2313"]},"prev":"3b8d0a0af2663ca8ae9c2a82ee24f6d9712071ddfce046948d94cd0b0a06c06e","provider":"demo-bollinger-squeeze","seq":107,"v":1},"signer":null,"sig":null,"batch":{"root":"1ce3136f6557e58edaef1abb047e0d2a4468bfd7649c440c8f9ddb2b5cecf480","index":1,"leaf_count":3,"proof":[{"side":"L","hash":"3b8d0a0af2663ca8ae9c2a82ee24f6d9712071ddfce046948d94cd0b0a06c06e"},{"side":"R","hash":"4f62157b09c1fc97c89a742d34884503d764f2b0edff4e949749108774727db2"}],"sealed_at":"2026-10-13T23:30:24.389Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":971318},"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"]}