{"format":"receipts-proof/1","hash":"810ae546464e659e16379ec84fb1d192429a6a33311054ae79b6ca837c45fbe4","provider":"demo-macd-momentum","seq":4,"kind":"signal","issued_at":"2026-09-26T18:05:06.274Z","prev":"846b70d7d22593a27108ef6309514ec7463bf7e63be8305895a845f43367169a","body":{"issued_at":"2026-09-26T18:05:06.274Z","kind":"signal","nonce":"5657eea3aa3e89aa6e271ec110113df3","payload":{"entry":{"type":"market"},"expires_at":"2026-09-27T06:05:06.274Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"long","stop":"2687.05","targets":["2692.13","2695.94"]},"prev":"846b70d7d22593a27108ef6309514ec7463bf7e63be8305895a845f43367169a","provider":"demo-macd-momentum","seq":4,"v":1},"signer":null,"sig":null,"batch":{"root":"810ae546464e659e16379ec84fb1d192429a6a33311054ae79b6ca837c45fbe4","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-26T18:06:06.311Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEIgQrlRkZOZZ4WN57IT7HRkkKaajMxEFSuebbKg3xF++T/8AgGioySFjAGJAjwEFQMzPb7730scBZsqh3VKDkI8SC7oVMngggdW2UhxcAEJfOOKw9exgytlOkYXkyx3K7PfgjxIKesyIFBbhhQLVLTdldmHZ0lqqJBikM8RJt2VWFIBUhJCPAgJJpaGzyDVAxdReLOMtYJsTnKR4CCyFu53bE1cmCRMUsI8QRquAmP8AgTLqW0EIblAAjwIM+bsZJ5vKUpEZjleQFdcA9HkDEQFopWIfl6WOLuinTDCPAgqdvTUXVG3BqjKoiv3n0feANOsn5s4jn6eRuJ2d59whwI8SAVOsGLzlIxLkdiXMwdCpXoIGyaok3HCTagDbYLbDAhIgjwIBNKO9JU7uFxZO/PNZxM53TWsDqtqeuYChzR0HrJG/n4CPAgbdQX421wA36DF6MfmJdttb5oSYV3Fp+DbcJCvwSzpzUI8CBYSBYdM/kZHzjrLwLIS426JxJPN0pWFiKstGnDaTBk9AjxIHnXoF2kiLWL8CSOhrJly8DcUDavDILlPpzSRzsPJD78CPAgWLFM5e6MopX2sC996/C2AtGc+2AG6PBvWHCz990pz4UI8CB0AzgU1+KGrlS81f2JxTMWy5kLKwXJ7+CnYaDatx3UvwjxIGaKcf/HSdIKQig2IaCzwtcoEdRpoVrQe1+6fcKVNGqnCPEgUKXLs6q3XSOc7D4EgPhFX99+g+P0EU6O+7te8zEHeeYI8CCpwZuAxnzw90DHTaqmKg6a/LXu5XYpFD/Pk+DFTR0deQjxWQEAAAAB9odxsGpYpL5WNnykQuVm2SOuCGfzg1F3T01s1cNWF7UAAAAAAP7///8Cl14BAAAAAAAWABSCnHiJlBlrpypYhu5okWZNHATxlQAAAAAAAAAAImog8AQWyA4ACAjwIKmyJ0TSQXJiNw5FlS5teOPTTJFmhd3EA2wYx2NDPY9zCAjwIAQqUFON6EA8eb22SuVdXTBEClHa55C3EFY9/hCdBYMgCAjwINao6dIuqgO7+FFa6ptfMxztp/DmgFHh3iYstJ3frjY7CAjwIE40h52A8Lqe/VARvuGXfrLiJvO8fdePUag10ot7uG6fCAjxIEShHdhQrwVostsVjleO258KMJaXZcB3GDPAgcnlzVF2CAjwICkFbFIg1PhVmygQeJoJ1PLc1g+/yBJGr2jexDW+JNMdCAjxIG9v+kUEil0SYtRmBki1T9xHhMtmqTHaOq1YcEK8u5iQCAjxIJJJh6esEFEbRHsci7IIYOLv4SZWnqhqzauiTP8pMDoBCAjxIKD2zPnEa+g+QJQioE9HjbkuWm+EC4F6YkrdhZBG5GAJCAjwIDdm/2b8f/beXw/Nm+j5pOb6fvWdtMMiIu600dvmBW5kCAjwIOOAJY78xLBiKumjfSSrk/MvtipG/ZeFni9zjsWjGHIuCAjxIFlGeGOWwdvJ5rJFq8B6VrFelayOckSMsVNDgXmRYZ0xCAjwIJOSJT93ISqQ2ifEClb8JPZWunLjvgdzXOAeqAkRtjNrCAgABYiWDXPXGQEDl5A7//AIgaJEHExofLII8BBzp+9+kyMcqPjfVeFP8orPCPAgRdg+uDFCdTjqqcc/Kf2UejEEe7OoEAsNA33qu5HxH+QI8SAx1xL30RoEvFWnGSC7Z272T5FlbyVAT6ZMbCJROkeDgAjwIHDNHrYoYqJLgKtWUNGLGx3zT+/J41X8+Z81TheEHevACPEEargJj/AIxti+KMH2UR4Ag9/jDS75DI4sK2h0dHBzOi8vYm9iLmJ0Yy5jYWxlbmRhci5vcGVudGltZXN0YW1wcy5vcmfwEPCjFn1po0uqACVJekG3kf8I8SAuZHsakbAaqBEa3EZYdhH/oUVslGz4zQFAvUTPoYwH9QjwIP3urLH+1GFNX3aN49+3msu7ymNhX+21vYfAkJiE06eaCPAgZY2+QjVHInmXn+0AtfRQFP9SxUCI3T9FrRv6L3mC0K4I8CCvOcHmjFO9ECK2oQmNn1p/7jnBunSqF3zocUsGfoyfbwjxBGq4CY/wCPudnxq0aWQGAIPf4w0u+QyOKShodHRwczovL2Zpbm5leS5jYWxlbmRhci5ldGVybml0eXdhbGwuY29t","chain_anchor":null,"bitcoin_block":968727},"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"]}