1. 概述

欢迎来到Move,这是一种用于安全、沙盒化和形式化验证编程的下一代语言。它已经被用作包括Aptos在内的几个区块链的智能合约语言。Move允许开发者编写程序,灵活地管理和转移资产,同时提供对这些资产的安全性和保护措施。然而,Move的开发也考虑到了区块链之外的使用场景。

Move从Rust中汲取灵感,使用具有移动(移动语义,Move语言名称的由来)的资源类型作为数字资产的显式表示,例如货币。

2. 为谁而写?

Move 被设计和创建为一种安全、经过验证但又灵活的编程语言。Move的首次使用是实现Diem区块链,目前它正在 Aptos 上使用。

这本书适合有一定编程经验的开发者阅读,他们想要开始理解核心编程语言,并看到其使用示例。

我从哪里开始?

建议的阅读顺序是先理解脚本和模块,然后再学习本书的其他部分。

原文

3. 为什么选择 Move?

Move 编程语言最初是由 Facebook 的工程师团队为 Diem 支付网络创建的。Move 旨在成为一种平台无关的语言,以实现跨不同区块链的通用库、工具和开发者社区,这些区块链具有截然不同的数据和执行模型。在 Aptos,我们相信在 Move 上构建一个强大的开发者社区,并邀请他们基于 Aptos 堆栈上的 Move 进行构建并为开源软件做出贡献。

Move 基于以下原则构建:

原则解释
默认安全金融系统旨在确保用户不会丢失资金。Move设计用来防止整类攻击和错误,如重入攻击、双重支付和算术溢出。类型安全和编译时检查是安全性的核心。
运行时验证字节码可以在运行时进行验证,以确保一切正常,提供额外的安全性并防止恶意行为者。
形式验证Aptos上的Move提供了一种规范语言,用于提供合约的形式验证。这允许证明不变量并协助代码审计。
简单性命令和字节码故意设计得简单。这允许容易地进行反编译、运行时验证和代码检查。使用常规编程语言进行区块链开发通常需要忽略语言的大部分,以使它们适合智能合约(例如Rust)。

4. 为什么选择 Aptos 上的 Move?

Aptos 上的 Move 支持 Facebook 团队构建的完整语言,并增加了额外的扩展以提高安全性和开发者体验。

4.1 安全性

优势解释
形式验证Aptos 框架完全规范,并使用 Move Prover 进行了形式验证。这包括涉及治理、NFT和代币的核心合约。
燃气覆盖Move VM有100%的 Gas 覆盖率。Gas 根据系统的实际使用量(CPU、内存、存储、I/O)收费。换句话说 —— 没有 Gas 漏洞。
安全冗余运行时安全检查提供的安全性冗余。
权限控制可以灵活地在各个级别构建权限控制。例如,默认情况下存在 Token 级别的权限控制,以实现实物资产 Token 化。

4.2 开发者体验

优势解释
Move开发工具单元测试:Move 为所有合约内置了单元测试。Aptos 在框架中额外提供了测试功能,以测试不同场景。
覆盖率:覆盖率工具允许源代码和字节码级别的覆盖率报告。
反编译器:为了更好的安全性,链上字节码可以被反汇编或反编译,以提供对实际合约的可见性。
IDE插件:Aptos 支持两个主要 IDE:Visual Studio Code 和 IntelliJ
数据模型Aptos 拥有一个易于访问的数据模型,数据定义存储在链上。对象和账户可以有多个不同的结构,在易于解析的格式中。
可升级性可升级性确保应用程序接口不会被破坏,并且不需要下游应用程序的明确采用。合约可以简单地就地升级以修复错误。
交叉交互Move 允许使用类型安全的结构在合约之间进行交互。
代码存储Aptos 在链上存储源代码,提高了审计能力和确保合约到字节码的正确性。
赞助交易原生赞助交易支持允许交易由其他用户支付,无需特殊服务或特定合约代码。
健壮的代币标准数字资产和可替代资产标准提供了灵活性和统一的标准,适用于链上的各种类型的代币和数字资产。这些标准受到了 ERC-20、ERC-721、ERC-1155 和 Token-2022 等现有标准的影响。
链上随机性原生的链上无偏向随机性提供了一种安全且一致的获取随机数的方式,且在编译时有额外的安全检查。