{"format":"receipts-proof/1","hash":"e42afe3fd035ed60c538072958c3a86de78fb051f8089ead60090ecaf7175e44","provider":"demo-macd-momentum","seq":21,"kind":"signal","issued_at":"2026-09-30T08:15:50.473Z","prev":"952246b009dc0df2e1f31ba3a19a574f701784132da0bd780d11bd8d2f2cb81e","body":{"issued_at":"2026-09-30T08:15:50.473Z","kind":"signal","nonce":"e4ac684311bd0189a51cef154640a879","payload":{"entry":{"type":"market"},"expires_at":"2026-09-30T20:15:50.473Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"83233","targets":["82928.2","82699.5"]},"prev":"952246b009dc0df2e1f31ba3a19a574f701784132da0bd780d11bd8d2f2cb81e","provider":"demo-macd-momentum","seq":21,"v":1},"signer":null,"sig":null,"batch":{"root":"e42afe3fd035ed60c538072958c3a86de78fb051f8089ead60090ecaf7175e44","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-30T08:16:40.546Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969281},"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"]}