为什么选择 Move?
Move 编程语言最初由 Facebook 的一支工程师团队为 Diem 支付网络创建。Move 旨在成为一个平台无关的语言,以支持在拥有截然不同数据和执行模型的多样化区块链上实现通用库、工具链和开发者社区。 在 Aptos,我们致力于构建强大的 Move 开发者社区,邀请开发者基于 Aptos 上的 Move 技术栈进行开发并为开源软件做出贡献。
Move 基于以下原则构建:
原则 | 说明 |
---|---|
默认安全 | 金融系统的设计目标是确保用户不会丢失资金。Move 旨在防止诸如重入攻击、双重支付和算术溢出等整个类别的攻击和漏洞。类型安全和编译时检查是安全性的核心。 |
运行时验证 | 字节码可在运行时进行验证,以确保没有出现异常,从而提供额外的安全性并防止恶意行为。 |
形式化验证 | Aptos 上的 Move 提供了规范语言以实现智能合约的形式化验证。这有助于证明不变性并辅助代码审计。 |
简洁性 | 指令和字节码设计得非常简洁。这便于反编译、运行时验证和代码检查。传统编程语言用于区块链时,往往需要忽略大量语言特性才能适用于智能合约(如 Rust)。 |
为什么选择在 Aptos 上使用 Move?
Aptos 上的 Move 支持 Facebook 团队开发的完整语言,并在此基础上进行了扩展,以提升安全性和开发者体验。
安全性
优势 | 说明 |
---|---|
形式化验证 | Aptos 框架已通过 Move Prover 完全规范并形式化验证。这包括涉及治理、NFT 和 Token 的核心合约。 |
Gas 覆盖率 | Move VM 实现了 100% 的 Gas 覆盖。Gas 按系统中的实际使用(CPU、内存、存储、I/O)计费。换句话说,不存在 Gas 漏洞。 |
安全冗余 | 运行时安全检查提供了安全冗余保障。 |
权限控制 | 可在不同层级灵活构建权限控制。例如,Token 级别的权限控制默认存在,以支持 RWA 资产的代币化。 |
开发者体验
优势 | 说明 |
---|---|
Move 开发工具 | - 单元测试:Move 为所有合约内置了单元测试。Aptos 还在框架中提供了测试功能以覆盖不同场景。 - 覆盖率:覆盖率工具支持源代码和字节码级别的覆盖率报告。 - 反编译器:为提升安全性,链上字节码可被反汇编或反编译,以便于审计实际合约。 - IDE 插件:Aptos 支持两大主流 IDE:Visual Studio Code 和 IntelliJ。 |
数据模型 | Aptos 拥有可访问的数据模型,数据定义存储在链上。对象和账户可以拥有多种结构,且格式易于解析。 |
可升级性 | 可升级性确保应用接口不会被破坏,且无需下游应用显式适配。合约可直接原地升级以修复漏洞。 |
跨合约交互 | Move 通过类型安全的结构体实现合约间的交互。 |
代码存储 | Aptos 将源代码存储在链上,提升了审计能力并确保合约与字节码的一致性。 |
赞助交易 | 原生支持赞助交易,允许其他用户为交易支付费用,无需特殊服务或合约代码。 |
强大的代币标准 | 数字资产和可替代资产标准为链上多样化的代币和数字资产提供了灵活且统一的标准。这些标准受 ERC-20、ERC-721、ERC-1155 和 Token-2022 等现有标准的启发。 |
链上随机数 | 原生链上不可偏倚的随机数为获取随机数提供了安全一致的方式,并在编译时增加了额外的安全检查。 |