{"format":"receipts-proof/1","hash":"de5b46d3e4851c683c07e7c77f21d54061b349c4f5fcd464cf2bf281522876ad","provider":"demo-macd-momentum","seq":50,"kind":"signal","issued_at":"2026-10-05T12:30:00.967Z","prev":"43302bec834c14ef034c9d318bfb5481bd2f7c0516c19b6c96760117afb13999","body":{"issued_at":"2026-10-05T12:30:00.967Z","kind":"signal","nonce":"701645e0d788bc9cf0e5bec6340d460d","payload":{"entry":{"type":"market"},"expires_at":"2026-10-06T00:30:00.967Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"86139.3","targets":["85869.7","85667.5"]},"prev":"43302bec834c14ef034c9d318bfb5481bd2f7c0516c19b6c96760117afb13999","provider":"demo-macd-momentum","seq":50,"v":1},"signer":null,"sig":null,"batch":{"root":"de5b46d3e4851c683c07e7c77f21d54061b349c4f5fcd464cf2bf281522876ad","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-05T12:30:57.390Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":970019},"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"]}