Ваш первый Move модуль

В этом руководстве подробно рассказывается, как писать, компилировать, тестировать, публиковать и взаимодействовать с модулями Move в Aptos Blockchain. Мы рассмотрим следующие шаги:

  1. Напишите, скомпилируйте и протестируйте модуль Move.

  2. Опубликуйте модуль Move в Aptos Blockchain.

  3. Запустите и взаимодействуйте с ресурсами Move Module.

Это руководство основано на разделе Ваша первая транзакция в качестве библиотеки для этого примера. Данное руководство содержит пример кода, который можно полностью загрузить:

В этом руководстве основное внимание будет уделено hello_blockchain.py и повторному использованию библиотеки first_transaction.py из предыдущего руководства.

Вы найдете python project здесь.

Шаг 1) Напишите и протестируйте Move Module

Шаг 1.1) Загрузите Aptos-core

Для простоты выполнения этой задачи в Aptos-core имеется каталог move-examples , который позволяет легко создавать и тестировать модули Move без загрузки дополнительных ресурсов. Со временем мы расширим этот раздел, чтобы описать, как использовать для разработки инструменты Move.

А пока скачайте и подготовьте Aptos-core:

git clone https://github.com/aptos-labs/aptos-core.git
cd aptos-core
./scripts/dev_setup.sh
source ~/.cargo/env
git checkout origin/devnet

Установите Aptos Commandline tool. Узнайте больше по ссылке Aptos command line tool.

Шаг 1.2) Просмотрите модуль

В этом терминале измените каталоги наaptos-move/move-examples/hello_blockchain. Сохраните окно терминала до конца данного руководства — далее мы будем называть его "Move Window". В оставшейся части этого раздела будет рассмотрен файл sources/HelloBlockchain.move.

Этот модуль позволяет пользователям создать и установить ресурс String под своей учетной записью. Пользователи могут устанавливать только свой ресурс и не могут устанавливать ресурсы других.

В приведенном выше коде два важных раздела — это структура MessageHolder и функция set_message. set_message — это функция сценария script , позволяющая вызывать ее непосредственно транзакциями. После ее вызова функция определит, есть ли у текущей учетной записи ресурс MessageHolder , а также создаст и сохранит сообщение message , если оно не существует. Если ресурс существует, сообщение message в MessageHolder перезаписывается.

Шаг 1.3) Тестирование модуля

Move позволяет выполнять встроенные тесты, поэтому мы добавляем get_message ,чтобы сделать извлечение сообщения message удобным и тестовую функцию sender_can_set_message для проверки сквозного потока. Это можно проверить, запустив cargo test. Есть еще один тест sources/HelloBlockchainTest.move , демонстрирующий другой метод написания тестов.

Это можно проверить, введя на терминале cargo test test_hello_blockchain -p move-examples -- --exact .

Примечание: sender_can_set_message - это функция script для вызова функции script - set_message.

Шаг 2) Публикация и взаимодействие с Move Module

Теперь вернемся к нашему приложению для развертывания и взаимодействия с модулем в блокчейне Atpos. Как упоминалось ранее, это руководство основано на предыдущем руководстве и использует общий код. Соответственно, в этом руководстве обсуждаются только новые функции данной библиотеки, включая возможность публикации, отправки транзакцииset_message и чтения MessageHolder::message. Единственное отличие от публикации модуля и отправки транзакции — это тип полезной нагрузки. См. следующее:

Шаг 2.1) Публикация Move Module

Шаг 2.2) Чтение ресурса

Модуль публикуется по адресу. Ниже приведен адрес contract_address . Это похоже на предыдущий пример, где монетаCoin находится по адресу 0x1. contract_address будет таким же, как у учетной записи, которая его публикует.

Шаг 2.3) Изменение ресурса

Модули Move должны раскрывать функции script для запуска и управления ресурсами. Затем script можно вызвать из транзакции.

Примечание: хотя интерфейс REST и может отображать строки, но из-за ограничений JSON и Move он не может определить, является ли аргумент строкой или строкой в шестнадцатеричном коде. Таким образом, аргументы транзакции всегда предполагают последнее. Следовательно, в этом примере сообщение закодировано как шестнадцатеричная строка.

Шаг 3) Запуск и взаимодействие с Move module

Для Python3:

  • Загрузите example project.

  • Откройте свой любимый терминал и перейдите туда, куда вы загрузили приведенный выше example project.

  • Установите необходимые библиотеки: pip3 install -r requirements.txt.

  • Выполните: python3 hello_blockchain.py Message.mv

  • Через некоторое время появится сообщение: "Обновите модуль с адресом Алисы, создайте, скопируйте по указанному пути и нажмите Enter."

  • В терминале "Move Window" и для файла Move, который мы ранее рассматривали:

    • Скопируйте адрес Алисы

    • Скомпилируйте модули с адресом Алисы с помощью aptos move compile --package-dir . --named-addresses HelloBlockchain=0x{alice_address_here}. Здесь бы заменяем общий адрес HelloBlockChain='_' в hello_blockchain/move.toml на адрес Алисы

    • Скопируйте build/Examples/bytecode_modules/Message.mv в ту же папку, что и код этого руководства

  • Вернитесь в другое окно терминала и нажмите "enter" в командной строке, чтобы продолжить выполнение остальной части кода

Результат должен выглядеть следующим образом:

Результат показывает, что Алиса и Боб перешли от отсутствия ресурсов к одному с message "Hello, Blockchain".

Данные можно проверить, посетив либо интерфейс REST, либо :

  • Учетная запись Алисы через REST interface

  • Учетная запись Боба на explorer

Last updated