{"format":"receipts-proof/1","hash":"1cf3ba0c6a5f71598fecf5d2c7863b174c29b779193961714b8855e78a7ffcdd","provider":"demo-macd-momentum","seq":45,"kind":"signal","issued_at":"2026-10-03T16:35:57.161Z","prev":"9c28fcaa9e83c6208a78f354f93092026a3e5cc23263b3068dbcd2de05be90cc","body":{"issued_at":"2026-10-03T16:35:57.161Z","kind":"signal","nonce":"e745b5c493422e07a79ce601a8cb0d9b","payload":{"entry":{"type":"market"},"expires_at":"2026-10-04T04:35:57.161Z","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":"2678.7","targets":["2682.1","2684.66"]},"prev":"9c28fcaa9e83c6208a78f354f93092026a3e5cc23263b3068dbcd2de05be90cc","provider":"demo-macd-momentum","seq":45,"v":1},"signer":null,"sig":null,"batch":{"root":"1cf3ba0c6a5f71598fecf5d2c7863b174c29b779193961714b8855e78a7ffcdd","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-03T16:36:57.134Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969756},"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"]}