Move 是一种用于编写智能合约的语言,这些合约被存储和运行在区块链上。一个程序通常被组织成一个包 (package)。包被发布到区块链上,并通过一个 地址 进行标识。已发布的包可以通过发送交易来调用其函数进行交互。它还可以作为其他包的依赖项。

要创建一个新的包,请使用 sui move new 命令。要了解更多命令的详细信息,请运行 sui move new --help

包由模块组成 - 单独的作用域,包含函数、类型和其他项。

package 0x...
    module a
        struct A1
        fun hello_world()
    module b
        struct B1
        fun hello_package()

包结构

在本地,一个包是一个包含 Move.toml 文件和一个 sources 目录的文件夹。Move.toml 文件 - 称为 "包清单" - 包含关于包的元数据,而 sources 目录包含模块的源代码。包通常具有以下结构:

sources/
    my_module.move
    another_module.move
    ...
tests/
    ...
examples/
    using_my_module.move
Move.toml

tests 目录是可选的,包含包的测试代码。放置在 tests 目录中的代码不会发布到链上,仅在测试中使用。examples 目录可以用于包含代码示例,同样也不会发布到链上。

已发布的包

在开发过程中,包没有地址,需要设置为 0x0。一旦包被发布,它将在区块链上获得一个唯一的 地址,其中包含其模块的字节码。已发布的包变得 不可变 (immutable),可以通过发送交易进行交互。

0x...
    my_module: <bytecode>
    another_module: <bytecode>

链接