January 1, 2023

Приоритеты экосистемы Flow: Cadence

Рабочая группа Cadence Language занимается всем, что связано с работой языка смарт-контрактов на Flow, включая взаимодействие с хранилищем счетов, безопасность и масштабируемость сети. В центре внимания находятся проектирование, разработка и оптимизация языка смарт-контрактов и виртуальной машины Flow (FVM).

Долгосрочная поддержка: написал один раз, работает вечно

Одним из главных приоритетов для Cadence является разработка и реализация первого стабильного и долгосрочно поддерживаемого релиза Cadence (он же Stable Cadence). Это будет долгосрочный процесс, в ходе которого Cadence достигнет полноты функций, основные смарт-контракты будут достаточно проверены в бою, а экономика системы будет достаточно понятна, чтобы обеспечить долгосрочную поддержку без каких-либо ломающих изменений и проблем с обслуживанием. На основании отзывов сообщества этот этап был разделен на две фазы:

  • Secure Cadence: сосредоточился на укреплении безопасности, что позволило разблокировать развертывание смарт-контрактов без разрешения.
  • Долгосрочная поддержка: сосредоточена на улучшении удобства использования, которое потребует внесения изменений. Например, изменения могут включать в себя оптимизацию стандартов токенов, улучшение возможностей и удаление "foot-guns" реентерабельности.

Если у вас есть какие-либо мысли или вопросы по поводу общей идеи Stable Cadence, пожалуйста, комментируйте эту запись в блоге или участвуйте в Cadence FLIPs на GitHub.

Улучшение производительности

Рабочая группа Cadence Language сотрудничает с рабочей группой Core Protocol для достижения цели 1000 транзакций в секунду (TPS). В настоящее время в разработке или на рассмотрении находится несколько рабочих направлений:

  • Оптимизация кодирования внешних значений Cadence будет включать добавление альтернативы существующему кодированию на основе JSON для внешних значений Cadence. Эта новая кодировка повысит скорость кодирования/декодирования, уменьшит размер полезной нагрузки, передающей значения Cadence, и, в отличие от кодировки на основе JSON, будет иметь каноническую форму. Это также позволит хранить информацию о типах на сети, избегая повторного разбора и проверки типов Cadence во время выполнения.
  • Оптимизация кэша программ FVM улучшит производительность загрузки контрактов во время выполнения. В настоящее время оценивается ряд оптимизаций, включая аннулирование кэша и хранение разобранных и прошедших проверку типов контрактов сети
  • Конвейеризация FVM перед выполнением может улучшить скорость выполнения за счет параллельного разбора и проверки типов транзакций, пока транзакция выполняется, а следующие транзакции уже разобраны и проверены.
  • Оптимизация разработки будет включать поиск лучшего представления для разработок, а также создание сериализуемых разработок, чтобы их можно было хранить на сети.

Поддержка компиляции

Компиляция Cadence будет долгосрочной инвестицией, которую мы будем строить поэтапно, чтобы получить ряд преимуществ, в том числе:

  • Улучшение производительности
  • В настоящее время выполнение транзакций реализуется с помощью интерпретатора, работающего по дереву, который не рассчитан на высокую производительность. Переход к компиляции потенциально может обеспечить повышение производительности на порядки выше текущего уровня.
  • Позволяет языку развиваться независимо от виртуальной машины, что позволяет быстрее внедрять изменения в язык и обеспечивать обратную совместимость.

Первые несколько этапов должны быть сосредоточены на преимуществах производительности компиляции на сети, в частности, на выполнении предварительно скомпилированных контрактов и оценке потенциального влияния параллельной компиляции транзакций на производительность.

Если у вас есть какие-либо мысли, примеры использования или вопросы относительно опыта Cadence, пожалуйста, примите участие в открытом собрании по разработке или воспользуйтесь этим каналом Discord.

В настоящее время председателем рабочей группы Cadence является Bastian Müller, а основными участниками - Dapper Labs, NCC Group, Halborn и другие независимые участники. Рабочая группа ведет публичную разработку и координирует свою деятельность через ежемесячные публичные собрания по разработке языка, GitHub и FLIPs сообщества.