{"format":"receipts-proof/1","hash":"12a50e630bf00f86ac80ecb3788013c57447dfad222c5c0fd29cff0819d65ff3","provider":"demo-macd-momentum","seq":113,"kind":"signal","issued_at":"2026-11-08T19:20:01.502Z","prev":"ddbdc4438ba755a33dc89304e83f4e5b0c4fcf99e2c9cdb00b15c269124ba7a0","body":{"issued_at":"2026-11-08T19:20:01.502Z","kind":"signal","nonce":"65ad0490e29f3fdeebdc8b12a1639175","payload":{"entry":{"type":"market"},"expires_at":"2026-11-09T07:20:01.502Z","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":"75903.2","targets":["75769","75668.4"]},"prev":"ddbdc4438ba755a33dc89304e83f4e5b0c4fcf99e2c9cdb00b15c269124ba7a0","provider":"demo-macd-momentum","seq":113,"v":1},"signer":null,"sig":null,"batch":{"root":"241b4b7fa46fa90bef53b286b69a2893050293230441f6140eb0bafb8f376b0a","index":0,"leaf_count":2,"proof":[{"side":"R","hash":"1fd19ad8bca00ddd50793b19e15429d91fb1ebdb2ffc68088f23b6c9780c81b9"}],"sealed_at":"2026-11-08T19:21:01.485Z","opentimestamps":"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","chain_anchor":null,"bitcoin_block":975093},"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"]}