{"format":"receipts-proof/1","hash":"ddbdc4438ba755a33dc89304e83f4e5b0c4fcf99e2c9cdb00b15c269124ba7a0","provider":"demo-macd-momentum","seq":112,"kind":"signal","issued_at":"2026-11-08T14:40:47.963Z","prev":"3bd12303970b1d4920373070a805c8162181183415817e4057472944a744a19a","body":{"issued_at":"2026-11-08T14:40:47.963Z","kind":"signal","nonce":"6e8ea9da7da2281ff685388155001447","payload":{"entry":{"type":"market"},"expires_at":"2026-11-09T02:40:47.963Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"long","stop":"2235.43","targets":["2242.65","2248.06"]},"prev":"3bd12303970b1d4920373070a805c8162181183415817e4057472944a744a19a","provider":"demo-macd-momentum","seq":112,"v":1},"signer":null,"sig":null,"batch":{"root":"7fb552bcce0551aae2b378a10ddae6847a22cdeaf7e04e09cccc309608e3aac9","index":1,"leaf_count":2,"proof":[{"side":"L","hash":"3bd12303970b1d4920373070a805c8162181183415817e4057472944a744a19a"}],"sealed_at":"2026-11-08T14:43:42.173Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":975079},"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"]}