{"format":"receipts-proof/1","hash":"6ff21859b9436c3f112c1487cdbdcad7202172e76d2a1a96bc18ed929d962863","provider":"demo-macd-momentum","seq":34,"kind":"signal","issued_at":"2026-10-02T06:30:50.797Z","prev":"89909233ce5f093f2555185892b3a21cdc9fc65f16a6567989fa92bc013ef19e","body":{"issued_at":"2026-10-02T06:30:50.797Z","kind":"signal","nonce":"63484dff671d9e32c7a76c7ec8bc0c98","payload":{"entry":{"type":"market"},"expires_at":"2026-10-02T18:30:50.797Z","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":"2720.34","targets":["2736.62","2748.83"]},"prev":"89909233ce5f093f2555185892b3a21cdc9fc65f16a6567989fa92bc013ef19e","provider":"demo-macd-momentum","seq":34,"v":1},"signer":null,"sig":null,"batch":{"root":"6ff21859b9436c3f112c1487cdbdcad7202172e76d2a1a96bc18ed929d962863","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-02T06:31:50.788Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969549},"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"]}