Move — это новый язык программирования для блокчейна Libra. Это позволяет реализовать смарт-контракты и пользовательскую логику транзакций. Четыре ключевые особенности языка Move: первоклассные активы, гибкость, безопасность и проверяемость.
Теперь доступно промежуточное представление Move (IR). Это очень ранняя и нестабильная версия языка, и в будущем она будет заменена языком Move более высокого уровня. Но мы можем использовать Move IR для экспериментов со скриптами и модулями для Libra Blockchain. На данный момент, как мы можем прочитать в документации Libra (https://developers.libra.org/docs/move-overview), нет возможности развернуть скрипты или модули Move в тестовой сети:
Пользовательские программы Move не поддерживаются в первоначальном выпуске тестовой сети, но эти функции доступны для локального опробования.
Но что мы можем сделать сейчас, так это протестировать или скомпилировать модули/скрипты Move.
1. Подготовка среды
В начале нам нужно клонировать и настроить Libra Core.
git clone https://github.com/libra/libra.git cd libra ./scripts/dev_setup.sh
2. Тестирование модулей Move
2.1 Подготовка файла .mvir для тестирования
Из-за проблемы со средой — код github не отображается в Safari. Используйте другой браузер для просмотра всего контента
Мы будем использовать пример модуля из Libra docs.
Сначала мы должны перейти в тестовый каталог
libra/language/functional_tests/tests/testsuite/modules
и создайте файл move_test_module.mvir
В конце файла, после модуля, мы добавили пустой скрипт, чтобы наш файл компилировался правильно:
script: main() { return; }
В конце концов, вы можете удалить эту часть файла и проверить, что произойдет.
Объяснение того, как создавать модули и скрипты, выходит за рамки этой статьи. Вы можете найти много примеров в каталоге libra/language/functional_tests/tests/testsuite/modules
или в документации Libra:
2.2 Запуск тестов
Чтобы начать тестирование нашего файла, нам нужно запустить команду
cargo test -p functional_tests <file_name>
Так что в нашем случае это будет
cargo test -p functional_tests move_test_module.mvir
В результате получаем:
3. Компиляция скриптов и модулей Move с помощью Move IR Compiler
3.1 Переместить компилятор IR
Вместо теста можно напрямую использовать Move IR-компилятор:
Компилятор Move IR компилирует модули и скрипты, написанные на Move down, в соответствующие представления байт-кода.
3.2 Подготовка файлов .mvir
Мы будем использовать наш файл move_test_module.mvir
, а также создадим еще один с помощью простого скрипта из Libra docs - move_test_script.mvir
Теперь мы можем создать, например, каталог exampletest
в главном каталоге и скопировать туда оба файла.
3.3 Компиляция скриптов и модулей
Чтобы скомпилировать наши файлы, нам нужно запустить команду:
cargo run -p compiler <file_path>
Итак, теперь мы должны запустить его для обоих наших файлов:
cargo run -p compiler ./test/move_test_module.mvir cargo run -p compiler ./test/move_test_script.mvir
Если компиляция прошла успешно, в результате мы увидим наш скрипт/модуль, скомпилированный в байт-код Move:
В этой статье за несколько простых шагов показано, как тестировать и компилировать модули/скрипты Move. Теперь ждем возможности развернуть их в тестовой сети!