跳转到内容

Move:Web3 语言与运行时

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

Move 是一门安全可靠的 Web3 编程语言,强调稀缺性访问控制。Move 中的任何资产都可以由或存储于 resource。默认情况下会强制执行稀缺性,因为 struct 不会被意外复制或丢弃。只有在字节码层显式定义为 copy 的 struct 才能复制,显式定义为 drop 的 struct 才能丢弃。

访问控制来自账户概念和模块访问权限。Move 模块可以是库,也可以是创建、存储或转移资产的程序。Move 确保只有 public 模块函数可被其他模块访问。除非 struct 有 public 构造函数,否则只能在定义它的模块内构造。类似地,struct 字段只能在其模块内,或通过 public 访问器和 setter 访问和修改。使用 key 定义的 struct 只能在定义它的模块中存储至全局存储并从中读取。具有 store 的 struct 可在定义该 struct 的模块内外,存储于另一个 storekey struct 中。

在 Move 中,交易发送者由 signer 表示,它是特定账户的经验证所有者。signer 拥有 Move 中最高级别的权限,是唯一能向账户添加资源的实体。模块开发者还可要求 signer 存在,才允许访问资源或修改账户中存储的资产。

Aptos / MoveSolana / SeaLevelEVMSui / Move
数据存储存储在全局地址或所有者账户中存储在与程序关联的所有者账户中存储在与智能合约关联的账户中存储在全局地址
并行化运行时推断并行化要求指定所访问的所有数据当前为串行要求指定所访问的所有数据
交易安全序列号交易唯一性nonce,类似序列号交易唯一性
类型安全模块 struct 和泛型程序 struct合约类型模块 struct 和泛型
函数调用静态分派静态分派动态分派静态分派
已认证存储
对象全局可访问性不适用不适用否,可放入其他对象

每个 MoveVM 部署都能通过适配器层以附加功能扩展核心 MoveVM。此外,MoveVM 有支持标准操作的框架,类似于计算机拥有操作系统。

Aptos Move 适配器功能包括:

  • Move 对象:提供可扩展的编程模型,可全局访问存储在链上单个地址的一组异构资源。
  • 用于构建可扩展、保护隐私 dApp 的密码学原语
  • 资源账户:提供链上可编程账户,可用于 DAO、共享账户或构建复杂链上应用。
  • :用于在账户中大规模存储键值数据。
  • 通过 Block-STM 实现并行化,无需用户输入即可并发执行交易。
  • 多代理框架,使单笔交易能携带多个不同的 signer 实体提交。

Aptos 框架提供许多有用的库:

这些功能会频繁更新。

开发者可前往我们的 Move 开发者页面开始学习之旅。