{"format":"receipts-proof/1","hash":"62e2a3714df7bc20b9485966fdb52b8341101ec41720d110683921fd40778d45","provider":"demo-macd-momentum","seq":18,"kind":"signal","issued_at":"2026-09-29T19:45:32.116Z","prev":"31ccb86521a15b4f6aa32d4b930fc2c098a620e6edcd6cf488f5b0a0b3632fda","body":{"issued_at":"2026-09-29T19:45:32.116Z","kind":"signal","nonce":"d843a3600d6a2ef342b228f39bea6dd9","payload":{"entry":{"type":"market"},"expires_at":"2026-09-30T07:45:32.116Z","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":"2694.38","targets":["2682.64","2673.82"]},"prev":"31ccb86521a15b4f6aa32d4b930fc2c098a620e6edcd6cf488f5b0a0b3632fda","provider":"demo-macd-momentum","seq":18,"v":1},"signer":null,"sig":null,"batch":{"root":"62e2a3714df7bc20b9485966fdb52b8341101ec41720d110683921fd40778d45","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-29T19:46:22.110Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969197},"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"]}