{"format":"receipts-proof/1","hash":"8775184b209f5fdc8b27e7752cb93d4a28abe69d3e7655bb76256ee0c5f30da3","provider":"demo-bollinger-squeeze","seq":90,"kind":"signal","issued_at":"2026-10-10T22:23:26.583Z","prev":"99111d9b24d63bd6b011c42dd2270e3f7c7b80c1f86e1b5d0dc7ca171007c70b","body":{"issued_at":"2026-10-10T22:23:26.583Z","kind":"signal","nonce":"e9033fada87f87ed8e8df789f61e1960","payload":{"entry":{"type":"market"},"expires_at":"2026-10-11T22:23:26.583Z","market":{"kind":"perp","symbol":"AVAXUSDT","venue":"binance-usdm"},"note":"Demo bot: Bollinger squeeze breakout, 15m. Mechanical rule, not advice.","side":"short","stop":"10.454","targets":["10.39","10.358","10.325"]},"prev":"99111d9b24d63bd6b011c42dd2270e3f7c7b80c1f86e1b5d0dc7ca171007c70b","provider":"demo-bollinger-squeeze","seq":90,"v":1},"signer":null,"sig":null,"batch":{"root":"18360d1ce3f3a6a36710fb781a224df169adf75b6f9f3801d59ac88516556e61","index":0,"leaf_count":2,"proof":[{"side":"R","hash":"2a37cc0a6537a582d99e776579e02a108c931406d0b84fc97e5f4d892f4add99"}],"sealed_at":"2026-10-10T22:56:24.362Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEIGDYNHOPzpqNnEPt4GiJN8Wmt91tvnzgB1ZrIhRZVbmH/8AhrHEhxINLUYgjwEHrtNO9akwMRJRsQguNsD64I8CDt9VZFP1q5QZWrX+e2xUKctAwlSmcYvwEQt65fOTUM/wjwIFjq/Vg5/tZD37Ox5aUAlrtxp4PIl/4jND3NIfvsdiuxCPEEasrCm/AIPJTcNOpeAVgI8CASOTTqnXH24+qbeenz2YDNxrFObNkrGLmdKLgKbVmw7wjxIHonSLH4QRHDxPorrkSGhNW2h8eviQEslHAWj5aRlyBgCPEgMs8fU9vpDLrr5bIqwFdKqQgymxh0zYJOYeKq10ulrJEI8SBMkVXG2QCaVNpKaxR8kU0zeJVMRjnsyjRFmlcBy6VMyQjwIHQ8dt45Bk4sVSPlfzprhvasEcTUR/GSjoVzafVoWJ10CPEgz8LKcRZbUS8xXfYbCewRcN3GXBht8tVUat2D2BKace4I8SDPr3/gGFdmyBsNwLnc51ZtBSfZks0XyZaYrWaM6+EMwwjwIAbLq94Gsh6CbACKv01D5HnyGuc1NSduO+cIIgvFt0lVCPAgoRgnIPfTM8ZARH7y3PT6GkPEGCuCv+Cs0H8wvd8MXyEI8CAZ+sfKJyPMBX7X5j+XDBGV9D+l4Pbha1DNPt38wlnwrQjwIOYBlMEU4L2LlFlWZROZi7pV8VMpATwasLZRyco8MXuJCPEgT2BtJKFGqZr4oajbiKEcu5Lz7j1ZZ9uoNtVcHuAxy20I8VkBAAAAAS17g9DcEFANpSXPMyumNI2kx8O5l2k/HXVHPYDwJPS/AAAAAAD+////As2vAAAAAAAAFgAU7uUjVUb4W8braPlQK6y/4x6Wf4wAAAAAAAAAACJqIPAEW9AOAAgI8SB9rj2z6wS4fUu7Gyd1wPV7ncAQS8iHp1G/DLIWr1kOQAgI8CBJl5nmt+7yIfa99hkrksdQxh9mjYQwyiwcdy17T0ZlCAgI8CCeeQtEA6Sz8ojwVp5gQCjRNEzt8ym4O5/4izUiYMmdCQgI8SC8tITJg26kJOJHrCXl9NLIU4z67tubnSb4TggzkU9XOwgI8SBdlARuqAWnxAZsHeO5jldIfv+yi6IzS/5k2Q1UuTZ6SggI8SCfV+HGzJdgahiO6SRoGDxH0g29BCwGvBNyXxuIYilApQgI8CDHLNmMGBIxYck+nWdpZ3oJj4R2UOzZJ7zErH+L2NnJmwgI8SBpbzXHAdq9q1gRhvhQ8H8OfP5AQH0FjYj8hwfi7lf31wgI8CBnhy/Fdcx51znkmM+qaxo69qV5FPdBwtusb9v58f2p3AgI8CDJBDzS9o0S3d6UmeN9PqSLEvaIrS/KKOlYlPAX3a4/7wgI8CChWcubV9bUt0eLnhodSsCyd+0vWAwnNFwNtZ6LqK6oVwgI8SDsdkhyrr6c8rN67P//epcH7cCvJ/VOCnnmx4RnD95+hAgI8CCrOji+9xs2ZTOrfxuGMgYsOy6fwGujbJIFM5JFWpiK7wgIAAWIlg1z1xkBA9ygO/AQ+hQKJZw1tn2XjARPAlkhMQjwIP9sYzRtwGH2SpOm84lwE70M3PHyzM21gVK/lAVp0ngLCPAgH6xwggopmI5EiJ4vW0e+xZa4OoUIEe0fS2GppzdEIQII8CDp5YFZMEvK85se35TjwpQmM1Jw2FMsmKM3SKw3UNSaiwjwIJFVPrpllj5vH2on/BcWjXKiydhp4VPANg/vpfufxNgLCPEEasrCmvAIo9EMNZuSc2gAg9/jDS75DI4pKGh0dHBzOi8vZmlubmV5LmNhbGVuZGFyLmV0ZXJuaXR5d2FsbC5jb20=","chain_anchor":null,"bitcoin_block":970844},"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"]}