{"format":"receipts-proof/1","hash":"604c2285e090372b2cdef4a9e8380e53d3f2478d3029e47060236f04ebaec0e8","provider":"demo-macd-momentum","seq":46,"kind":"signal","issued_at":"2026-10-03T20:03:20.375Z","prev":"1cf3ba0c6a5f71598fecf5d2c7863b174c29b779193961714b8855e78a7ffcdd","body":{"issued_at":"2026-10-03T20:03:20.375Z","kind":"signal","nonce":"c8db36671a44a7bfb8d6639aced4a4a7","payload":{"entry":{"type":"market"},"expires_at":"2026-10-04T08:03:20.375Z","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":"2681.94","targets":["2686.64","2690.17"]},"prev":"1cf3ba0c6a5f71598fecf5d2c7863b174c29b779193961714b8855e78a7ffcdd","provider":"demo-macd-momentum","seq":46,"v":1},"signer":null,"sig":null,"batch":{"root":"604c2285e090372b2cdef4a9e8380e53d3f2478d3029e47060236f04ebaec0e8","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-03T20:17:40.941Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969762},"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"]}