Блокчейн Aptos использует виртуальную машину Move для выполнения операций. В то время как многие блокчейны реализуют набор собственных операций, Aptos делегирует Move все операции, включая: создание учетной записи, перевод средств и публикацию модулей Move. Для поддержки этих операций блокчейн, построенный на базе Move, должен предоставлять основу (подобно операционной системе для компьютера или минимальному набору функций) для взаимодействия с блокчейном. В этом разделе мы обсудим эти функции, открытые через script
функции Aptos Framework.
Это руководство (в сочетании с руководством по модулю Move) раскроет минимальный объем информации, необходимый для того, чтобы начать создавать насыщенные приложения на основе блокчейна Aptos. Примечание: Aptos Framework находится в стадии активного развития, поэтому данный документ может быть неактуальным. Самую последнюю версию фреймворка можно найти в исходном коде здесь.
Основные функции, предоставляемые пользователям в рамках Aptos Framework, включают:
- Отправка и получение сетевого coin
Coin<AptosCoin>
. - Создание новой учетной записи
- Публикация нового модуля Move
Примечание: этот документ предполагает, что читатели уже знакомы с отправкой транзакций, как описано в руководстве "Ваша первая транзакция".
Отправка и получение сетевого coin Coin<AptosCoin>
Coin<AptosCoin>
необходима для оплаты комиссии за газ при отправке и выполнении транзакций.
Coin<AptosCoin>
можно получить, вызвав Devnet Faucet. Пример смотрите в руководстве "Ваша первая транзакция".
Полезной нагрузкой для передачи блокчейну команды на выполнение перевода является:
{
"type": "entry_function_payload",
"function": "0x1::Coin::transfer",
"type_arguments": ["0x1::aptos_coin::AptosCoin"],
"arguments": [
"0x737b36c96926043794ed3a0b3eaaceaf",
"1000",
]
}
Это дает указание виртуальной машине выполнить script
0x1::Coin::transfer
с аргументом типа 0x1::aptos_coin::AptosCoin
. Тип здесь необходим, поскольку Coin - это наш стандартный модуль, который можно использовать для создания многих типов Coin. Пример создания пользовательской Coin смотрите в руководстве "Ваш первый Coin". Первый аргумент - это адрес получателя, 0x737b36c96926043794ed3a0b3eaaceaf
, а второй - сумма перевода, 1000
. Адрес отправителя - это адрес учетной записи, которая отправила транзакцию, запросив данный script
.
Создание новой учетной записи
Полезная нагрузка для передачи блокчейну команды на создание новой учетной записи следующая:
{
"type": "entry_function_payload",
"function": "0x1::AptosAccount::create_account",
"type_arguments": [],
"arguments": [
"0x0c7e09cd9185a27104fa218a0b26ea88",
"0xaacf87ae9d8a5e523c7f1107c668cb28dec005933c4a3bf0465ffd8a9800a2d900",
]
}
Это дает указание виртуальной машине Move выполнить script
0x1::AptosAccount::create_account
. Первым аргументом является адрес создаваемой учетной записи, а вторым - предварительный образ ключа аутентификации (который упоминается в разделе Учетные записи). Для аутентификации с одной подписью это открытый ключ, скомпонованный с байтом 0
(или pubkey_A | 0x00
). Это необходимо для предотвращения присвоения адреса учетной записи. Выполнение этой инструкции проверяет, что последние 16 байт ключа аутентификации совпадают с 16-байтовым адресом учетной записи. Мы активно работаем над улучшением этого API для поддержки приема 32-байтового адреса учетной записи, что устранит опасения по поводу присвоения или манипулирования учетной записью.
Публикация нового модуля Move
Полезная нагрузка для передачи блокчейну команды для публикации нового модуля является:
"type": "module_bundle_payload",
"modules": [
{"bytecode": "0x..."},
],
Это дает указание виртуальной машине опубликовать байткод модуля под учетной записью отправителя. Полное руководство смотрите в разделе Ваш первый модуль Move.
Важно отметить, что байткод Move должен указывать тот же адрес, что и учетная запись отправителя, иначе транзакция будет отклонена. Например, если адрес учетной записи 0xe110
, модуль Move должен быть обновлен как такой module 0xe110::Message
, module 0xbar::Message
будет отклонен. В качестве альтернативы можно использовать псевдонимный адрес, например, module HelloBlockchain::Message
, но псевдоним HelloBlockchain
нужно будет обновить до 0xe110
в файле Move.toml
. Мы работаем с командой Move и планируем включить компилятор в наш REST-интерфейс, чтобы смягчить эту проблему.
Top comments (0)