复制成功

分享至

主页 > 数字货币 >

谁是区块链开发语言之王:Move、Solidity、Rust

2023.10.18

作者:DongHyun Kang,Xangle;编译:松雪,金色财经

1、简介

在Web3行业,重点是为用户提供无缝的体验。从这个角度来看,dApp构建在哪个区块链上并不那么重要,比起确保在不同区块链之间实现平稳用户体验的互操作性更为关键。在2021年和2022年,关于单体区块链和多链之间的激烈辩论不断发展。值得注意的是,Solana和Luna曾一度崭露头角,然后逐渐淡出,为Aptos和Sui抢占市场的关注创造了机会。

Aptos 和 Sui 都是 Meta 区块链项目 Diem(以前的 Libra)的后继者,有一个共同点——他们都使用 Move 编程语言。 本文重点介绍 Aptos,深入探讨其使用的 Move 语言和 MoveVM 状态机的特性,以及它如何与现有的编程语言和状态机(例如 Solidity/EVM 和 Rust/WASM)进行比较。

2、什么是Move?

2.1 Move 是如何诞生的

Facebook(现为 Meta)的 Diem 团队发现了区块链行业广泛采用的 Solidity 编程语言的两个局限性。 首先,Solidity 存在重入攻击和双花攻击等漏洞。 虽然采用 Solidity 的区块链网络(例如以太坊)通过共识算法减轻了这些攻击,但不可否认的事实是,该语言本身蕴藏着潜在的攻击向量。

其次,Solidity 无法并行化事务处理导致瓶颈。 为了防止双重支出,Solidity 要求顺序执行智能合约等交易。 这种顺序处理限制了速度,进而阻碍了区块链的可扩展性。

在这些担忧的推动下,Diem 团队(Meta 的区块链部门)受 Rust 的影响,开发了 Move 语言,以解决上述缺点。 虽然 Rust 是一种值得称赞的编程语言,但在用于编写智能合约时可能会导致冗长的代码。 随后,Aptos保留了原来的Move语言,同时融入了面向对象的编程模型,演变成Aptos Move。 同时,Sui 采用了一种称为 Sui Move 的面向对象语言。

2.2 Aptos Move/MoveVM 功能

Aptos 的 Move/MoveVM 经过精心设计,主要关注安全性。 此外,Aptos 简化了 Move 的合约代码并启用了并行处理,最大限度地减少了区块链攻击的可能性并最大限度地提高了可扩展性。 在本节中,我们将深入探讨 Move 如何实现这些功能。

通过 Move Prover 和资源模型增强安全性

形式验证涉及以数学方式证明软件的代码遵守特定的规则或属性。 Aptos 通过 Move Prover 工具利用形式验证来验证其智能合约的安全性。 Move Prover 可以通过应用形式验证来防御智能合约中潜在的攻击媒介,例如双花和重入攻击,同时还可以识别其他代码错误并确保稳定性。 与其他依靠共识算法来抵御双花和重入攻击的区块链不同,Move 通过其语言和工具主动解决这些问题。

Yd0FodsnUIym8tUuMnqOs9Wd8aKf4cBU8gO3GKpB.jpeg静态调度 VS 动态调度

XVFaU3VnG4pyNQfoApki6pzp1GBxMGkrgcq6lyg8.jpeg

此外,MoveVM采用静态调度来调用函数,以防止函数调用的重入攻击。 相比之下,传统的以太坊虚拟机(EVM)使用动态调度。 这两种方法的不同之处在于程序执行序列中函数调用的时序,通常按如下顺序进行:编译→链接→加载→运行→终止。 静态调度涉及在编译时调用函数,使智能合约能够在此经历初步的错误检查阶段。 因此,在MoveVM中,智能合约提前进入验证阶段,从源头上有效预防重入攻击。

事务并行处理

Aptos MoveVM 通过事务并行处理增强可扩展性。 为了实现这一目标,MoveVM 采用 Block-STM(块级软件事务内存)将数据库事务分布在多个线程之间以进行并行执行。 仔细观察 Block-STM 可以发现以下主要特征:

  • Block-STM 利用乐观并发控制并行执行交易并随后验证它们。 遇到冲突的事务会重新执行。

  • Block-STM采用多版本数据结构来防止写入冲突。 所有写入以及事务 ID 和重新执行的次数都存储在同一位置。 这确保了即使交易被重新执行,交易也会按照预定义的顺序进行处理。

  • Block-STM引入了协作调度程序来优先考虑子事务的执行和验证,从而指定事务线程之间的处理顺序。 Move 使用这种协作调度程序来防止事务之间的冲突并防止其失效。

  • 最后,动态依赖性估计用于通过估计事务的依赖性并识别相关事务来对事务进行分组。

  • 通过Block-STM,Aptos通过以下方式实现并行交易处理。 此外,虽然验证器之间的验证是统一的,但每个验证器之间的执行是并行发生的,从而进一步增强了可扩展性。 Aptos的事务并行处理总结如下:

    1. 用户生成交易并将其发送到网络。

    2. 验证器验证交易。

    3. 经过验证的交易根据动态依赖估计进行分组,同时每个交易组由验证器进行并行处理。

    4. 处理后的交易被编译成区块并在整个网络中传播。

    Aptos 代币标准增强了开发人员和用户的便利性

    免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

    加⼊OKEx全球社群

    和全球数字资产投资者交流讨论

    扫码加入OKEx社群

    相关推荐

    industry-frontier