跳转到内容

Move:Web3 语言与运行时

Aptos 区块链由运行共识协议的验证者节点组成。共识就交易顺序以及交易在 Move 虚拟机(MoveVM)上执行后的输出达成一致。每个验证者将当前账本状态和区块输入虚拟机;MoveVM 产生变更集(存储增量)。共识提交该输出后,结果便公开可见。本页介绍 Move 的核心概念及其在 Aptos 上的应用。

Move 是一门强调稀缺性访问控制的 Web3 编程语言。资产由或存储于 resource 中。稀缺性是默认行为:除非字节码显式授予 copydrop 能力,struct 不能被复制或丢弃。

访问控制来自账户和模块可见性。模块是可以创建、存储或转移资产的库或程序。只有 public(以及 public(friend))函数可被其他模块调用。除非 struct 有 public 构造函数,否则只有定义它的模块能创建它。字段只能在该模块内,或通过 public 访问器读写。带 key 的 struct 只能从定义它的模块进入全局存储。带 store 的 struct 可以放在另一个 storekey 值中,包括定义模块之外。

交易发送者是 signer,即账户的经验证所有者。signer 拥有 Move 中最高权限,是唯一能向账户发布资源的实体。模块作者也可以要求 signer 才能读取或更新账户下的资产。

Aptos / MoveSolana / SeaLevelEVMSui / Move
数据存储存储在全局地址或所有者账户中存储在与程序关联的所有者账户中存储在合约账户中存储在全局地址
并行化运行时由 Block-STM 推断要求指定所访问的所有数据通常为串行要求指定所访问的所有数据
交易安全序列号或无序交易 nonce交易唯一性nonce交易唯一性
类型安全模块 struct 和泛型程序 struct合约类型模块 struct 和泛型
函数调用静态分派,以及 函数值(Move 2.2)静态分派动态分派静态分派
已认证存储
对象全局可访问性不适用不适用否;对象可嵌套在其他对象中

每个 MoveVM 部署都可通过适配器扩展核心 Move。Aptos 还提供一组框架模块,类似于 CPU 上的操作系统。

Aptos Move 适配器包括:

  • Move 对象 — 在一个链上地址存放一组异构资源的可扩展模型(AIP-10)。
  • 用于构建可扩展、保护隐私应用的密码学原语
  • 资源账户 — 没有交互式私钥的可编程账户,用于 DAO、共享账户和应用自有模块。
  • ,用于在账户下大规模存储键值数据。
  • 通过 Block-STM 并行执行,无需声明访问列表。
  • 多代理交易,使一笔交易可携带多个不同的 signer
  • 函数值(Move 2.2),即一等函数,使用时须遵守重入规则。
  • 链上随机数,在 Move 中提供不可偏置的随机值。

Aptos 框架包括: