Приоритеты экосистемы 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 сообщества.