{"format":"receipts-proof/1","hash":"0134693a9ba7803e9289430a4613a4f2bf1da4c5997f3bd0c3b51f52076b85b7","provider":"demo-bollinger-squeeze","seq":35,"kind":"signal","issued_at":"2026-09-29T15:15:39.747Z","prev":"d1ba5dcda795023888101b662203523455b511da9560821ea28ac791722d3f17","body":{"issued_at":"2026-09-29T15:15:39.747Z","kind":"signal","nonce":"479072dd3b65e7275d5382924c32eca2","payload":{"entry":{"type":"market"},"expires_at":"2026-09-30T15:15:39.747Z","market":{"kind":"perp","symbol":"ADAUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"short","stop":"0.2519","targets":["0.2455","0.2423","0.2391"]},"prev":"d1ba5dcda795023888101b662203523455b511da9560821ea28ac791722d3f17","provider":"demo-bollinger-squeeze","seq":35,"v":1},"signer":null,"sig":null,"batch":{"root":"5f776b18e8617b58462b593c67e98856b49b131469882e1eb8600e78880d0047","index":1,"leaf_count":2,"proof":[{"side":"L","hash":"9adb142e70a26d629d8fec338804914f0e08a976a945ffaf8a33f07f9af0c6b3"}],"sealed_at":"2026-09-29T15:16:29.730Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969177},"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"]}