Как получить весь набор валидаторов 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