Как трейдеры переписывают блокчейн на C: разбираем Firedancer
Представьте, что вы строите гоночный болид, но вместо запчастей от Ferrari используете детали от трактора. Примерно так долгое время выглядела ситуация с Solana. Сеть заявляла о невероятной скорости, но работала на единственном клиенте-валидаторе, написанном на Rust. И хотя Rust прекрасен, у него есть свои пределы, особенно когда речь заходит о выжимании максимума из железа.
Тут на сцену выходят ребята из Jump Crypto. Это не просто очередная команда разработчиков, а подразделение одного из крупнейших маркетмейкеров в мире. Они привыкли работать с миллисекундами в высокочастотном трейдинге (HFT), где задержка в передаче пакета стоит реальных денег. Они посмотрели на Solana и решили: «Мы можем сделать это быстрее. Намного быстрее». Так появился Firedancer.
Зачем Solana еще один клиент
Обычно в блокчейнах несколько реализаций клиента — это вопрос безопасности. Если в коде одного найдется критический баг, сеть не упадет целиком, потому что другие узлы продолжат работать. В Solana до недавнего времени всё держалось на Agave (бывший оригинальный клиент от Solana Labs).
Но Firedancer — это не просто «копия для подстраховки». Это попытка переосмыслить, как софт должен взаимодействовать с «железом». Разработчики выбрали C, потому что им нужен был тотальный контроль над памятью и распределением ресурсов, который в Rust иногда скрыт за абстракциями безопасности.
Что внутри этого «танцора»
Проект разделен на две части, и это важное уточнение для тех, кто захочет потыкать его в мейннете.
Первая — Frankendancer. Как понятно из названия, это «монстр Франкенштейна». В нем сетевой стек и механизмы создания блоков взяты из нового кода Firedancer, а исполнение транзакций и консенсус пока остаются от старого Agave. Это промежуточный этап, который уже работает в тестовой и основной сетях Solana.
Вторая — «чистый» Firedancer. Это полная реализация с нуля. Пока она не готова для продакшена, но именно там зарыты самые интересные оптимизации.
Скорость из мира HFT
Разработчики используют модель параллелизма, обкатанную в торговых терминалах. Вместо того чтобы полагаться на стандартные планировщики операционной системы, Firedancer старается минимизировать системные вызовы. Код написан так, чтобы данные летали между ядрами процессора с минимальными задержками.
Интересно, что они переписали даже базовые примитивы Solana. Если стандартная библиотека кажется им медленной, они просто пишут свою реализацию алгоритма хеширования или проверки подписи, оптимизированную под конкретные инструкции процессора.
Безопасность через изоляцию
Обычно высокая скорость идет в ущерб безопасности, но здесь архитектура построена на жестком сэндбоксинге. Валидатор разбит на мелкие компоненты, каждый из которых работает в максимально ограниченном окружении. У процесса практически нет доступа к системным вызовам, что сильно усложняет жизнь потенциальному хакеру. Даже если кто-то найдет уязвимость в сетевом стеке, он не сможет просто так «выпрыгнуть» в систему и украсть ключи.
Как это запустить
Если у вас завалялся сервер на Linux с относительно свежим ядром (от 4.18), можно попробовать собрать проект самостоятельно. Сразу предупреждаю: Windows или macOS не поддерживаются, тут всё серьезно.
Процесс сборки выглядит стандартно для C-проектов:
$ git clone --recurse-submodules https://github.com/firedancer-io/firedancer.git
$ cd firedancer
$ ./deps.sh +dev
$ make -j run
Команда make run запускает утилиту fddev. Она сама проверит конфигурацию системы, создаст генезис-блок, ключи и даже локальный «кран» (faucet) для получения тестовых токенов. Учтите, что скрипту понадобятся права sudo, так как он лезет в настройки системы для оптимизации производительности.
Стоит ли за этим следить
Firedancer — это, пожалуй, самый амбициозный инженерный проект в криптоиндустрии прямо сейчас. Он интересен не только тем, кто инвестирует в Solana, но и системным программистам. Почитать их исходники на C — это отличный способ увидеть, как пишут софт, для которого 100 микросекунд — это уже долго.
Кому проект будет полезен:
- Операторам узлов Solana, которые хотят выжать максимум из своего железа.
- Разработчикам высоконагруженных систем — здесь много приемов по оптимизации сетевого стека.
- Всем, кто интересуется системным программированием на C и тем, как выживать в условиях экстремальных нагрузок.
Пока проект находится в активной разработке, и «чистый» Firedancer еще не готов к бою. Но Frankendancer уже показывает, что архитектурные решения из мира больших финансов отлично приживаются в децентрализованных сетях. Если они добьются заявленных целей, Solana может стать на порядок быстрее, а планка качества для блокчейн-клиентов поднимется на недосягаемую высоту.
