{"format":"receipts-proof/1","hash":"c5891adb1702a7d7a5955563dcae1ea0e227ba14a60fc9874747bca90e54ccd2","provider":"demo-macd-momentum","seq":35,"kind":"signal","issued_at":"2026-10-02T08:00:45.487Z","prev":"6ff21859b9436c3f112c1487cdbdcad7202172e76d2a1a96bc18ed929d962863","body":{"issued_at":"2026-10-02T08:00:45.487Z","kind":"signal","nonce":"9d1e85f4b61e873d1576270858d7bd5c","payload":{"entry":{"type":"market"},"expires_at":"2026-10-02T20:00:45.487Z","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":"85886.6","targets":["86242","86508.6"]},"prev":"6ff21859b9436c3f112c1487cdbdcad7202172e76d2a1a96bc18ed929d962863","provider":"demo-macd-momentum","seq":35,"v":1},"signer":null,"sig":null,"batch":{"root":"c5891adb1702a7d7a5955563dcae1ea0e227ba14a60fc9874747bca90e54ccd2","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-02T08:01:45.480Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969564},"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"]}