{"format":"receipts-proof/1","hash":"99111d9b24d63bd6b011c42dd2270e3f7c7b80c1f86e1b5d0dc7ca171007c70b","provider":"demo-bollinger-squeeze","seq":89,"kind":"signal","issued_at":"2026-10-10T14:30:24.120Z","prev":"55c77c0e7a5f7984b3dfe5d6d91dc616c5828461be8431cd7c095e0763971f0b","body":{"issued_at":"2026-10-10T14:30:24.120Z","kind":"signal","nonce":"33a4e338791e539f7079af5c8b68490a","payload":{"entry":{"type":"market"},"expires_at":"2026-10-11T14:30:24.120Z","market":{"kind":"perp","symbol":"DOGEUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"long","stop":"0.08603","targets":["0.08653","0.08678","0.08702"]},"prev":"55c77c0e7a5f7984b3dfe5d6d91dc616c5828461be8431cd7c095e0763971f0b","provider":"demo-bollinger-squeeze","seq":89,"v":1},"signer":null,"sig":null,"batch":{"root":"84a63208b3dd956ee0fca8f2f88b59fb390dd48d4c717fe2fa7526cef5a22b6a","index":1,"leaf_count":2,"proof":[{"side":"L","hash":"55c77c0e7a5f7984b3dfe5d6d91dc616c5828461be8431cd7c095e0763971f0b"}],"sealed_at":"2026-10-10T14:31:24.385Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":970780},"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"]}