{"id":13564705,"url":"https://github.com/solarlabsteam/missed-blocks-checker","last_synced_at":"2025-12-27T05:38:18.661Z","repository":{"id":38331314,"uuid":"363089689","full_name":"solarlabsteam/missed-blocks-checker","owner":"solarlabsteam","description":"Tool to monitor missed blocks for Cosmos-chain validators","archived":false,"fork":false,"pushed_at":"2022-09-07T07:49:56.000Z","size":168,"stargazers_count":16,"open_issues_count":0,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-01-24T04:15:10.303Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solarlabsteam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-30T09:21:32.000Z","updated_at":"2024-01-24T04:15:10.304Z","dependencies_parsed_at":"2022-08-24T05:10:12.648Z","dependency_job_id":null,"html_url":"https://github.com/solarlabsteam/missed-blocks-checker","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solarlabsteam%2Fmissed-blocks-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solarlabsteam%2Fmissed-blocks-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solarlabsteam%2Fmissed-blocks-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solarlabsteam%2Fmissed-blocks-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solarlabsteam","download_url":"https://codeload.github.com/solarlabsteam/missed-blocks-checker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247083314,"owners_count":20880808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:01:34.698Z","updated_at":"2025-12-27T05:38:18.596Z","avatar_url":"https://github.com/solarlabsteam.png","language":"Go","funding_links":[],"categories":["Monitoring","Go"],"sub_categories":["External Modules","Terminal Block Explorers"],"readme":"# missed-blocks-checker\n\n![Latest release](https://img.shields.io/github/v/release/solarlabsteam/missed-blocks-checker)\n[![Actions Status](https://github.com/solarlabsteam/missed-blocks-checker/workflows/test/badge.svg)](https://github.com/solarlabsteam/missed-blocks-checker/actions)\n\nmissed-blocks-checker is a tool that sends a message to configured channels if any of the Cosmos validators starts or stops missing blocks. It queries the data from the gRPC endpoint.\n\n## How can I set it up?\n\nDownload the latest release from [the releases page](https://github.com/solarlabsteam/missed-blocks-checker/releases/). After that, you should unzip it and you are ready to go:\n\n```sh\nwget \u003cthe link from the releases page\u003e\ntar \u003cdownloaded file\u003e\n./missed-blocks-checker --telegram-token \u003cbot token\u003e --telegram-chat \u003cuser or chat ID from the previous step\u003e\n```\n\nAlternatively, install `golang` (\u003e1.18), clone the repo and build it. This will generate a `./main` binary file in the repository folder:\n```\ngit clone https://github.com/solarlabsteam/missed-blocks-checker\ncd missed-blocks-checker\ngo build\n```\n\nWhat you probably want to do is to have it running in the background. For that, first of all, we have to copy the file to the system apps folder:\n\n```sh\nsudo cp ./missed-blocks-checker /usr/bin\n```\n\nThen we need to create a systemd service for our app:\n\n```sh\nsudo nano /etc/systemd/system/missed-blocks-checker.service\n```\n\nYou can use this template (change the user to whatever user you want this to be executed from. It's advised to create a separate user for that instead of running it from root):\n\n```\n[Unit]\nDescription=Missed Blocks Checker\nAfter=network-online.target\n\n[Service]\nUser=\u003cusername\u003e\nTimeoutStartSec=0\nCPUWeight=95\nIOWeight=95\nExecStart=missed-blocks-checker --config \u003cconfig path\u003e\nRestart=always\nRestartSec=2\nLimitNOFILE=800000\nKillSignal=SIGTERM\n\n[Install]\nWantedBy=multi-user.target\n```\n\nThen we'll add this service to the autostart and run it:\n\n```sh\nsudo systemctl daemon-reload # reload config to reflect changed\nsudo systemctl enable missed-blocks-checker # put service to autostart\nsudo systemctl start missed-blocks-checker # start the service\nsudo systemctl status missed-blocks-checker # validate it's running\n```\n\nIf you need to, you can also see the logs of the process:\n\n```sh\nsudo journalctl -u missed-blocks-checker -f --output cat\n```\n\n## How does it work?\n\nIt periodically queries the full node via gRPC for all validators and their missed blocks, then checks the difference with the missed blocks before and now. If the validator is faulty, it writes a Telegram message to a specified chat.\n\n## How can I configure it?\n\nAll configuration is done via `.toml` config file, which is mandatory. Run the app with `--config \u003cpath/to/config.toml\u003e` to specify config. Check out `config.example.toml` to see the params that can be set.\n\n## Notifications channels\n\nCurrently this program supports the following notifications channels:\n1) Telegram\n\nGo to @BotFather in Telegram and create a bot. After that, there are two options:\n- you want to send messages to a user. This user should write a message to @getmyid_bot, then copy the `Your user ID` number. Also keep in mind that the bot won't be able to send messages unless you contact it first, so write a message to a bot before proceeding.\n- you want to send messages to a channel. Write something to a channel, then forward it to @getmyid_bot and copy the `Forwarded from chat` number. Then add the bot as an admin.\n\nTo have fancy commands auto-suggestion, go to @BotFather again, select your bot -\u003e Edit bot -\u003e Edit description and paste the following:\n```\nsubscribe - Subscribe to validator's updates\nunsubscribe - Unsubscribe from validator's updates\nstatus - Get missed blocks info from validators you are subscribed to\nconfig - Display bot config\nparams - Display chain slashing params\nvalidators - Get the list of all active validators and their missed blocks\nmissing - Get the list of validators who have missed blocks counter above threshold and their missed blocks\n```\n\n\nThen add a Telegram config to your config file (see `config.example.toml` for reference).\n\n2) Slack\n\nGo to the Slack web interface -\u003e Manage apps and create a new app.\nGive the app the `chat:write` scope and add the integration to a channel by typing `/invite \u003cbot username\u003e` there.\nAfter that add a Slack config to your config file (see `config.example.toml` for reference).\n\n\n## Which networks this is guaranteed to work?\n\nIn theory, it should work on a Cosmos-based blockchains that expose a gRPC endpoint.\n\n## How can I contribute?\n\nBug reports and feature requests are always welcome! If you want to contribute, feel free to open issues or PRs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolarlabsteam%2Fmissed-blocks-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolarlabsteam%2Fmissed-blocks-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolarlabsteam%2Fmissed-blocks-checker/lists"}