Взаимодействие с блокчейном Aptos

Aptos Blockchain использует для выполнения операций виртуальную машину Move (VM). В то время как многие блокчейны реализуют набор собственных операций, Aptos делегирует все операции Move, включая: создание учетной записи, перевод средств и публикацию модулей Move. Для поддержки этих операций блокчейн, построенный на базе Move, должен предоставлять собой среду (подобно операционной системе для компьютера или минимальному набору функций) для взаимодействия с блокчейном. В этом разделе мы обсудим эти функции, открытые через функции Aptos Framework script .

Это руководство (совместно с руководством по модулю Move) откроет минимальный объем информации, необходимый для начала создания многофункциональных приложений на базе Aptos Blockchain. Примечание: Aptos Framework находится в стадии интенсивной разработки, и этот документ может быть устаревшим. Самый последний фреймворк можно найти в исходном коде здесь.

Основные функции, предоставляемые пользователям в рамках Aptos Framework, включают:

  • Отправка и получение сетевой монеты Coin<TestCoin>

  • Создание новой учетной записи

  • Публикация нового модуля Move

Примечание: в этом документе предполагается, что читатели уже знакомы с процессом отправки транзакций, как описано в руководстве «Ваша первая транзакция».

Отправка и получение сетевой монеты Coin<TestCoin>

Coin<TestCoin> требуется для оплаты комиссий за газ при отправке и выполнении транзакций.Coin<TestCoin> можно получить с помощью Devnet Faucet. См. руководство Ваша первая транзакция в качестве примера.

Полезная информация по выполнению трансфера:

{
  "type": "script_function_payload",
  "function": "0x1::Coin::transfer",
  "type_arguments": ["0x1::TestCoin::TestCoin"],
  "arguments": [
    "0x737b36c96926043794ed3a0b3eaaceaf",
    "1000",
  ]
}

Это указывает виртуальной машине выполнить script 0x1::Coin::transfer с аргументом типа 0x1::TestCoin::TestCoin. Здесь требуется тип, так как Coin — это наш стандартный модуль, который можно использовать для создания многих типов монет. См. руководство «Ваша первая монета» для примера создания пользовательской монеты. Первый аргумент — это адрес получателя 0x737b36c96926043794ed3a0b3eaaceaf, а второй — сумма перевода 1000. Адрес отправителя — это адрес учетной записи, которая отправила транзакцию, запрашивающую этот script.

Создание новой учетной записи

Полезная информация по созданию новой учетной записи:

{
  "type": "script_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, чтобы решить эту проблему.

Last updated