TPS Solana снизился после Alpenglow: голоса валидаторов больше не попадают в счётчик транзакций
Ключевые выводы
- •Solana активировала обновление Alpenglow 21 октября, заменив TowerBFT протоколом Votor, при котором голоса валидаторов объединяются в сертификаты в футерах блоков, а не записываются как транзакции.
- •Примерно три из пяти транзакций, 649 в общей сложности, в последнем блоке TowerBFT были голосами валидаторов, тогда как первый блок Alpenglow не содержал ни одной, но при этом оказался больше.
- •Фонд Solana характеризует снижение TPS после обновления как изменение учёта, а не регрессию пропускной способности, однако цифры, опубликованные после 21 октября, считаются по иному определению, чем все предыдущие.
- •В первом блоке Alpenglow 844 из 1 701 транзакций завершились ошибками исполнения, поэтому даже подсчёт без голосов всё равно включает неудачные транзакции, заплатившие комиссию, но не выполнившие ни платежа, ни сделки.
- •Инструменты мониторинга, отслеживавшие участие валидаторов через инструкции Vote-программы, должны быть переработаны для чтения голосующих сертификатов из футеров блоков, а любой график TPS, охватывающий 21 октября, смешивает бухгалтерское изменение с реальными изменениями в использовании.

Количество транзакций в Solana и, вместе с ним, headline-показатель транзакций в секунду (TPS) снизились после того, как сеть 21 октября активировала Alpenglow. В документации по обновлению Фонда Solana это снижение называется «изменением учёта, а не регрессией пропускной способности». Такая формулировка всё же оставляет вопрос для всех, кто смотрит на графики Solana: действительно ли упала активность или только её численное выражение? Ответ выходит за рамки одного дня обновления, поскольку TPS — одна из самых цитируемых метрик пропускной способности в освещении блокчейнов, а подсчёт Solana после 21 октября ведётся по иному определению, чем все публиковавшиеся ранее цифры.
Что Alpenglow убрал из списка транзакций
При TowerBFT — консенсусной системе, которую Solana использовала до 21 октября, — валидаторы отправляли свои голоса как обычные транзакции. Блоки несли сотни таких транзакций наряду с платежами, обменами и другим прикладным трафиком, и любой подсчёт общего числа транзакций включал этот голосующий трафик. Поскольку эти голоса исходили от валидаторов, а не от пользователей, часть каждого показателя TPS до обновления отражала консенсусный механизм сети, а не спрос на её приложения.
Alpenglow заменяет этот механизм на Votor — протокол, в котором валидаторы обмениваются голосами напрямую и объединяют их в сертификаты. Сертификаты размещаются в футере каждого блока, а не в списке транзакций, поэтому счётчик транзакций с момента переключения перестаёт видеть голоса.
Что показывают блоки перехода
Coindoo изучил блоки по обе стороны переключения через публичный mainnet RPC Solana — интерфейс, который узлы предоставляют для чтения данных цепочки, — используя метод getBlock. Каждый блок занимает слот — окно продолжительностью около 400 миллисекунд. TowerBFT работал первые 5 000 слотов эпохи, прежде чем его сменил Alpenglow.
Последний блок TowerBFT был создан в 13:54:00 UTC 21 октября, а первый блок Alpenglow — в 13:54:03, при этом в восьми слотах между ними блоки не создавались. Примерно три из пяти транзакций в последнем блоке TowerBFT, 649 транзакций в общей сложности, были голосами валидаторов; блоком позже их не было вовсе. При этом блок Alpenglow оказался больше обоих. Одна пара блоков не может показать, выросла или упала активность сети; она демонстрирует механизм. Для измерения тренда нужны тысячи блоков.
Голоса — не единственный шум в подсчёте
Неудачные транзакции добавляют второй слой. Изучив поле ошибки в метаданных каждой транзакции, Coindoo обнаружил, что 844 из 1 701 транзакций в первом блоке Alpenglow завершились ошибкой исполнения, а 857 прошли успешно. Неудачная транзакция всё равно облагается комиссией и остаётся в блоке, но не выполняет ни платёж, ни сделку. Формулировка «изменение учёта» охватывает только слой голосов, поэтому даже подсчёт без голосов требует фильтра по полю ошибки, прежде чем он будет описывать фактически выполненную работу.
Успешные транзакции тоже не соответствуют числу людей. Один автоматизированный торговый аккаунт может отправлять транзакции в большом количестве, а одна транзакция может содержать несколько инструкций. Подсчёт того, что транзакции фактически выполнили — завершённые обмены или переводы токенов, — ближе к реальному использованию, чем любое общее число транзакций.
Где находятся данные для сравнения
Метод getRecentPerformanceSamples в Solana сообщает для каждой выборки общее число транзакций, число транзакций без голосов и продолжительность выборки в секундах. Деление количества на продолжительность даёт среднюю скорость за это окно.
Метод возвращает не более 720 выборок продолжительностью около минуты каждая — примерно последние 12 часов. Запрос, сделанный более чем через полдня после перехода, больше не достаёт до TowerBFT, поэтому сторона сравнения «до обновления» должна браться из ранее сохранённых выборок или из исторических блоков.
Три фильтра, применённые одинаково до и после переключения, делают сравнение осмысленным:
- Убрать голоса валидаторов. На новой стороне это делает Alpenglow; старую сторону нужно обрабатывать вручную.
- Убрать неудачные транзакции по полю ошибки каждой транзакции. Отсутствующие в API счётчик без голосов всё равно их включает.
- Сравнивать равные временные окна: минутные средние с минутными средними, но никогда пик на дашборде с дневным итогом.
Инструменты, читающие голоса, требуют переработки
Голосующие транзакции делали больше, чем завышали TPS. Инструменты мониторинга считывают инструкции Vote-программы из списка транзакций, чтобы отслеживать участие валидаторов. При Alpenglow этот источник исчез, и Фонд направляет такие инструменты к голосующим сертификатам в футерах блок. Трекер, продолжающий читать старый источник, показал бы валидаторов молчащими, хотя они продолжают голосовать.
Что касается показателей использования Solana, полезная цифра появится тогда, когда несколько дней успешных транзакций без голосов можно будет сопоставить с сохранёнными данными до обновления за те же часы. До этого момента любой headline-график TPS, охватывающий 21 октября, смешивает бухгалтерское изменение с реальными изменениями в использовании.
Источник: Coindoo