На конференции Solana Breakpoint, прошедшей на прошлой неделе, царила оживленная атмосфера, сопровождавшаяся презентациями продуктов и различными интересными мероприятиями. Ярким событием стал официальный запуск ранней версии клиента валидатора Solana — Firedancer — в мейннете.
Это знаковое достижение заслуживает особого внимания, поскольку оно свидетельствует о значительном скачке производительности сети Solana и одновременно снижает риск простоя сети из-за отказа одного клиента.
Firedancer был разработан в 2021-2022 годах под руководством Jump Trading Group в качестве второго клиента-валидатора Solana (первоначальный клиент, Agave, был разработан Anza). Его главной целью было устранить единичные точки отказа, повысив общую надежность и устойчивость сети.
В отличие от оригинального валидатора на основе Rust, Firedancer написан на C, исключая код на Rust. Этот выбор значительно снижает потенциальное воздействие уязвимостей на сеть, добавляя Solana мощный уровень безопасности.
Как работает Firedancer?
Во время презентации на Solana Breakpoint главный научный сотрудник Jump Crypto Кевин Бауэрс продемонстрировал способность Firedancer обрабатывать более 1 миллиона транзакций в секунду (TPS), что значительно превышает текущий теоретический предел Solana в десятки тысяч TPS. Он метафорически сравнил это достижение с расширением «проселочной дороги» до «межштатного шоссе», что указывает на двойную оптимизацию затрат и пропускной способности сети.
Основной инженер Лиам Хигер поделился успехами в тестовой сети, отметив, что Firedancer успешно произвел более 20 000 блоков с коэффициентом стакинга 1%. Другой инженер, Арьяман Джайн, продемонстрировал производительность Firedancer в конкретных условиях, показав TPS до миллиона в среде с 10 валидаторами, более 1,2 миллиарда вычислений в секунду и пропускную способность блочного пространства 3,5 Гбит/с.
Как работает Firedancer?
Firedancer построен на трех основных компонентах: стеке высокопроизводительных вычислений, сетевом стеке, а также времени выполнения и механизмах консенсуса. Его способность поднять производительность Solana до 1 миллиона TPS (текущий протокол ограничивается 81 000 TPS) заключается в инновационной архитектуре и оптимизации потока данных.
В валидаторе используется модель параллелизма, при которой различные задачи выполняются в несколько потоков, причем каждый поток фокусируется на определенных задачах, таких как обработка сетевых пакетов, проверка транзакций и упаковка блоков. Такая конструкция позволяет максимально эффективно использовать ресурсы и значительно ускорить обработку транзакций.
В частности, каждый поток выполняет одну из 11 различных задач. Некоторые задачи требуют только одного потока, а другие — нескольких потоков, работающих параллельно. Каждый поток работает на выделенном ядре процессора, поэтому он никогда не засыпает и не перепрофилируется операционной системой.
В Firedancer также представлена архитектура «плиток», где каждая плитка представляет собой задание, его выполняющийся поток и выделенное ядро процессора. Такая комбинация позволяет гибко и эффективно настраивать производительность. Например, тайлы net и quic могут обрабатывать более 1 миллиона TPS, в то время как тайлы verify и bank сосредоточены на проверке транзакций и выполнении блоков, что достаточно для высококонкурентных сценариев.
В официальной документации Firedancer перечислены следующие 11 тайлов:
- сеть: Отправляет и принимает сетевые пакеты (каждая плитка может обрабатывать >1 миллион TPS);
- quic: Принимает транзакции от клиентов, управляя соединением и обработкой пакетов для протокола QUIC (каждая плитка может обрабатывать >1 миллион TPS);
- проверить: Проверяет криптографические подписи входящих транзакций, отсеивая недействительные (каждая плитка может обрабатывать 20-40 000 TPS);
- dedup: Проверка и фильтрация дубликатов входящих транзакций;
- упаковка: Упаковывает входящие транзакции, когда выступает в роли лидера, разумно планируя их выполнение;
- банк: Выполняет запланированные транзакции (каждая плитка может обрабатывать 20-40 000 TPS);
- пох: Непрерывное хэширование в фоновом режиме, смешивание сгенерированных хэшей с выполненными транзакциями для подтверждения порядка и времени;
- измельчить: распределяет блочные данные по сети, когда выступает в роли лидера; когда нет — получает и ретранслирует блочные данные (пропускная способность в основном зависит от размера кластера, в бенчмарках указывается >1 млн TPS для небольших кластеров);
- магазин: Получает данные блока, когда выступает в роли лидера, или от других узлов, когда они являются лидерами, сохраняя их в локальной дисковой базе данных;
- метрическая: Собирает информацию о мониторинге других плиток и предоставляет ее конечным точкам HTTP;
- подписать: Хранит закрытый ключ валидатора и отвечает на запросы подписи от других тайлов.
Примечательно, что пока Firedancer еще не созрел, его переходная версия, Frankendancer, уже вошла в Solana мейннет. Frankendancer — это гибрид кодов Firedancer и Agave, использующий преимущества Firedancer в сетевом стеке и добыче блоков при сохранении функций Agave по исполнению и консенсусу. В отличие от него, Firedancer создан полностью с нуля без какого-либо кода Agave.
Каково влияние Firedancer?
Безусловно, запуск Firedancer имеет значительные последствия для экосистемы Solana, значительно увеличивая разнообразие валидаторов и снижая риск возникновения единых точек отказа, тем самым укрепляя надежность сети.
Более того, Firedancer поддерживает обратную совместимость с существующими протоколами, обеспечивая плавный переход для экосистемы, не требуя существенных изменений от разработчиков и пользователей DApp.
Несмотря на то, что в настоящее время Firedancer находится в режиме без права голоса и проходит постоянную оптимизацию и аудит, он рисует обнадеживающую картину для будущего развития сети Solana.