{"format":"receipts-proof/1","hash":"a13a45df575cf3746a1eb3a42f312943f00a5e88cd001e395baf47d3d271712a","provider":"demo-macd-momentum","seq":119,"kind":"signal","issued_at":"2026-11-09T13:10:53.876Z","prev":"bdd65c2492e72667c21e5f86b924e478ddf9fb475b351e4f3c64cdf84896791e","body":{"issued_at":"2026-11-09T13:10:53.876Z","kind":"signal","nonce":"cda2b060009050d657d386fb2d322668","payload":{"entry":{"type":"market"},"expires_at":"2026-11-10T01:10:53.876Z","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":"2128.04","targets":["2111.7","2099.45"]},"prev":"bdd65c2492e72667c21e5f86b924e478ddf9fb475b351e4f3c64cdf84896791e","provider":"demo-macd-momentum","seq":119,"v":1},"signer":null,"sig":null,"batch":{"root":"a13a45df575cf3746a1eb3a42f312943f00a5e88cd001e395baf47d3d271712a","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-11-09T13:11:49.853Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEIoTpF31dc83RqHrOkLzEpQ/AKXojNAB45W69H09JxcSr/8AhuEduetr0oTgjwIF4UWa1SDEaL91ys2S1D3kf6aOACsI2gAcFSJ8ElzF1BCPAQXR0VD4VEpBpq4GsJGB9pKAjwIMILg3Festfm496FHfDnVAfq5vGVurJgeD0VN3TmVKgVCPEgR5TEeAMSvX7kmQfnXT3ZZ72abN5f9PQQJje9rqU+KF0I8QRq8caX8Agw7g0Eq6VCgQjxIH7xcZ6owpksQVQ7kvlcV8vsci8qZUTHU+hgpDEzGb+wCPEgVx8CFkxcr4W6s/ehmzhkdxaR9i99edd8UrSiwqer+8gI8CAmQelTuUm7uGRz4FKgOst6CPbRA6kEu82mz9OQAfyLBwjwIMpX9wmNAQ0xMGbcfnrkMa9R1dlBsWGgZ4E/OEFJmoe7CPAgSKZyaKw0/771bF0K9v9kBVMiE/f4AcXgAbSH3LwHyBYI8SCzb1jitt/Hlhd3hRwsRP9ob8IeWmY1iPwOL4BxX8Vu4QjwICOKrnUkTq+yq0nsg5OZhEzOfZmC5dxgRbCD45CceVjnCPEgFg5Do1szNYBV2VeSw3/eijY3BuOZRMM8ZCugjueLedAI8SChu8nNX61oz29MCmK/S/b7ZDi9ISirFfvlSjv+GJOFYwjwIEfWABLZ4bF3k86TayhZQhbmVuq5UKL23iFDRYH2KqS9CPAgSyRF5x/FN3Qic+3WHaG9ck6hIBiCIOxZxmv7jP32evgI8SCS76u39gPeocnIuHqCfNz696bo7U1qF8bvl1GgYr+Q/AjwIMypX9Ij0yC6MT4vqW+Axh2yGRwW9gTaZmnbxgb4noqMCPFZAQAAAAETVWOw2na7daXXFvl+YZhXpg6lnBtW3T25Ousql6eYRwAAAAAA/v///wKrwwAAAAAAABYAFB+vKl2vDpzmlVRXBYNm5OJkIOUeAAAAAAAAAAAiaiDwBE/hDgAICPAgvEMiA/stp/AMPY2lOwKB6gmhIrJ5Aoqb4IaCW9b924AICPEgi+aMN4HJyJZvJfHKMpnYgfoW8spMtwj4g8RE2WoVPYMICPAgto20k7uxaKWXVaGbPMAe0kpmI6+HNY4YH1fgIZSC3b4ICPAgY3pNixnz3UMtQPsInzhGHAw+M9gqdX4ogjYB7f9MapkICPEgdFGxGs+How4dB7dHHKlx+mHFJBMD68R/jRiIwUakZSIICPAg4P32haC3G30svWnnXXTH8pmmKx2T033oT7vTJ8Q3k70ICPEgtsv4gDpMI3NDHxGnHj5i27JxDpcmGIzJ1i9SV0l5JRQICPAgJ2/wyc+dOxxwuS+bbLRJxFXta0RWr2Z70aZFYs8L+2gICPEgRnaBdrXDzPHc10C9qqTdUgj4Vh+quwtE0q7W8OKLRBMICPAgsQGQvH8amLL+sNlVRAKiPo6Ciy1l7yf3x6Z6/AoQIEoICPEgd9hA6+YWDRToWQeMpX0/ZHzkD9AxgFtKG5SfcLbS7ssICPAglRFjRLlP6pm0zm5v0oiB3nLPah3Q2sLfa5fxOZCfccMICAAFiJYNc9cZAQPQwjvwCHYXfn5yugTnCPAg31MQnNIbXcBgzEZH40S8PEaMmkcXrvTkwTF4rTm1CVoI8SDdofl1XXzwjFZvgTcLTnbN0khiccWonrX8LQOt0ikxhQjwEGZ0wvRPgR/ggSut1BtbdCsI8CAOCM7VZtQ+lK/Nss//6pBb3IKuZHXQ1JjUG4GzbFjxHwjxII+rOibkdy9wIDEwyPYeWaI1K7TB/Lg+ei/U4kYZerh5CPEEavHGl/AIue3kzDuAEkUAg9/jDS75DI4sK2h0dHBzOi8vYm9iLmJ0Yy5jYWxlbmRhci5vcGVudGltZXN0YW1wcy5vcmc=","chain_anchor":null,"bitcoin_block":975184},"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"]}