{"format":"receipts-proof/1","hash":"f99ab535cb035ec8854d890ac2a8109944ff5b55096a5a626ed04897836a435f","provider":"demo-macd-momentum","seq":54,"kind":"signal","issued_at":"2026-10-06T22:23:13.146Z","prev":"ead6558455f3f8bbd5fc0b36366b832d7196047786c42ee4c698ca4f449e4097","body":{"issued_at":"2026-10-06T22:23:13.146Z","kind":"signal","nonce":"7337c8af316b119fbc360342429f4f16","payload":{"entry":{"type":"market"},"expires_at":"2026-10-07T10:23:13.146Z","market":{"kind":"perp","symbol":"ETHUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"short","stop":"2698.81","targets":["2693.37","2689.29"]},"prev":"ead6558455f3f8bbd5fc0b36366b832d7196047786c42ee4c698ca4f449e4097","provider":"demo-macd-momentum","seq":54,"v":1},"signer":null,"sig":null,"batch":{"root":"f99ab535cb035ec8854d890ac2a8109944ff5b55096a5a626ed04897836a435f","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-06T22:41:04.814Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":970247},"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"]}