{"format":"receipts-proof/1","hash":"2ca83a927cea4db67a6fda5bc9e070519fee37123dd602a5dd7e5565d049da1f","provider":"demo-macd-momentum","seq":67,"kind":"signal","issued_at":"2026-10-11T10:14:22.239Z","prev":"4e4eba8ea6097586ebb0a2dfc79b35738c3199e4bf6fde918c807c5130111c86","body":{"issued_at":"2026-10-11T10:14:22.239Z","kind":"signal","nonce":"dc02b72a87e547345ef655d2536f2d40","payload":{"entry":{"type":"market"},"expires_at":"2026-10-11T22:14:22.239Z","market":{"kind":"perp","symbol":"BTCUSDT","venue":"binance-usdm"},"note":"Demo bot: MACD cross with EMA(100) trend filter, 5m. Mechanical rule, not advice.","side":"long","stop":"82969.7","targets":["83056.7","83122"]},"prev":"4e4eba8ea6097586ebb0a2dfc79b35738c3199e4bf6fde918c807c5130111c86","provider":"demo-macd-momentum","seq":67,"v":1},"signer":null,"sig":null,"batch":{"root":"2ca83a927cea4db67a6fda5bc9e070519fee37123dd602a5dd7e5565d049da1f","index":0,"leaf_count":1,"proof":[],"sealed_at":"2026-10-11T10:19:56.456Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEILKg6knzqTbZ6b9pbyeBwUZ/uNxI91gKl3X5VZdBJ2h//8AhxJWW4RTr5ogjwED6UT9CYX6JpE2vsQ8BJ1KwI8SAKvNM6X/AHGHi11nfX0jcyOo6V82QDlx694gDP+xiJbQjwIF+gVG5jHJHDcw5aRdv6SNcHih80Vw6G68ozpKUAQR+NCPEEastizfAIj97/39/WzNwAg9/jDS75DI4uLWh0dHBzOi8vYWxpY2UuYnRjLmNhbGVuZGFyLm9wZW50aW1lc3RhbXBzLm9yZ//wCBnY5iajeouVCPAQySRD2Ym8YfUPcA/uUdu2NQjxIA9Kfej4T6W1yov58RswlwjbPCB8eRpyYXs/RxETcZhsCPAgL816R5l54r7wSYSA3odpZn88AO8mJFEG8Vpf1gKm8kUI8QRqy2LN8AgCpfQtkLCisAjxIC49QSQzygCni+T1AmKJStDRJUXoQVb8gPBI93RIuonlCPEgR0+zSRym4YxpKc5Jr+Z4zjEx0YowPCconXGagizgwAMI8CBn1FKN5r7K6d8Qssz6mCD98BifA5mi3It5CYTzCQZ4fwjwIH2zb4Ak4yA1Tt83VI6uTUUx4ZI0luoWrvQ2R26ASOv0CPAgjdLogClRFLuqtlH+C1tkIHhdN3Pwz19PNyBvNDE7+xYI8SA8qjYlBc/A+b/Rd4qABfFV1Z5miJgRdiixz8Gd1VmnBgjxII2ej7bnxDzhNhrF7F+HPNSELvnTHpihbD0Su0ImLQF2CPEg0XauYOm3OqGwS4L0OFzAtIje3RjqsqvF4kkYdkSXt74I8CBgybT6yW6Auo0QcD3BnzQa+CCEGC2njuQzSc64gr2fNAjxINdqgp5sUKLWX0ixtEZLcY7xZ4Byz3EX4l3nytXBIPmrCPEgaiLWVtIo2LReal4KVfyPHxpEPPFnN0tVwuMxj3y9+csI8CD8xAL+GvqoXy7wRG12aoqiEPLaH3vgK9uFlepLo2ISfwjxWQEAAAABlu6H6kIHhKXQeX+EYuJNjmb5C4M3gY+xYvdM++hcixQAAAAAAP7///8CwaoAAAAAAAAWABT71JnWhZwiDoj/v0HCYUFVwIdQWgAAAAAAAAAAImog8ASf0A4ACAjxIPY5zDaCfbjSdDfJdwxsiwfVTupUCVxyl5E0GeULHHKICAjwIGNTYn7cMFfZ+h9nDLv9iGOKRPngHa0CYgwQmUdW2IUBCAjwIPlue66YWk+1cyABKUlMzd9DSxVsjKWEWJ1Y8rRVBUrFCAjxIBEfWbmFwG/UxWtlTtFjE/CLaFG1eIPsbJy0f+DVidUuCAjwIP0SHBkid2kRmMGVloPFDoP2dGc1sFLiJ10glL+xDENGCAjwIBzr/+4Hh7wlqqedvu8NjIWyLEQmzAytFt6NsHX8kdhlCAjwILaVGRX1+hiCEHsRj3mPbzfUyIdRfWPlCSHBra35VQ7ACAjxICKYb1013k6emYq1orF7t/pDHn4VJBPP1x8+RS9DjhZKCAjwINBtitZELz4KQ5o9M59LMMwRoT6BHhsdHId4SJKAEL+OCAjwIETCuNZxgqDXiP2XeW5dMwxQt9VCjdwQoNLiNkaEEhInCAjwIHa7k0JvSVLgGBGbPNCxVKPvyr39W0NLefXpWyf4DhE6CAjwIDIks0MCnwYsHBW1QSvXIk5z4rUt8ST5zIigd9zEXc4YCAjwIFk9RP6NSM+ThWcnZVxtUPm3JO4Y0EOYD34ZG0Ewq8wsCAgABYiWDXPXGQEDoKE78BABYhaWmE2FEhJy4VxyNTlLCPEgvP7mjBvVpn9JhATK98YwlTlBAsfVGbb8A0ydqAvUmKsI8QRqy2LN8AjdRWmntKATAgCD3+MNLvkMjikoaHR0cHM6Ly9maW5uZXkuY2FsZW5kYXIuZXRlcm5pdHl3YWxsLmNvbQ==","chain_anchor":null,"bitcoin_block":970912},"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"]}