{"format":"receipts-proof/1","hash":"544f2a8321f745616136d5966f03e1b331413cfe29d89072af189ed0dd598d7c","provider":"demo-macd-momentum","seq":90,"kind":"signal","issued_at":"2026-10-14T12:35:36.698Z","prev":"d5c6c2a2a22e808bb47e998b2eeec5abe51627d0b23a3b51fbcb3110ab4ddf35","body":{"issued_at":"2026-10-14T12:35:36.698Z","kind":"signal","nonce":"202238ff5b022963b3d94399af516fa7","payload":{"entry":{"type":"market"},"expires_at":"2026-10-15T00:35:36.698Z","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":"2494.45","targets":["2472.67","2456.33"]},"prev":"d5c6c2a2a22e808bb47e998b2eeec5abe51627d0b23a3b51fbcb3110ab4ddf35","provider":"demo-macd-momentum","seq":90,"v":1},"signer":null,"sig":null,"batch":{"root":"da256554cfb75116a5f97252a4f7bed2bcadfcc6666f747d4458d74327d6af46","index":1,"leaf_count":2,"proof":[{"side":"L","hash":"d5c6c2a2a22e808bb47e998b2eeec5abe51627d0b23a3b51fbcb3110ab4ddf35"}],"sealed_at":"2026-10-14T12:35:38.632Z","opentimestamps":"AE9wZW5UaW1lc3RhbXBzAABQcm9vZgC/ieLohOiSlAEI2iVlVM+3URal+XJSpPe+0ryt/MZmb3R9RFjXQyfWr0b/8AhG6hiRWwkmsQjxIMVsljW0txojjKQYRVBUH7uchzwBTAWV3o8OyqPLfsbHCPAQROdqrWTPSsKKtrcH/BHPhwjxIB9WPErGwBB+Jlx/mEqgxVCZ9/TTieIonoh2+UwTXgvgCPEEas93G/AIEe+UFhh4exUI8SBlt7jLs/EU61YAF8H+q7C40VOx26tU22BnRbyJ2b1msgjwIEL4QAq6TkP0yN1oIQjMQro/CzPwwo5weXfYvOADZPWhCPAg9sKr7dvqeUTrw0CSSXYSxouSJuHtzWTjCHcYJwrjn+EI8CDMJUdJRhdp8Z8ntWd5cSM9h8dEL6mKcT7zEYnEZm0DrgjxIOI+aJUoPDNFymO4XyiXwGd988h9lHeHRzIGEMe0qFslCPEgouSm2lM2eG9v9nA2yocwjxVETtsF6Dxm3b+oc7QASZoI8SBG9HnWsYXCkMUPf0e9Wr4siGImFdlGp3X9P1tHSNgCKwjwILDSVurzQFIiBzG5E+5q9ZkVOzhxJYNAL51Rj5rp9z0tCPEglOMi2iEJjH0j5e9fmqWG+0oB4O7+cd/WWVkoY0YA7wwI8SCjixX7zJbRq4U30jcuS2LHtlEXW3BTgaFzsILLxx2FigjwIHhVZhgjgwZ4dfcpAxibsV7V4KZW+VmK7DJnKPDOc/b6CPFZAQAAAAE/z6PKKh3llMpaGn8mcyFupeomkjF1XJ3p6ZuE9hAAhwAAAAAA/v///wIXBgAAAAAAABYAFH3zJyrUDMQBmEg2q10GO21bN1UJAAAAAAAAAAAiaiDwBI3SDgAICPEg1N9XxR5O+uaXiNwCvZLslvNicKiWg2BcCL2oWHT4rxEICPAgfxxfXvpzptjNLTc4G/ZervLEbEsr4VEoclLDvsMINv0ICPAgcMq+LkItGFUyco3wxcj/CI5j/g6EI9i2JU65HKCtYqUICPEgo2VP4ipAT/EbfsV6+C4Mw14QanhdN/t+RiSB7mFjEfIICPEgnooEl6SEtVh0ClVOhlSTTQzGzR/908hox2Q74yrN0xsICPAgxpXryq2hcBb/Wp0Px3AMIzwAoi3YN8kE3plRBQq+H5oICPAgA9OImmBB/EP/CPwqlYmwa5kmhkl0zTX+5ol1DlKBJ1wICPEgtRjlo23UZeNbcIx0i0ivvpPSQLmVVccCux39G41Xq/QICPEgeeURnFhYJ5NPlxKCVCk3+IAs2h4Tq+hKwuleHY+zAisICPEgeHCAbp6MZu2dP/lOSgBJEXnryfsxOXeOu+t0HJZC6noICPEgq6N/YjfILuO2SCC3HnT+pMBP7li+huzjclZMMV1M0c0ICPAgd2b1ecWxTFSLhFA3pk0ppGzu41nFWFB3EkpGehwfBmUICAAFiJYNc9cZAQOOpTv/8AitcMBDvJdVbgjwEPxO8FPyf/dYOwyNYOPa4fcI8CAPcXMt+yyz+sVv1oVsYI8ovYdGcqP0XgOVc8Nh/HUNmwjxIMRFpWyfUZp0fWWqaecsbIUAz3RkaAOL5p0DxvP7UkQKCPEEas93G/AIX+d7v37QeYsI8CBvfvQ7mgsQaW6/GQ9mVKi3SKrZXlUfsyV2+Y79M6gHugjwIHwmHzz+7EMe8ZvrnzSiJUa5qThINGoaKwXoMqhQKBlGCPAgYCmbUGfWL8DAuegA1KfYfNEkDFG35nFLkbt7TzpxFXoI8SBWlyJ1LdKqybGEu5H8u9S0gwzU53uBqLp93Oyflxqd5wjxIES9oJmEIudJYdSUW38LgBdiBbtumQ22j95GLOWqyvjqCPAgJcElceSWBL6NmMg8Hh3XnQhFxMZMahQjWM6pPaeNaOUI8CBf+UkpQvGkMmtFDnw3+ItJ7GMdtG97qsOvyomErfC1AQjxIMcI1LEcSyaeKHDPy+wjfFd5cvMQMDPUGmo2JUHoofdrCPEgFkCQElwRv4VLh8MHy41/lfZo9arqi11280AT1skB8j4I8SAvKQ2uzwmvmU4EMs6XLBTccfdUk3ght1CJ5Cl2/4UIuQjxIHJ0rzop0J/BHIINKW2D9BdaZhLR1usbvKxwInSRbbEaCPAgfkgDiIleZTyVRqUndCjyisCz6l/GOxJRWAklYjFb6X4I8VkBAAAAAf4fsCLypqqMPc8uQMJDU9AMg9xbmuLxgn9NbmFpVwC1AAAAAAD+////ArmHAAAAAAAAFgAUnfujNXS0oOyhOtO9W7b2vajYzFEAAAAAAAAAACJqIPAEjdIOAAgI8SAwstBZU8NqSb2vtzuUWoOGdjm3U6LNWr5PiBTcBWCs5wgI8SB4iPg91EGCaFXhcxvgI39YWX/LJnDOQXPU1GKPLUnGFQgI8SCZ3L4JaQTUoJALq+E40UMXPOBqnlyvXyl+zFiSO/O2eAgI8CBg4SzyytSGzcm4QIyqtPGgSU+I75ZXBPMGoBwuoWl0pAgI8CB+4jorPJaKvejxsGi6kZn72BEyVJOfywtydh647HeKOQgI8CA76sHgYKrnmGqy/7B/96kyUSS5E7nqULbqwAgwy6+TtQgI8CBHAia+PiQllRqPhVZOzdfBaQ/OK2nCazC8HysuS44DiQgI8CBL3IOggi3+IZHkQMiW5ctTXQFpNyg1zGua4v+0hD0JmAgI8SA7vR1BXKOqCzzaMwCcEF4C1detQ2wkuQ7NmtxwchdPvQgI8CCgfuXESAYnbxRkVRlICfGLWaF0nI5BRzeWMMuzWwjNQwgI8SCQGTcgZzVxJk4HRyEe7XtUwexvCCfgR+RPWenxE0dOnAgI8SDErI1O0y0J8PPP8aW9oteLR/amWWbPmc2jKhHXIrfcaAgIAAWIlg1z1xkBA46lO/AQMnHsOHT+5acl1RzMdP0l6QjwIMlmeS2dwz9uspEmmUetjvEHxOIhAp83JR6LICZdbwIkCPEgWt8Q4foxKxAj4XaRJT8USe4M18UwFpsudn3MI63YTCwI8CAx9lEGSWP4unM+3QlN8aan6wgeOxafMy0H+MJAs/KL8QjxBGrPdxvwCL0Rma9c23UZAIPf4w0u+QyOKShodHRwczovL2Zpbm5leS5jYWxlbmRhci5ldGVybml0eXdhbGwuY29t","chain_anchor":null,"bitcoin_block":971406},"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"]}