Move 语言和资源模型

最近,基于Move语言的区块链项目即Aptos ,被广泛关注。截止到今天为主(09.13)Aptos,社区成员已经突破10w 用户,生态项目覆盖Wallet、DEX、DeFi、Web3、NFT和MemeCoin、Game & Metaverse等多个领域;据统计到的数据,生态项目已达250+。

自以太坊以来,出现了许多新的layer1 区块链,旨在解决已有公链尚未解决的的难题。区块链努力平衡去中心化、可扩展性和安全性的三难困境。其中大多数旨在实现可扩展性以促进使用率。Aptos 旨在解决困扰现有Layer1的可靠性、可扩展性和可用性问题,同时具有基于 EVM 的区块链缺乏的安全功能。

Aptos 以高性能著称,其背后是基于Move智能合约编程语言。关于Move 褒贬不一,有人称其为智能合约发展的未来,也有人持谨慎态度,认为其并无太多创新。在众多公链的角逐中,我们可以看到使用最为广泛的Solidity 语言、高性能的Rust 语言,基于Move 语言的是否能够胜出?

Solana/Rust 与 Sui/Move

《智能合约发展:Move 与 Rust 对比研究1》一文对Solana/Rust 与 Sui/Move进行比较,其关键点如下:

智能合约是关于数字资产的编程,现有的编程语言和编程模型并不能适用。我们希望能有一种语言模型,能够自然地与资源打交道,但同时又与不受信的代码互动。

基于Rust的Solana在这里做了妥协,它使智能合约在一个不信任环境中具备了必要的可编程性,但其编程模型并不自然。字节码验证使其有可能同时拥有这两种特性。在某种程度上,它把不受信代码变成了受信代码。

基于Move的Sui,核心创新之处在于字节码,被特意设计为可被验证。虽然字节码验证本身并不是一个新概念,但Move所做的验证确实是一种创新。通过其字节码和验证,Move实现了一个智能合约编程模型,对资源支持并保证在一个不受信任的环境中安全编程。

Move对智能合约开发的作用就像React对前端开发的作用一样。说“用Move做的事能用Rust做”就像说“用React做的事能用jQuery做”一样。当然有可能实现基于jQuery的应用,能够与React应用相当,但这并不实际。React引入了虚拟DOM的概念,这对开发者来说是完全易懂的的,但使前台的开发速度更快、可扩展、更简单。同样,Move的字节码验证是一种底层技术,对开发者来说也易于理解,但它提供了一个更符合人体工效学、可组合、更安全的智能合约开发。由于其安全性和更直观的编程模型,Move也大大降低了智能合约开发者的准入门槛。

Move对Solana的威胁

  1. 基于Move智能合约的开发时间要快得多。在Move中从头开始开发一个智能合约可能比在Rust中快2-5倍。因此,Move生态系统的发展可以超过Solana。由于区块链的开放性和无许可性,不存在严重的锁定效应。Solana的开发者可能纯粹因为经济考量而被迫采用Move——要么转到Move,要么被Move的开发者超越。

  2. Move的入门门槛比Rust或Solidity低得多。因为Move语法更简单,编程模型更直观。一些开发人员无法用Rust或Solidity进行智能合约开发,但在Move中可能能够进行。由于需要学习的概念较少,非智能合约开发者进入Move,要比进入Rust(Rust本身就是一种复杂的语言,再加上Solana的概念,如PDA,会给初学者带来很多困惑)或Solidity(你需要熟悉语言中非常精细的细节,如重入,以便能够开发安全的智能合约)容易得多。即使现有Solana和Solidity开发者不转向Move,尚未进入该领域的开发者市场也比该领域现有的开发者数量多出好几个量级。由于Move的准入门槛较低,且开发速度更快,它比Rust或Solidity有更好的产品市场适应性,可以从这块蛋糕中分得更大一杯羹。

智能合约简史:比特币与以太坊

除了以上对比之外,我们可以再回顾下比特币和以太坊。比特币的出现向世界展示了分布式账本技术是如何工作的,以及人们如何建立一个完全基于密码学的金融系统。比特币很强大,但只实现一个功能:记账。要扩展这种分布式账本模型以获得更多实用性,必须构建另一个区块链网络。如:用于加密传输的网络、内容网络,音乐共享网络等等。这就是以太坊作为可编程区块链平台发挥作用的地方,它允许构建和部署称为智能合约的链上程序。开发者部署不同的智能合约来创建加密货币或 NFT,或者构建共享相同底层基础设施的 DeFi 平台或 NFT 市场。

以太坊于 2015 年推出时,实际上无法看到它可以做什么,或者将在其上构建什么样的智能合约。现在,经过七年多的发展,从业者对dApp和区块链有了更好的了解。几乎所有能够更好地利用区块链特性的 dApp 都与资产或所有权有关。不同的编程语言用于各种功能。例如,SQL 或结构化查询语言与 JavaScript 不同。前者跨多个数据库对结构化数据执行操作,而后者用于开发交互式网页的跨平台应用程序。但是,尽管区块链的透明度、去中心化和防篡改使交易更加安全,但它在数据存储方面比传统的集中式金融系统更慢且成本更高。此外,尽管有一些量身定制的链上数据存储机制,但以太坊的智能合约语言和虚拟机(VM)大多基于中心化编程语言。它对数字资产和所有权等高价值数据的处理与客户十二生肖等低价值数据没有任何不同。由于大多数 dApp 处理的是高价值资产,它会促使黑客在区块链智能合约中寻找漏洞,发生了许多安全事件,导致大量资产损失。有些是故意攻击,例如 DAO 的重入黑客;有些是意外事故,例如 Parity 钱包的锁定。

Aptos的资源模型

Apots和Sui 都是基于Move的变体,通过采取不同的机制,来实现同样的功能。Aptos的资源模型如何解决以上问题的?本文对Aptos的新功能,进行回顾。

在 Move 语言中,有价值的资产作为资源单独处理。受 Haskell 和 Rust 中的线性类型以及 Rust 的所有权模型的影响,Move 中的资源受到一定的限制:

  1. 资源保证了安全,因为它们永远不会被复制或丢弃,总是只通过一次;

  2. 只有特定的指令才能创建或销毁资源,所以开发者只需要更加关注这些创建和销毁的过程,并正确实施即可;

  3. 这些资源存储在用户的存储帐户中。除了更高的安全保证之外,资源可以以与其他原生类型相同的方式使用。它们可以存储为数据结构并作为参数传递给函数或从函数返回。

由于这些特性,Move 模块(基于资源模型的智能合约)有很多好处:

  1. 安全性:用资源构建智能合约更安全。以太坊的常见攻击,如重入,几乎不可能发生在作为资源存储的资产上;

  2. 性能:由于资源存储在用户帐户中,而不是像以太坊的 EVM 这样的共享智能合约存储中,因此并行运行多个事务要容易得多。例如,以太坊上的所有 USDC 转账都必须按顺序运行。相比之下,Aptos 上的 USDC 转账仅在发送方和接收方的账户存储上运行,这使得并行交易变得可行。

  3. 公平性:在区块链上存储数据成本高昂,因为它需要多个账本管理员(也称为矿工)来保存数据记录。在 Aptos 上,用户的资源存储在帐户中,这使得收取存储租金成为可能。用户存储的资源越多,支付的租金就越多。这不仅在收取存储费方面是公平的,而且还鼓励用户删除无用的数据。

此外,Move的语法使其有可能用形式化验证来证明一个函数完全做了它应该做的事情,并且永远不会产生意外的结果。

结论

与其他区块链相比,具有资源模型的区块链有很多优势。它们可以实现安全性、性能和公平性,如果想把下一个10亿用户带到区块链上,这一点至关重要。Move的历史并不长,但我们有理由相信这是一项伟大的技术并给智能合约的发展带来革命性的变革。

暧昧贴