{"format":"receipts-proof/1","hash":"1b502a3f3ead3151a225b655a89596e02b170bea357d4acb4f322da5e6e81cb4","provider":"demo-macd-momentum","seq":94,"kind":"signal","issued_at":"2026-10-20T11:30:54.977Z","prev":"7cf1470be743c96cf6e4e00e7c1b9fcdeaddb90438fa7c789364c1fa5568acfd","body":{"issued_at":"2026-10-20T11:30:54.977Z","kind":"signal","nonce":"9efa07eed2cfcc98ecde60f4ee441cbf","payload":{"entry":{"type":"market"},"expires_at":"2026-10-20T23:30:54.977Z","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":"81569.6","targets":["81310.4","81116.1"]},"prev":"7cf1470be743c96cf6e4e00e7c1b9fcdeaddb90438fa7c789364c1fa5568acfd","provider":"demo-macd-momentum","seq":94,"v":1},"signer":null,"sig":null,"batch":{"root":"1b502a3f3ead3151a225b655a89596e02b170bea357d4acb4f322da5e6e81cb4","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-20T11:31:49.274Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":972314},"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"]}