{"format":"receipts-proof/1","hash":"54be6e1f9bd04dbf0a8e1b0601888b5807ed36166eaa46d92a496deb32d76cf0","provider":"demo-bollinger-squeeze","seq":25,"kind":"signal","issued_at":"2026-09-27T18:30:39.746Z","prev":"7361606e4ef9cf52e6df93159a8c6572661528cde8166ee3a804dba83c75410b","body":{"issued_at":"2026-09-27T18:30:39.746Z","kind":"signal","nonce":"b613c36db3c64307671fce5091ac881b","payload":{"entry":{"type":"market"},"expires_at":"2026-09-28T18:30:39.746Z","market":{"kind":"perp","symbol":"ADAUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"long","stop":"0.2547","targets":["0.2589","0.261","0.2631"]},"prev":"7361606e4ef9cf52e6df93159a8c6572661528cde8166ee3a804dba83c75410b","provider":"demo-bollinger-squeeze","seq":25,"v":1},"signer":null,"sig":null,"batch":{"root":"54be6e1f9bd04dbf0a8e1b0601888b5807ed36166eaa46d92a496deb32d76cf0","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-27T18:31:39.762Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968871},"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"]}