{"format":"receipts-proof/1","hash":"a3c93c1bac098b5b5cbf18e5f247372bef9e87dfedb8a04bfb9b8f696bb3db25","provider":"demo-macd-momentum","seq":13,"kind":"signal","issued_at":"2026-09-27T19:25:02.472Z","prev":"97dc8bdc7dafe355d47dcbf98c3f6c0ff82ccbd58596a3b4f62c21277616c8e4","body":{"issued_at":"2026-09-27T19:25:02.472Z","kind":"signal","nonce":"b80aaf3b40cc2ecf2461e61a2c41bea8","payload":{"entry":{"type":"market"},"expires_at":"2026-09-28T07:25:02.472Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"2697.32","targets":["2689.24","2683.17"]},"prev":"97dc8bdc7dafe355d47dcbf98c3f6c0ff82ccbd58596a3b4f62c21277616c8e4","provider":"demo-macd-momentum","seq":13,"v":1},"signer":null,"sig":null,"batch":{"root":"a3c93c1bac098b5b5cbf18e5f247372bef9e87dfedb8a04bfb9b8f696bb3db25","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-27T19:26:02.476Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEIo8k8G6wJi1tcvxjl8kc3K++eh9/tuKBL+5uPaWuz2yX/8Agq1eZVSdnSiAjwIJiI37Yb4YhxJOBbkdgXuLh2uPiLbeOMBWdgPqhSVJhfCPEge+UpAkN+JOFQzO8sccUi0ZTR80+9wlORCHuLqAgo9bMI8BD6+8nZMsnKLko7x0snb35iCPEgZ9WqeVDoJK5QZnv3mfJC1/BTpnkb8I18VxzDT3OtpFsI8CDC8DVu5wb+9rThipsw++u1DVr56P64t+2+i2WRCcFhKAjxIFQKO6HZfBqBUqCUiSbvPH2dVs4p22NfqD4RKCIbOomfCPEEarlty/AIyixQYg4H0OwI8SAMHAhHRFyw5h97hCCJK6JnCaB9c3/a1Xu9Tske0gUO5QjxIEYNo97iE+U+tmFf4S1Kx70g8UmIeFfBTQX0BeqcA27nCPEgjmQIby7MSoyo7gGV4fYjUq1LekNdt7/h7dNw4i+TNwkI8SDlJKE6k7lQ/SRlcI/Q4dk9pXtXZ1rAZGPXL1RM0s9/FwjwIIgV1aRhBT0UNGRvUghg6CI2goipl1CoKumCyzVoK1lPCPEgQQAROZqEXHKN3sULdUqwUJFcdomuNeXe4ppc/gml0FkI8SAX+KkNutN8Bk9aHHW7kizq9QUupJHw9VgI26k0W0sl1gjxIDv0/QY6ZXg5GwLrc6O4pOZTwTekAfEGzCTCFlDBfozpCPFZAQAAAAFximp3WAuoshhlu+9i2WXg9V774njWgRgKrumWD0NGigAAAAAA/v///wJvQgEAAAAAABYAFJY4uh3dRcW3B7cdu+eRfjA4b8xrAAAAAAAAAAAiaiDwBLDIDgAICPAgNgRr81jWhoenq/LaevklPJjPZMbOJKPTE8otCKj0he8ICPAgwi/oRvOy2mLWXi72If1wFgjmjpJaySyvaAsLQc/v9lkICPAgSknmcrYAwGGxQOocBngwB6Ut2lfQ+u+gyvBwjIrr+JIICPAgnSpDXE2nEeSVdtlqM4zlDQQTlVJ/VTN17dwhchphEg8ICPEgsYCyunQ5mOPpTOcHN7o4r2PuXcoMSjiHl/xBCp75d0wICPAgacOOgg8w921ihzH9FrX7wRznGFtScPEzayLvr5dus7kICPAg4gjlSqr8CEGwN7ZbtkKQ41s9t673uBzD1YoBL4WYWngICPAgqldZVLyhGGs87Sf8EWRTmlm0QB1Zx20KF02gA45hAcUICPEgbNQVPvsA9z4yN4pDOY1U0Bh+tW3/pkJaBoA1Ai6FqswICPEgnfkpu5jBPADMEPcIkVYQ1jJNtTPvXNGFH/HhVjx+NyAICPEgTAkQydp07OSCcE//MTKvJnsRTo6wPabR/lH6idl3xe8ICPAgkzXVC3TAbXWY5q0i1ljQUwszQ15+eSobrViQ30okJ3cICPEg5WRBWav4vEncuErX8OGV8KavFldn5FazX6LoJREhP7sICAAFiJYNc9cZAQOxkTv/8Ai4oWvqXVRu4QjwIDoIjtWCTz+oSv8R4m5VNBf4TBReKsmHnnrAC2FH0JWSCPAQezfS1ndhdPnIAjNx49AzGgjxIDtCMDtDFHCugb237rGrwdgfE2Gd5U+kD6iBx/XSOpa2CPEgq3ip3D1wn41hWbpUaNCdHHhzxfXbHCsHHb2GcrK+CsUI8CC7kp6fonpoq0XzA1h/giV+DTw4G7edsGNxEfqoF8vxXwjxBGq5bcvwCB8mGkiQH+45CPEgh0qTJWSYn2pFPlV8s6JnLfKrYMGbKPlGKBVvAvHvmZkI8SB+LQuA1xwMAFeLzrbEBmaleyV4N86nHZlyYQFbVTlzAgjxIOcQw5itOmbzaVBfmzNKcxvqf3XabcflqZKh8kJukPZiCPEgoQplghGv+Wv71tEMw/ikXQeerByEwnI1wOZvQVDtoBUI8CDdzvCAISMOKWV0eSjWSmQ0IB2MgxSdogOjXtu5z0Yx3wjwIF91zhPBDARG5Qsa355ZUGoNnrz+zxDTbtyJmhPWxgQMCPAgHjOGB4K4rJ1Blw1zMHAvkZh4A3GnLXQyuCcv5RJ94+EI8CBuM7htN9Vfu4if8+hQSxkgKBOdsCWeNvx99b211BY7RAjwIPQF5LbqT/gv9LsSMdhgsPFNo7MGbRZm4sWTFl44vAqSCPEgHp/2U6JhRT2wKCPUFxA+5J8H/vRlIGBObjtLAYzCiXoI8CDalopwfaZhGyRuVBR8L+mPjC/KcAX6UtpRi3VvQexQJAjxWQEAAAABQMvqmMHAulvCpKsRd2yiS9UbyQhy3u35RFAA4asGSxkAAAAAAP7///8CmTEAAAAAAAAWABTZ+AI74lyBYd6deZ/+n4iQe+CCCgAAAAAAAAAAImog8ASyyA4ACAjxIO9XEKSc7bfLev/8d+ix3e08/ZubaNxau/dNXaDHzwdDCAjwIPaRlQsspxUlthzHfe3AZh3nqU7dfLC0ojxBCs03GhuwCAjwIJtbxKHOvDb/1RPmgZ+s0+LGAzG0cPGOusEb1ssGHtz4CAjxIOrUtVC8fssoOTbHlyi/qlkzpuVtBWaadoe5wzvDNQ7wCAjxILluxQqO/xV7/DPk6aD83jXJW7eLVHCCow4Zf3Y7dV8FCAjxIGexnm4m1RWuq5Z9kdZG+7q49sMlcrYqc4e7IAGo/jMDCAjxILcXgtoBfDZxunb8yTl2m8WcUB9VYkvXeuZgi4e1w00eCAjxIJ1yPtG8XzWHozWfVi2CAdBNEyV7WoR3z39ZcyxwFaLHCAjxIFo17BMff/YgDxNFe71MTCI1bNEOtJ/wfZolRs+rIIdLCAjxICukUWBY4GpPnoO/0BfcEbHRUyZhtjFbxKQDTrlzE5M5CAjxICCWJZWLTpH1uk0lRSaRYZM0ol/nqwLB84JOZ4ZsvfmfCAjwIEcK3BJwPpnDD+ZWcP0DLk9gQYBVr/2HsUH/wLnRxj7YCAjxINIDwZQFKo6e+GAL4JuFs4Be293mj+PDHob1jg3OEobNCAgABYiWDXPXGQEDs5E78BBfOush4M7yAXCt1O0OJkBTCPEgzJ0U8KCPmPqc3Cx2NTblmjQohG/Ak/UiPhk56XVCsFUI8CDMS3czuSu1gANPUcV3xjQ8VfO9qqU93qyzX6RYpPxhPwjwIJ8FJfyKorBJkA+4Pmb/idTXk9B2++dlPB4Z1ZnpaBjoCPAgBFhGpP+QnBCfta/qW9wFwcYsye1jIqjyJO5bY0JfxkAI8QRquW3M8AiqNT/8ZZgWNgCD3+MNLvkMjikoaHR0cHM6Ly9maW5uZXkuY2FsZW5kYXIuZXRlcm5pdHl3YWxsLmNvbQ==","chain_anchor":null,"bitcoin_block":968881},"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"]}