{"format":"receipts-proof/1","hash":"b288294710029612c2c62a0c865bd9ee12daefe1c72f9c464138faac71ffe561","provider":"demo-macd-momentum","seq":100,"kind":"signal","issued_at":"2026-10-21T06:36:17.544Z","prev":"4689358a2e886a6444794f70610892a523371f5545779e87fadc9ded9b4a91f2","body":{"issued_at":"2026-10-21T06:36:17.544Z","kind":"signal","nonce":"09d0dd5559bf390f5bd25fc51bd28129","payload":{"entry":{"type":"market"},"expires_at":"2026-10-21T18:36:17.544Z","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":"82737.5","targets":["82996.7","83191"]},"prev":"4689358a2e886a6444794f70610892a523371f5545779e87fadc9ded9b4a91f2","provider":"demo-macd-momentum","seq":100,"v":1},"signer":null,"sig":null,"batch":{"root":"5b9698d71b0e85edd57aab7fb8a96076628b0efe8a0b15a9e958738bb359c17c","index":0,"leaf_count":2,"proof":[{"side":"R","hash":"e6beeb99dd39fbfaafa3578d553ee61d4b212234c72317260042f2e35536440c"}],"sealed_at":"2026-10-21T07:09:56.232Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":972436},"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"]}