Вместе с основным обновлением протокола представлена виртуальная машина CKB-VM v1, которая теперь доступна в основной сети Nervos Layer 1. Эта новая версия CKB-VM повышает производительность выполнения смарт-контрактов и добавляет несколько новых функций, которые разработчики могут использовать при разработке смарт-контрактов.
Эти обновления могут повысить эффективность как существующих смарт-контрактов, так и новых смарт-контрактов, а добавляемые новые функции расширяют возможности Nervos за счет улучшения основ уровня 1. Виртуальная машина CKB-VM v0 по-прежнему доступна для обратной совместимости, и теперь разработчики могут выбирать, какую версию использовать для выполнения своих смарт-контрактов.
Ключевые черты
Расширение RISC-V B: обновление набора инструкций RISC-V, которое улучшает возможность выполнения определенных битовых манипуляций, что может привести к повышению производительности, уменьшению размера кода и снижению энергопотребления. Это также позволит повысить производительность CKB-VM, особенно при работе на процессорах x86_64.
Macro-Op Fusion: обновление набора инструкций RISC-V, которое позволяет объединять две или более простых инструкций в одну более сложную инструкцию, которая может выполняться более эффективно. В сочетании с расширением RISC-V B это приводит к существенному улучшению количества циклов, используемых для определенных операций. Одним из примеров является значительно улучшенная поддержка цифровых подписей BLS, которые все чаще используется в индустрии криптовалют.
Системные вызовы: добавлены три новых системных вызова: VM Version, Current Cycles и Exec. Версия виртуальной машины позволяет смарт-контракту определять, в какой среде виртуальной машины он выполняется. Текущие циклы позволяют смарт-контракту просматривать, сколько циклов было использовано до сих пор во время выполнения. Exec позволяет исполняющемуся в данный момент смарт-контракту выполнять другой смарт-контракт, обеспечивая более модульный код и возможность последовательного выполнения смарт-контрактов.
Формат адреса: широко известный как «адреса CKB2021», этот новый формат адреса позволяет указать версию виртуальной машины через значение «тип хэша». Указание новых значений «типа хэша» для CKB-VM v1 невозможно в предыдущих версиях адресов, что означает, что только CKB-VM v0 может быть таргетирован, если вы не используете новый формат адреса.
Таргетирование на версию виртуальной машины
Nervos Layer 1 предоставляет как CKB-VM v0, так и CKB-VM v1 для выполнения смарт-контрактов. Это позволяет старым смарт-контрактам оставаться полностью обратно совместимыми с использованием CKB-VM v0, в то время как новые смарт-контракты могут использовать CKB-VM v1.
Всем разработчикам, работающим с уровнем 1, рекомендуется изучить основные принципы работы с конкретными виртуальными машинами, чтобы они могли в полной мере воспользоваться преимуществами новых функций CKB-VM v1 или вернуться к CKB-VM v0 для обратной совместимости, если это необходимо.
Значение хеш-типа сценария теперь используется для указания критериев соответствия и целевой виртуальной машины. До основного обновления протокола были доступны только значения хеш-типа «0» и «1». Теперь доступно новое значение «2».
Таргетинг на версию виртуальной машины
Nervos Layer 1 предоставляет как CKB-VM v0, так и CKB-VM v1 для выполнения смарт-контрактов. Это позволяет старым смарт-контрактам оставаться полностью обратно совместимыми с использованием CKB-VM v0, в то время как новые смарт-контракты могут использовать CKB-VM v1.
Всем разработчикам, работающим с уровнем 1, рекомендуется изучить основные принципы работы с конкретными виртуальными машинами, чтобы они могли в полной мере воспользоваться преимуществами новых функций CKB-VM v1 или вернуться к CKB-VM v0 для обратной совместимости, если это необходимо.
Значение хеш-типа сценария теперь используется для указания критериев соответствия и целевой виртуальной машины. До основного обновления протокола были доступны только значения хеш-типа «0» и «1». Теперь доступно новое значение «2».
Тип хэша 0: смарт-контракты, основанные на типе хэша «0», будут продолжать использовать CKB-VM v0. Это связано с тем, что тип хэша «0» означает, что сопоставление кода выполняется с помощью хэша данных кода скрипта, что означает, что для выполнения предназначен конкретный двоичный файл. Существующие смарт-контракты, которые использовали тип хэша «0», будут продолжать использовать CKB-VM v0 и работать точно так же, как и до основного обновления протокола.
Тип хэша 1: Смарт-контракты, основанные на типе хэша «1», будут использовать CKB-VM v1. Сюда входят все смарт-контракты, развернутые до и после основного обновления протокола. Это связано с тем, что тип хэша «1» означает, что сопоставление кода выполняется с помощью хэша сценария типа, что обычно означает, что код сценария может быть обновлен разработчиком. Поскольку конкретный двоичный файл не нацелен и существует путь обновления, ожидается, что разработчики обновят свой код при необходимости, поскольку теперь для выполнения используется CKB-VM v1.
Тип хэша 2: смарт-контракты, которые полагаются на тип хэша «2», будут использовать CKB-VM v1. Это связано с тем, что тип хеша «2» соответствует определенному двоичному файлу, подобному типу хэша «0». Тип хэша «2» был недоступен до основного обновления протокола, поэтому только новые развертываемые смарт-контракты смогут использовать тип хэша «2» для нацеливания на CKB-VM v1.
Итог
Nervos стремится к постоянному совершенствованию и поддержанию платформы смарт-контрактов Nervos на переднем крае технологий. Эти обновления не только улучшают нашу платформу, но и, не отставая от достижений в RISC-V и Rust, наша экосистема будет продолжать извлекать выгоду из их улучшений, оставаясь при этом максимально безопасной.
Эти изменения виртуальных машин затрагивают самые низкие уровни платформы Nervos, где они в значительной степени невидимы, за исключением разработчиков уровня 1, работающих над основами экосистемы. Несмотря на то, что средний пользователь может не заметить разницы прямо сейчас, эти обновления будут продолжать давать Nervos преимущество в обеспечении наилучшего пользовательского опыта в будущем.