{"format":"receipts-proof/1","hash":"305785648ced77b1775119baac12285a63c054228a95f60589fb561cc6b30479","provider":"demo-macd-momentum","seq":9,"kind":"signal","issued_at":"2026-09-27T12:00:39.128Z","prev":"0e63fd28dd5820feee89deb410fa17a85556dd985fccb61a06368b4a8c6febf8","body":{"issued_at":"2026-09-27T12:00:39.128Z","kind":"signal","nonce":"767b43c555c9843e7c2b84a304941477","payload":{"entry":{"type":"market"},"expires_at":"2026-09-28T00:00:39.128Z","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":"2705.72","targets":["2711.96","2716.63"]},"prev":"0e63fd28dd5820feee89deb410fa17a85556dd985fccb61a06368b4a8c6febf8","provider":"demo-macd-momentum","seq":9,"v":1},"signer":null,"sig":null,"batch":{"root":"305785648ced77b1775119baac12285a63c054228a95f60589fb561cc6b30479","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-09-27T12:01:39.157Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":968839},"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"]}