您的第一个 Move 模块
本教程详细介绍了如何编写、编译、测试、发布以及与 Aptos 区块链上的 Move 模块交互。步骤如下:
编写、编译和测试 Move 模块
将 Move 模块发布到 Aptos 区块链
初始化并与 Move 模块的资源交互
本教程以“您的第一笔交易”为基础,并借用该代码作为本示例的库。 在下面下载示例代码:
对于本教程,将重点关注 hello_blockchain.py 并重用上一教程中的 first_transaction.py 库。
你可以在这里找到 python 项目。
对于本教程,将重点关注 hello_blockchain.py 并重用上一教程中的 first_transaction.py 库。
你可以在这里找到 Rust 项目。
对于本教程,将重点关注 hello_blockchain.py 并重用上一教程中的 first_transaction.py 库。
你可以在这里找到 typescript 项目。
Step 1) 编写和测试 Move 模块
Step 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/envStep 1.2) 查看模块
在上面的终端窗口中,将目录更改为 aptos-move/move-examples。 在本教程的其余部分保留此终端窗口 - 后面我们将它称为“Move 窗口”。 本节的其余部分将查看文件 `sources/HelloBlockchain.move`。
该模块使用户可以在其帐户下创建 `String` 资源并进行设置。 用户只能设置自己的资源,不能设置他人的资源。
在前面的代码中,两个重要的部分是 MessageHolder 结构体和函数 set_message。 set_message 是一个 script 函数,允许事务直接调用它。调用它时,该函数将确定当前帐户是否具有 MessageHolder 资源,如果不存在,则创建并存储该 message。 如果资源存在,则覆盖 MessageHolder 中的 message。
Step 1.3) 测试模块
Move 允许内联测试,因此我们添加了 get_message 以方便获取 message,并添加了一个测试方法 sender_can_set_message 来验证端到端流。 这可以通过运行 cargo test 来验证。 在 sources/HelloBlockchainTest.move 下还有另一个测试,演示了另一种编写测试的方法。
注意:sender_can_set_message 是一个 script 函数,以便调用脚本函数 set_message。
Step 2) 发布并与 Move 模块交互
现在我们回到我们的应用程序来部署 Atpos 区块链上的模块并与之交互。 如前所述,本教程建立在早期教程的基础上并共享通用代码。 因此,本教程仅讨论该库的新功能,包括发布、发送 set_message 交易和读取 MessageHolder::message 的能力。 发布模块和提交交易的唯一区别是负载(payload)类型。 请参阅以下内容:
Step 2.1) 发布 Move 模块
Step 2.2) 读取资源
该模块在一个地址发布。 这是下面的 contract_address。 这类似于前面的示例,其中 TestCoin 在 0x1地址下。 contract_address 将与发布它的地址相同。
Step 2.3) 修改资源
Move 模块必须公开用于初始化和操作资源的 script 函数。 然后可以从交易中调用该 script。
注意:虽然 REST 接口可以显示字符串,但由于 JSON 和 Move 的限制,它无法确定参数是字符串还是十六进制编码的字符串。 所以交易参数总是假设后者。 因此,在此示例中,消息被编码为十六进制字符串。
Step 3) 初始化并与 Move 模块交互
For Python3:
下载示例项目
打开您喜欢的终端并导航到您下载上述示例项目的位置
安装要求的依赖包:
pip3 install -r requirements.txt.执行示例命令:
python3 hello_blockchain.py Message.mv片刻之后,它会输出 "Update the module with Alice's address, build, copy to the provided path, and press enter."
在 "Move 窗口" 的终端中,对于我们之前看过的 Move 文件:
编辑
Move.toml并在[addresses]下将0xe110地址替换为 Alice 的地址,在提示上方输出。构建
cargo run -- sources拷贝
build/Examples/bytecode_modules/Message.mv到与本教程项目代码相同的文件夹中
返回到您的另一个终端窗口,并在提示符处按下“Enter”键以继续执行其余代码
输出的结果如下:
结果表明,Alice 和 Bob 从没有资源变成了一个 message 设置为“Hello, Blockchain”的地址。
可以通过访问 REST 接口或区块浏览器来验证数据:
Last updated