Как получить весь набор валидаторов CometBFT на одной высоте

Расчёт концентрации голосов требует полного активного набора. Стандартная страница RPC может скрыть валидаторов с меньшим весом и завысить доли остальных.

Зафиксируйте высоту до обхода страниц

В RPC укажите HTTP-адрес CometBFT и замените 12000 доступной высотой. Используйте одну высоту на всех страницах и продолжайте, пока не получите total записей.

curl -fsS "$RPC/validators?height=12000&page=1&per_page=50"
curl -fsS "$RPC/validators?height=12000&page=2&per_page=50"

Если первая страница сообщает count 50 и total 82, загрузите оставшиеся 32 и только затем суммируйте voting_power. Преобразуйте десятичные строки в целые числа и различайте валидаторов по консенсусным адресам.

Выберите правильный знаменатель

Ответ отражает вес консенсусного набора на запрошенной высоте. Балансы стейкинга, число делегаторов и набор следующего блока могут отличаться. Сохраняйте block_height вместе с расчётом долей. github.com CometBFT RPC