Введите адрес — увидите, как менялся его остаток RNBW по суткам с первого дня токена. Ряд собран из всех переводов в сети Base: баланс есть сумма пришедшего минус сумма ушедшего, и ничего больше для этого не нужно.
Быстро:
Индекс хранит суточные приращения по каждому адресу, а баланс на любой день — их нарастающая сумма. Так вся история в 1,2 млн переводов сжимается до пяти мегабайт, разложенных на 256 кусков по первым двум знакам адреса: браузер скачивает ровно один кусок примерно на 19 КБ, а не всю ленту на 167 МБ.
Перед публикацией индекс сверяется с цепочкой: остаток двенадцати крупнейших адресов, посчитанный по приращениям, должен совпасть с ответом balanceOf у контракта. Не совпал — индекс не перезаписывается. Эта проверка уже окупилась: перевод, где отправитель и получатель — один и тот же адрес, баланс не меняет, и первая версия расчёта, применявшая только одну сторону, разошлась на казначействе на 2,5 млн RNBW.
Только RNBW и только сеть Base. Адреса, никогда не державшие токен, в индексе отсутствуют — это не ошибка, а отсутствие истории. Даты и сутки — UTC. Адреса, получившие и отдавшие токен в одни и те же сутки, в индексе отсутствуют: на суточной границе их остаток всегда был нулевым. Таких около половины — это раздача, разошедшаяся в день получения.
Индекс: /api/balhist/. Источник — лента переводов токена с блока его развёртывания.