From 3bf5a721b96d43c2e01c419b93b2102c2ac69362 Mon Sep 17 00:00:00 2001 From: Satoshi Qazi Muhammed Date: Thu, 15 Oct 2026 09:56:36 +0400 Subject: [PATCH] Run the noter for Zagros next to the mainnet one Zagros citizens have no trust until a noter reports their stake, so every Zagros governance track stalls without one. Until now the Zagros noter ran by hand from a workstation and stopped whenever that machine slept. The same image runs as noter-zagros, against the Zagros endpoints, with its own key and heartbeat. The bot reads its key from /run/secrets/noter_mnemonic, so the Zagros secret is mounted under that name and the bot needs no change. The secret file must exist on the host before this deploys: compose refuses to bring up the stack with a missing secret file. --- docker-compose.prod.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index bdf7e92..4de66e9 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -174,6 +174,32 @@ services: # The first scan has to walk every tracked account before it can report. start_period: 10m + # The same bot for Zagros, the testnet that rehearses mainnet: its citizens have no + # trust until a noter reports their stake, so without this every Zagros governance + # track stalls. Same image, its own key, its own heartbeat. The bot reads its key + # from /run/secrets/noter_mnemonic, so the Zagros secret is mounted under that name. + noter-bot-zagros: + container_name: noter-zagros + build: + context: ./noter + dockerfile: Dockerfile + restart: unless-stopped + secrets: + - source: noter_zagros_mnemonic + target: noter_mnemonic + environment: + TZ: UTC + RELAY_RPC: wss://zagros-rpc.pezkuwichain.io + ASSET_HUB_RPC: wss://zagros-asset-hub-rpc.pezkuwichain.io + PEOPLE_RPC: wss://zagros-people-rpc.pezkuwichain.io + SCAN_INTERVAL_MS: "300000" + healthcheck: + test: ["CMD", "node", "-e", "const fs=require('fs');const i=parseInt(process.env.SCAN_INTERVAL_MS||'300000',10);let t=0;try{t=Number(fs.readFileSync(process.env.HEARTBEAT_FILE||'/tmp/noter-heartbeat','utf8'))}catch{};process.exit(Number.isFinite(t)&&Date.now()-t