{"format":"receipts-proof/1","hash":"4689358a2e886a6444794f70610892a523371f5545779e87fadc9ded9b4a91f2","provider":"demo-macd-momentum","seq":99,"kind":"signal","issued_at":"2026-10-20T19:50:46.225Z","prev":"90c1ce1a23a0bf838d0880236ba43dda62b78245724421818ba8ad7c99a7d962","body":{"issued_at":"2026-10-20T19:50:46.225Z","kind":"signal","nonce":"bba668de35f123514e779bf23dc9bade","payload":{"entry":{"type":"market"},"expires_at":"2026-10-21T07:50:46.225Z","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":"2433.98","targets":["2447","2456.77"]},"prev":"90c1ce1a23a0bf838d0880236ba43dda62b78245724421818ba8ad7c99a7d962","provider":"demo-macd-momentum","seq":99,"v":1},"signer":null,"sig":null,"batch":{"root":"4689358a2e886a6444794f70610892a523371f5545779e87fadc9ded9b4a91f2","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-20T19:56:44.730Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":972374},"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"]}