与 Aptos 区块链交互

Aptos 区块链使用 Move 虚拟机 (VM) 来执行操作。虽然许多区块链实现了一组原生操作,但 Aptos 将所有操作委托给 Move,包括:账户创建、资金转账和发布 Move 模块。为了支持这些操作,构建在 Move 之上的区块链必须提供一个框架(类似于计算机的操作系统或最小的可行功能集)来与区块链交互。在本节中,我们将讨论这些通过 Aptos 框架的 script 函数来发布。

本指南(与 Move 模块教程一起)将解锁在 Aptos 区块链之上开始构建丰富应用程序所需的最少信息量。注意:Aptos 框架正在大力开发中,本文档可能不是最新的。最新的框架可以在源代码中找到。

Aptos Framework 内提供给用户的核心功能包括:

  • 发送和接收 TestCoin

  • 创建新帐户

  • 发布新的 Move 模块

注意:本文档假设读者已经熟悉提交交易,如您的第一个交易教程中所述。

发送和接收 TestCoin

提交和执行交易时需要 TestCoin 来支付gas费用。 TestCoin 可以通过查询 Devnet Faucet 获得。 有关示例,请参阅您的第一次交易教程。

执行转账的 payload 是:

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

这指示 VM 执行脚本 script 0x1::TestCoin::transfer。第一个参数是发送方地址, 0x737b36c96926043794ed3a0b3eaaceaf, 第二个是要转账的金额,1000。发送方地址是调用此 script 发送交易的账户地址。

创建新账户

创建新帐户的 payload 是:

{
  "type": "script_function_payload",
  "function": "0x1::AptosAccount::create_account",
  "type_arguments": [],
  "arguments": [
    "0x0c7e09cd9185a27104fa218a0b26ea88",
    "0xaacf87ae9d8a5e523c7f1107c668cb28dec005933c4a3bf0465ffd8a9800a2d900",
  ]
}

这指示 Move 虚拟机执行 script 0x1::AptosAccount::create_account。第一个参数是要创建的帐户的地址,第二个参数是身份验证密钥原像(在 Accounts 中提到)。对于单一签名者身份验证,这是与 0 字节(或 pubkey_A | 0x00)连接的公钥。 这是防止帐户地址抢占所必需的。 该指令的执行验证验证密钥的最后 16 字节是否与 16 字节的帐户地址相同。 我们正在积极努力改进此 API,以支持接收 32 字节的帐户地址,从而消除对抢占或帐户操纵的担忧。

发布新的 Move 模块

发布新模块的 payload:

"type": "module_bundle_payload",
"modules": [
    {"bytecode": "0x..."},
],

这指示 VM 在发送者的帐户下发布模块字节码。 如需完整教程,请参阅您的第一个移动模块。

需要注意的是,Move 字节码必须指定与发送者账户相同的地址,否则交易将被拒绝。例如,假设账户地址为 0xe110,Move 模块需要更新如 module 0xe110::Message, module 0xbar::Message 将被拒绝。 或者,可以使用别名地址,例如模块 module HelloBlockchain::Message ,但 HelloBlockchain 别名需要在 Move.toml 文件中更新为 0xe110。 我们正在与 Move 团队合作,并计划将编译器合并到我们的 REST 接口中以缓解此问题。

Last updated