{"format":"receipts-proof/1","hash":"8f4a939add12e3c6c74394d132727d61967cf224b0549251fc25c0d59647abde","provider":"demo-macd-momentum","seq":5,"kind":"signal","issued_at":"2026-09-26T18:20:06.292Z","prev":"810ae546464e659e16379ec84fb1d192429a6a33311054ae79b6ca837c45fbe4","body":{"issued_at":"2026-09-26T18:20:06.292Z","kind":"signal","nonce":"00d52227c0217b4e5ded7cbc6326ba79","payload":{"entry":{"type":"market"},"expires_at":"2026-09-27T06:20:06.292Z","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":"84086","targets":["83988.4","83915.2"]},"prev":"810ae546464e659e16379ec84fb1d192429a6a33311054ae79b6ca837c45fbe4","provider":"demo-macd-momentum","seq":5,"v":1},"signer":null,"sig":null,"batch":{"root":"8f4a939add12e3c6c74394d132727d61967cf224b0549251fc25c0d59647abde","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-26T18:21:06.323Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968728},"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"]}