{"format":"receipts-proof/1","hash":"8a4dc171e6aab3eaeb4eac24b7f783ca74feb54e7eb5f145446c4e2c9f083461","provider":"demo-macd-momentum","seq":80,"kind":"signal","issued_at":"2026-10-13T21:25:18.402Z","prev":"2783aafaa6657b7c38afc9299f53b5329f14c7dc2a66dc7170cc4d862132fb90","body":{"issued_at":"2026-10-13T21:25:18.402Z","kind":"signal","nonce":"3c192b42b69369435fe54cd38e5e3dc9","payload":{"entry":{"type":"market"},"expires_at":"2026-10-14T09:25:18.402Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"2509.49","targets":["2501.43","2495.38"]},"prev":"2783aafaa6657b7c38afc9299f53b5329f14c7dc2a66dc7170cc4d862132fb90","provider":"demo-macd-momentum","seq":80,"v":1},"signer":null,"sig":null,"batch":{"root":"8a4dc171e6aab3eaeb4eac24b7f783ca74feb54e7eb5f145446c4e2c9f083461","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-13T21:25:24.107Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":971307},"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"]}