{"format":"receipts-proof/1","hash":"4455fbee3a9bec189fe0c41778447ea0d629ebc4f451e364629ceaad70221244","provider":"demo-macd-momentum","seq":19,"kind":"signal","issued_at":"2026-09-29T22:11:59.343Z","prev":"62e2a3714df7bc20b9485966fdb52b8341101ec41720d110683921fd40778d45","body":{"issued_at":"2026-09-29T22:11:59.343Z","kind":"signal","nonce":"37e5de370eddb9bc7528e352a64cf111","payload":{"entry":{"type":"market"},"expires_at":"2026-09-30T10:11:59.343Z","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":"83459.9","targets":["83664.3","83817.7"]},"prev":"62e2a3714df7bc20b9485966fdb52b8341101ec41720d110683921fd40778d45","provider":"demo-macd-momentum","seq":19,"v":1},"signer":null,"sig":null,"batch":{"root":"4455fbee3a9bec189fe0c41778447ea0d629ebc4f451e364629ceaad70221244","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-29T22:42:29.986Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969218},"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"]}