{"format":"receipts-proof/1","hash":"1e8d15e296051d18318396285276f780643feed3d6141e83e597603c0c7487ac","provider":"demo-macd-momentum","seq":1,"kind":"signal","issued_at":"2026-09-25T20:55:16.910Z","prev":"0000000000000000000000000000000000000000000000000000000000000000","body":{"issued_at":"2026-09-25T20:55:16.910Z","kind":"signal","nonce":"1503b5a5b719543dc2256486a90fbefd","payload":{"entry":{"type":"market"},"expires_at":"2026-09-26T08:55:16.910Z","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":"84002.2","targets":["83768.8","83593.6"]},"prev":"0000000000000000000000000000000000000000000000000000000000000000","provider":"demo-macd-momentum","seq":1,"v":1},"signer":null,"sig":null,"batch":{"root":"1e8d15e296051d18318396285276f780643feed3d6141e83e597603c0c7487ac","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-25T21:08:25.909Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968596},"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"]}