{"format":"receipts-proof/1","hash":"28b42d5007dc1a77ea4f67aae94dd185e8ccb2d9d123997887d6ee695861d755","provider":"demo-bollinger-squeeze","seq":62,"kind":"signal","issued_at":"2026-10-04T13:39:51.482Z","prev":"f1e5bd5d0b05f2d7841e4440642c6e818d67d0294e70778a5c794643a57f6fd9","body":{"issued_at":"2026-10-04T13:39:51.482Z","kind":"signal","nonce":"0a351b074fabed4589d3305e2bd35aeb","payload":{"entry":{"type":"market"},"expires_at":"2026-10-05T13:39:51.482Z","market":{"kind":"perp","symbol":"ADAUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"long","stop":"0.2444","targets":["0.2464","0.2475","0.2485"]},"prev":"f1e5bd5d0b05f2d7841e4440642c6e818d67d0294e70778a5c794643a57f6fd9","provider":"demo-bollinger-squeeze","seq":62,"v":1},"signer":null,"sig":null,"batch":{"root":"c26276b4a2b372359f3404be4967652a97f37109bc17d54b2b09e207e6ef658e","index":0,"leaf_count":2,"proof":[{"side":"R","hash":"9934dd1a4e901435111a01d89ea4753f2241c7dc66659d466c55bd01500a2833"}],"sealed_at":"2026-10-04T13:55:53.728Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969860},"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"]}