{"format":"receipts-proof/1","hash":"2fabf319dc155ed72aee6447cffc493ab1e252cb2ead84de3a2ffdc258060c19","provider":"demo-macd-momentum","seq":103,"kind":"signal","issued_at":"2026-10-21T19:45:18.986Z","prev":"0f59f9e9873e72d88ea4c98935737f7a91111601eafdb86b0e170ec01fee0a92","body":{"issued_at":"2026-10-21T19:45:18.986Z","kind":"signal","nonce":"67dc399399ad4fdd8ca232076e7ceb08","payload":{"entry":{"type":"market"},"expires_at":"2026-10-22T07:45:18.986Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"long","stop":"84283.3","targets":["84676.7","84971.8"]},"prev":"0f59f9e9873e72d88ea4c98935737f7a91111601eafdb86b0e170ec01fee0a92","provider":"demo-macd-momentum","seq":103,"v":1},"signer":null,"sig":null,"batch":{"root":"2fabf319dc155ed72aee6447cffc493ab1e252cb2ead84de3a2ffdc258060c19","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-21T19:45:49.099Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEIL6vzGdwVXtcq7mRHz/xJOrHiUssurYTeOi/9wlgGDBn/8Age6xpQziQRZQjwILwzELpJPBOdAmyReGaSBr6gy4IMyGbChc9YwFy6fdrjCPAQYJRbL0JL6sfs5aql6xMg7AjxILzLTaTfeJTABLhb0NIuDz7+DneV30NM/8a6M6pzqtVICPEgp6B+Ev2x9uqCRSk7LXTA9F94PBjvyPsOsrnFgKXeJ1QI8CBJHHjK0NwnQh8aDzglKKo4MmMB/iUW1YLQd+/LMuZStQjxBGrZFm7wCB5fxeF7di3lCPEghPEKYeXKxLzNp5EKd6cY7yDIAujXW1Dwc73PpWdqdCwI8SD/yDx+f5KUVmISgURMxCjKmvHcqtOve4OVZTayv+QEpQjxIBrHylKPJm/f6L2iYM1UqH04GUu6vfeFJTS0mowerytVCPEgKuTvocbpSz2/rh9MDEDs60MC/7scTW+skljncRD2VDYI8CCamTDR0/ldtxX0SJc+x0BMvJ04el+rYjKs29sEPXnPeQjwIDnagxRcmME8aVQ/eE9ja36Te8dAsv4t1c8TrZiSHzljCPAg9OHrasUcLBYtWSnUQpaX5hlDte3IkYR770oGpinWA/8I8CCNTJLCUsuTXDBKIxnJXklDx9f4kaVHBG8Xoyrxwco1rQjxIOyHGh/Z3ZJM4IwPPY86GjnkUEcFs7M0spPZcLhVwO3iCPEg/J80uzaOBLum+AJtOF41XHAYNFQWYGeusfzOMEoVAlAI8CCemNZDoAve4MoccxNEwD1xG7C0ZLYfn6UbLVtzvd8y/gjwIGrThTZ51eObdfXZywxo58v4/bbJr7gQ1g7s9llS+lK4CPFZAQAAAAELnv0RfZtTAiq9MWcff1bxMU2WVjPyb/1MmmOzOlcY5gAAAAAA/v///wKurwEAAAAAABYAFK/Jb6s9pFpxjZ3bdjpt2TaBq0W2AAAAAAAAAAAiaiDwBOzWDgAICPEgN6bXqnz+WcBUXpDQhM+w0B66Nvu4e5ezmILzQqd7GpcICPEgOs2WjbMHMkaVJ/jSpI/7CYOC1xux8L813DrQfdXAMCYICPAgaxU7nWHsRVFM4PFEKHEIgppfKrZMt8nlCdeWaT54HosICPAgADMblBpVCEGCUOMvks+4LIXRtFrwGLigmR1GFxHCE0AICPAgofpLDhklPCa2rWS/PqrP8RFzm3DAE6bebSCUUt2YDXEICPEgWdfRW01Tty1PoB7udXiJU0wEJb/OrMEle43I0n6k0bgICPEgoNpNDcmEAEjW14d8MMSQxAZg6KhFngPzc9J3uZIIa28ICPEgqecyDyaMIt/JOqtD7uKBMKAFV3xrmd1bwXbQZqIBRxYICPAgGxTNegAeUAFlowRCdQVamcUL+QoTbExa2AFSwFEhscYICPEg3K3ivA41/FlleOVYk9QnwI2+O4lfi8myArE0L8jgcY8ICPAgJc5Uy8pm3Y+NdbVGUPE0OrW7OlW0Cv7hFA4a0qs8pzgICPAgdzKKKbbheSlyIxLL2inlpOmeZw2xcDH5QoEaB6OXFkoICPAg24CRcW4OR2lOhJmyj/kJwN6a+S6aO/YRs7R4FEMnD6UICAAFiJYNc9cZAQPtrTv/8AjKHXe+/dTpUwjwEAY+pp2INWzxJDOhULAINzII8CBHWTUSYc+z0r7GX5N03XknBjF/HsUXo01z83fBGceGsQjxIACnEme68OG0prNTY5Z3kaCdNr7plKybDzszzN1rn5FDCPEEatkWb/AIT00oTUf791gI8SBAjSK4Aw3G/boYtywBAGOoqKgbA6YTi+TWIaOUuFIK2AjxIPWSuZlnQSbBZt2NQi5XhFx4N4a05L81BRknnlxq4y9mCPEg6QLfnd7x+XmlmpuPY0EqEYMZiObze2LYogt3tmplcPcI8SADYvIMmDgb86YW3gEX+3NF3BN/9++LlhOOij1oEIZclwjwIBQET+hfXHQGjaIxwnXMEBJKkwk63ko58W5UuDiuU6hyCPAgrDYSB0lpiREX5GUK+AVrA/aslhqrZ4odOw309dCVbXAI8CCY0znHXtnJkkOy9QS/PKprMlPtRLCta45zJDLs8XzdAAjwIFZJnxfJXlglk9iKDQAJ9z7e+gyceDErsUl1J1T5wvijCPEgfaDPe0tJfdztRuUKwx7wXD85oJ10bBM9Am8v+mk7qCsI8SAZisUFa4v5XePufKT+L5R3+EFgGRrahfdGq19012AuGQjwILq0G+lsXr2Z+kwKqfHKEshwW1Q0IDioUwnj0ieBINXRCPAgGshlfxVP+usv/EIvW9nlVgdy7El+Mo9VRQKqzvGu1i4I8VkBAAAAAfS2hVv0FaE01jL3mscsEDZ8e5GMnRtRl0Mly6Hd323JAAAAAAD+////Ap8oAQAAAAAAFgAUir2/+J2mqhOPGZfrNC00ZyCy/pcAAAAAAAAAACJqIPAE7NYOAAgI8CC4iw47G4AmCk/SGDum1PWOG5IBjXEylUkWQgdJOwcaUQgI8CDTt9MKBLsKPPC3tDbTyqn9CO3lHpP8Ec+qtsoTFcagQAgI8CAfjxIMH0aaGSph7zsn/XvE7iOG3FiYFy2/BRNQhjreIggI8SAv6iZavgHxHEzb7tsnQ0qmy6+1eMFtmvyGAE7rU8WzAwgI8CCumq/sOMLrqdPVgTlnWugRW1tqVfSqa8wTQBnipaaq8QgI8CAoaknz9Gzf0EMleJ0Uk/0ZhnnqF2qfUHm8wmXQAxggQwgI8SBDd+1uyDqJPA6kQ9bwh01tgqj77LLDh7HFWFgk7NeOiwgI8CCXkSi3+oo/yXhsmEQnl9XrLMi/84TfoKKfzCGDCgSwmQgI8SA8gzMBMSgNX/6xI12ju53iFCAdXKA5mzJbhGXhjhH/yQgI8CBS9IqMLDUmXgfxMQ0L3jV+zCyQHrE/nylcMAhw2j1w6ggI8SDp/XnCoRFH/PbiZOw3Fz2j7q4M8TWlkAtaGqODFDOywQgI8CB3MooptuF5KXIjEsvaKeWk6Z5nDbFwMflCgRoHo5cWSggI8CDbgJFxbg5HaU6EmbKP+QnA3pr5Lpo79hGztHgUQycPpQgIAAWIlg1z1xkBA+2tO/AQxPk+lGq3eTF06/RWuvSFVwjxIGyDaNXANmyLcM/pLPddMLRE2Ktbx/PxrWn5pW6bjw9uCPAgix+5FXFe+QRHvhQi0TVIG1SgSgg4PJM7oyEXKCC2uwkI8CB7eBeT2KgFqDGKZ6vB+1IYd7Po4Q6uRwUJtBIWTFrEswjxBGrZFm3wCKKkqGIgoBeiAIPf4w0u+QyOKShodHRwczovL2Zpbm5leS5jYWxlbmRhci5ldGVybml0eXdhbGwuY29t","chain_anchor":null,"bitcoin_block":972525},"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"]}