Ваш первый Move модуль
В этом руководстве подробно рассказывается, как писать, компилировать, тестировать, публиковать и взаимодействовать с модулями Move в Aptos Blockchain. Мы рассмотрим следующие шаги:
Напишите, скомпилируйте и протестируйте модуль Move.
Опубликуйте модуль Move в Aptos Blockchain.
Запустите и взаимодействуйте с ресурсами Move Module.
Это руководство основано на разделе Ваша первая транзакция в качестве библиотеки для этого примера. Данное руководство содержит пример кода, который можно полностью загрузить:
В этом руководстве основное внимание будет уделено hello_blockchain.py и повторному использованию библиотеки first_transaction.py из предыдущего руководства.
Вы найдете python project здесь.
В этом руководстве основное внимание будет уделено hello_blockchain.rs и повторному использованию библиотеки first_transaction.rs из предыдущего руководства.
Вы найдете rust project здесь.
В этом руководстве основное внимание будет уделено hello_blockchain.ts и повторному использованию библиотеки first_transaction.ts из предыдущего руководства.
Вы найдете typescript 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
Для Rust:
Загрузите example project.
Откройте свой любимый терминал и перейдите туда, куда вы загрузили приведенный выше example project.
Выполните:
cargo run --bin hello-blockchain -- Message.mv
Для Typescript:
Загрузите example project.
Откройте свой любимый терминал и перейдите туда, куда вы загрузили приведенный выше example project.
Установите необходимые библиотеки:
yarn installВыполните:
yarn hello_blockchain 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