{"id":13562313,"url":"https://github.com/QuokkaStake/tmtop","last_synced_at":"2025-04-03T18:33:19.781Z","repository":{"id":204745032,"uuid":"710885427","full_name":"QuokkaStake/tmtop","owner":"QuokkaStake","description":"A top-like chain consensus and chain info visualizer for all Tendermint chains.","archived":false,"fork":false,"pushed_at":"2025-01-14T21:37:17.000Z","size":608,"stargazers_count":63,"open_issues_count":2,"forks_count":35,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-14T22:35:00.734Z","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/QuokkaStake.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-27T16:40:03.000Z","updated_at":"2025-01-14T21:36:27.000Z","dependencies_parsed_at":"2024-01-07T02:11:28.571Z","dependency_job_id":"b6c5db4d-3cb6-414e-9af1-30cfa59de2f4","html_url":"https://github.com/QuokkaStake/tmtop","commit_stats":null,"previous_names":["quokkastake/tmtop"],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuokkaStake%2Ftmtop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuokkaStake%2Ftmtop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuokkaStake%2Ftmtop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuokkaStake%2Ftmtop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QuokkaStake","download_url":"https://codeload.github.com/QuokkaStake/tmtop/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247057008,"owners_count":20876495,"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:07.078Z","updated_at":"2025-04-03T18:33:14.756Z","avatar_url":"https://github.com/QuokkaStake.png","language":"Go","funding_links":[],"categories":["Monitoring","Go"],"sub_categories":[],"readme":"# tmtop\n\n![Latest release](https://img.shields.io/github/v/release/QuokkaStake/tmtop)\n[![Actions Status](https://github.com/QuokkaStake/tmtop/workflows/test/badge.svg)](https://github.com/QuokkaStake/tmtop/actions)\n\ntmtop is a tool that can visualize the consensus on any Tendermint-based chain in a top-like way.\nIt is heavily inspired by [pvtop](https://github.com/blockpane/pvtop) and is in fact a from-scratch rewrite of it.\n\nIt can do the following:\n- display the consensus state of the current block (the percentage, who prevoted/precommitted and who didn't etc.)\n- display chain info (chain-id, block time, Tendermint version etc.)\n- display chain upgrade info and estimated time\n- work with non cosmos-sdk chains (for instance, Nomic; it won't be able to display the validators' monikers then)\n- work with ICS (fetching the validators list from the provider chain while taking the consensus from the consumer chain)\n- display both the consensus state for the last round (same way as pvtop, for example)\nor for all rounds (this is useful to see which rounds your validator has prevoted/precommitted on)\n- display the consensus state for a chain that didn't produce a single block (useful for genesis launch)\n\nSee how it looks like (on Sentinel chain, which is cosmos-sdk based chain, and Nomic, which uses Tendermint\nbut not cosmos-sdk):\n[![asciicast](https://asciinema.org/a/pnmH6j1MHGNdUY8y4eF2Ut21M.svg)](https://asciinema.org/a/pnmH6j1MHGNdUY8y4eF2Ut21M)\n\n## How can I set it up?\n\nDownload the latest release from [the releases page](https://github.com/QuokkaStake/tmtop/releases/). After that, you should unzip it, and you are ready to go:\n\n```sh\n# auto\nwget $(curl -s https://api.github.com/repos/QuokkaStake/tmtop/releases/latest | grep \"browser_download_url.*linux_amd64.tar.gz\" | cut -d '\"' -f 4) -O tmtop_linux_amd64_latest_release.tar.gz \u0026\u0026 tar zxvf tmtop_linux_amd64_latest_release.tar.gz \u0026\u0026 cp tmtop /usr/local/bin/ \u0026\u0026 tmtop\n\n# manual\nwget \u003cthe link from the releases page\u003e\ntar \u003cdownloaded file\u003e\n./tmtop --config \u003cpath to config\u003e\n```\n\nAlternatively, install `golang` (\u003e=1.21), clone the repo and build it:\n```\ngit clone https://github.com/QuokkaStake/tmtop\ncd tmtop\n# This will generate a `tmtop` binary file in the repository folder\nmake build\n# This will generate a `tmtop` binary file in $GOPATH/bin\n```\n\nThen just run it:\n\n```\n./tmtop [args]\n```\n\nTo run it for a sovereign Cosmos-based chain, something like this should be enough:\n```\n./tmtop \u003cRPC host address\u003e\n```\n\nTo run it for a sovereign chain that is not Cosmos-based (for example, Nomic), something like this should be enough\n(this will limit the app possibilities, as in, it won't display validators monikers,\nupgrades status etc.):\n```\n./tmtop \u003cRPC host address\u003e --chain-type tendermint\n```\n\nIf a chain is not Cosmos-based, but exposes a webserver that is compatible with LCD REST API of cosmos-sdk,\nyou can try running it this way to fetch data from LCD (the `--lcd-host` parameter is not used in other cases):\n```\n./tmtop \u003cRPC host address\u003e --chain-type cosmos-lcd --lcd-host \u003cLCD host address\u003e\n```\n\nTo run it for a Cosmos-based consumer chains (like Stride or Neutron),\nsomething like this should be enough:\n```\n./tmtop \u003cRPC host address\u003e --provider-rpc-host \u003cprovider RPC host\u003e --consumer-id \u003cconsumer ID\u003e\n```\n\n(Keep in mind that consumer-id is not the same as consumer chain-id, you can get one\nfrom the output of `\u003cappd\u003e query provider list-consumer-chains` under the `consumer_id` field.)\n\nThere are more parameters to tweak, for all the possible arguments, see `./tmtop --help`.\n\n\n## How does it work?\n\nIt queries Tendermint's RPC node to get the following data:\n- consensus state\n- validators list and their voting power\n- blocks and their time difference\nand uses this data to build a consensus state to visualise.\n\nIf it fails to scrape the validators list, it falls back to use genesis for both Cosmos validators list\nand Tendermint validators list, either taking them from genesis' staking module state (if the genesis is done\nby exporting the previous state), or from gentxs (if it's the launch of a branch new chain).\n\n(Note: fetching the genesis data from LCD is not supported, as apparently LCD does not provide the endpoint\nto fetch genesis.)\n\nAdditionally, if it's a cosmos-sdk chain, it can also fetch the following data via the abci_query query:\n- chain upgrade info\n- validators list (to show validators' monikers instead of addresses)\n\n## How can I configure it?\n\nAll configuration is done via flags, see `./tmtop --help` for the list of flags.\nAdditionally, the app itself has a few shortcuts allowing you to control it.\nYou can press the [h] button to display the help message, which will show you the shortcuts and when/how to use them.\n\nThis app has 2 modes, use [Tab] button to switch between them:\n- display prevotes/precommits for the last height/round\n- display prevotes/precommits for all rounds for current height\n\n## Troubleshooting\n\nIf you have issues with the app, try pressing the D button to open the debug panel.\nMost likely, the app cannot connect to one of the hosts it needs to connect.\nIf there's something unusual, feel free to report a bug on this repository.\nYou can also enable debug logging and write them to file in addition to the debug panel\nby running tmtop with `--verbose --debug-file \u003cpath-to-file\u003e`.\n\nSome common errors:\n\nQ: The app displays nothing and is stuck.\n\n![Telegram](https://raw.githubusercontent.com/QuokkaStake/tmtop/main/images/rpc-host-issues.jpg)\n\nA: It's likely the app cannot connect to the RPC host to get data from.\n\nQ: The app displays hashes instead of validators' monikers.\n\n![Telegram](https://raw.githubusercontent.com/QuokkaStake/tmtop/main/images/provider-host-issues.jpg)\n\nA: For consumer chains, it's likely that the app cannot connect to the provider host,\nor it's not specified (so the app thinks it's a sovereign chain and tries to get validators\nout of the consumer chain). Additionally, this won't work with non-cosmos-sdk chains, like Nomic, if the chain's\nTendermint /abci_query endpoint doesn't return validators when querying for them.\n\nQ: The app displays some monikers as hashes on a consumer chain.\n\n![Telegram](https://raw.githubusercontent.com/QuokkaStake/tmtop/main/images/wrong-chain-id.jpg)\n\nA: Verify you have a correct `--consumer-id` specified.\n\n## Which networks this is guaranteed to work?\n\nIn theory, it should work on any Tendermint-based network with any node that has its RPC accessible.\n\nFor cosmos-sdk chains, it should also allow displaying the upgrade info and the validators list.\n\nFor non cosmos-sdk chains, it can also display this data given the chain implements the wrapper\nthat returns the data in cosmos-sdk LCD compatible format (namely, validators list endpoint and upgrade plan one),\n`--chain-type cosmos-lcd` is used and the correct LCD path is provided.\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%2FQuokkaStake%2Ftmtop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FQuokkaStake%2Ftmtop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQuokkaStake%2Ftmtop/lists"}