{"format":"receipts-proof/1","hash":"0f4b8e0129dc3890a81204667f7b511485498bdcda289dfc6bb07d5bfbae7cdf","provider":"demo-macd-momentum","seq":42,"kind":"signal","issued_at":"2026-10-03T09:30:24.299Z","prev":"5538aaf9b5713d4fa042e720ca1a072bc156e6d8c2af2c5fb0324f087a3fec95","body":{"issued_at":"2026-10-03T09:30:24.299Z","kind":"signal","nonce":"e7c6a3d4e398554f4ce4e5c758c07b30","payload":{"entry":{"type":"market"},"expires_at":"2026-10-03T21:30:24.299Z","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":"84590.2","targets":["84516.4","84461"]},"prev":"5538aaf9b5713d4fa042e720ca1a072bc156e6d8c2af2c5fb0324f087a3fec95","provider":"demo-macd-momentum","seq":42,"v":1},"signer":null,"sig":null,"batch":{"root":"0f4b8e0129dc3890a81204667f7b511485498bdcda289dfc6bb07d5bfbae7cdf","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-03T09:31:24.298Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":969709},"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"]}