{"format":"receipts-proof/1","hash":"9c32c70c6f4e5963c17451c958bd4d192ec3adb336de50f61c0ad29778800544","provider":"demo-bollinger-squeeze","seq":43,"kind":"signal","issued_at":"2026-10-01T17:30:21.486Z","prev":"a457911c299bc8e560161fac0ea8b7f0de2acfc6919a7ee7bddfb11fc09e2465","body":{"issued_at":"2026-10-01T17:30:21.486Z","kind":"signal","nonce":"de0fe28bad805345adbab8880a5d908b","payload":{"entry":{"type":"market"},"expires_at":"2026-10-02T17:30:21.486Z","market":{"kind":"perp","symbol":"ADAUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"long","stop":"0.247","targets":["0.2548","0.2587","0.2625"]},"prev":"a457911c299bc8e560161fac0ea8b7f0de2acfc6919a7ee7bddfb11fc09e2465","provider":"demo-bollinger-squeeze","seq":43,"v":1},"signer":null,"sig":null,"batch":{"root":"80f7079b3ca4cb094e671025ea1ed132d446c6c77062fe8c3e28fac0ad8e1793","index":1,"leaf_count":3,"proof":[{"side":"L","hash":"dfa6e801ec956e8dcc6d17747d15bf91a35c0bc11e187ad4b392dd5a7b46623e"},{"side":"R","hash":"8bc47fc407c23cbe256cb443e8f595589abcbc3f618b21c2ae68caca7da1602c"}],"sealed_at":"2026-10-01T17:31:20.100Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969471},"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"]}