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. Теперь ждем возможности развернуть их в тестовой сети!