В данной статье обсуждаются значительные изменения, внесенные Mainsail, а также как он отличается от версии Core. Основное внимание уделяется пониманию различий между Core и Mainsail без углубления в информацию EVM.
Основные изменения в Mainsail
Основные изменения в Mainsail по сравнению с последней версией Core включают:
- Внедрение нового механизма консенсуса BFT с мгновенной окончательностью.
- Увеличение количества активных валидаторов с 51 до 53.
- Внедрение снимков состояния для ускорения синхронизации.
- Исключение необходимости во внешней конфигурации базы данных, за исключением необязательного общедоступного API.
- Разделение общедоступного API на отдельный процесс для лучшей масштабируемости.
- Обновление кодовой базы с принятием ES модулей.
- Переход к использованию pnpm в качестве основного менеджера пакетов для улучшенного управления зависимостями.
- Изменение лицензии проекта с MIT на GPLv3.
Эти изменения в совокупности укрепляют безопасность, масштабируемость и производительность Mainsail, закрепляя его позицию как надежное и инновационное решение в области блокчейна.
Техническое сравнение
Технические различия между Mainsail и последней версией Core описаны в формате таблицы, сравнивающей такие характеристики, как база данных реестра, база данных API, финализация блока, валидаторы, время блока и другие.
Инсайты проекта
В этом разделе обсуждаются технические, кодовые и общие изменения в Mainsail. Разрабатываются структура и пакеты Mainsail, включая криптографию, транзакции и детали API. Для крипто-транзакций и API были внесены значительные изменения, что привело к появлению новых пакетов и функциональностей.
Инструментарий
В блоге детально описан инструментарий, используемый в Mainsail, включая переход от менеджера пакетов yarn к pnpm, использование Lerna для монорепозиториев и переход к ES модулям для сборки браузера в большинстве пакетов Mainsail. Также предоставлены рекомендации для разработки в Visual Studio Code с конкретными расширениями.
Тесты
В этом разделе обсуждается замена Jest в Mainsail тестовым раннером Uvu. Упоминаются также дополнительные пакеты, такие как sinon, nock, esmock и c8, используемые для тестирования. Представлены основания использования Uvu, известного своей производительностью.
Консенсус
Механизм консенсуса в Mainsail, вдохновленный Tendermint, с финальностью блока, циклом блока и подписями BLS12-381, детально объяснен. Особенности подписей BLS12-381, включая преимущества агрегации, выделены.
База данных
Обсуждается выбор LMDB в качестве основной базы данных, его преимущества производительности по сравнению с PostgreSQL и процесс управления состоянием в Mainsail. Принципы использования LMDB и снимков состояния для повышения эффективности синхронизации изложены.
API (Необязательно)
В этом разделе описано перемещение общедоступного API в отдельный процесс, синхронизацию с базой данных PostgreSQL и особенности обработки данных между API и узлом Mainsail.
Заключение
В разделе заключения подводятся итоги преимуществ, которые предлагает Mainsail по сравнению с Core V3, с акцентом на улучшения в алгоритмах консенсуса, управлении базами данных и модульной архитектуре для повышения производительности, масштабируемости и опыта разработчика. Читателей призывают быть в курсе событий, связанных с ARK, следуя по предоставленной ссылке.














