Solidity 最强对手:MOVE 语言及新公链崛起
作者:BuidlerDAO
Jason |@Jason_chen998|研究员
Frank |@MonolithMatrix |BuidlerDAO研究员
Move 小王子 |知乎:手把手写 Move 智能合约
新一轮公链叙事中有两个亮眼趋势:一是以 Move 编程语言为核心的高性能新公链,二是以 Celestia 为代表的模块化区块链。借助本文,我们简单聊一聊最新崛起的 Move 语言系公链三巨头,以及从技术视角出发,他们背后的 Move 语言究竟好在哪里。
文章速览:
01/ Move 语言系公链三巨头的崛起
02/ 当前赛道霸主:Aptos
03/ Resource 特性:Move 真正实现了数字资产化
04/ 技术差异总结:Solidity v.s. Move
05/ Move 未来展望与课程学习
1. Move 语言系公链三巨头的崛起
-
2019年,Meta(原 Facebook)全球流通的超主权数字货币项目 Libra 问世,谁料想出道即巅峰,随后因监管限制被迫转型 Diem 无疾而终。今年 1月底,Diem 以约1.82亿美元的价格被 Meta 出售。Libra 与 Diem 团队在这一过程中,留下了宝贵的遗产——弥补了 Solidity 及 EVM缺陷的 Move 语言以及衍生出的公链团队,比如最具代表性的 Aptos、Sui 和 Linera。
-
2021年12月,起步最早的 Sui 公布了 3600 万美金的 A 轮融资,资方包括 a16z 与 NFX、Scribble Ventures、Redpoint、Lightspeed、Electric Capital、Samsung NEXT、Slow Ventures、Standard Crypto、Coinbase Ventures 等。
-
2022年3月,Aptos 完成 2 亿美元融资,同样由 a16z 领投。
-
2022年6月,Linera 宣布完成 600 万美元种子轮融资,本轮融资的领投机构还是 a16z,参投机构包括 Cygni Capital、Kima Ventures 和 Tribe Capital 等。
-
2022年7月, Aptos 完成 1.5 亿美元融资,FTX Ventures 和 Jump Crypto 领投,a16z、Multicoin Capital 和 Circle Ventures 等参投;同时 Sui 爆出正在寻求2亿美元 B 轮融资,估值已经达到20亿美元。
-
2022年8月,Aptos 宣布将于8月30日启动激励测试网3(AIT3),项目方宣布 AIT2 非常成功,有超过 225 个社区节点参与测试,分布于全球 44 个国家和 110 个城市。按照项目路线图,主网将于该测试网结束后上线。
不难发现,a16z 刻意押注“Move 语言系公链赛道”,希望三条公链跑出下个周期龙头。Move 语言的三足鼎立态势也在形成。
三条公链当中,开发和生态进展最快的无疑是 Aptos。截至目前,它有着相比较更强大的社区、更活跃的开发人员和更健全的 dApp 生态系统,我们在本文第三部分详细拆解。
排在第二位的 Sui 已经发布了自己的 Tokenomics($SUI) 白皮书。其经济模型有一个独特特点:计算费(computation fees)与存储费(storage fees)分开支付。当用户提交链上数据时,他们会同时支付存储费与计算费(俗称 GAS)。
计算费会进入 Stake rewards 完成分配,部分转移至 Storage Fund;存储费直接转入 Storage Fund,随着网络的增长和成熟,该基金用于补贴未来存储成本的增加。这一设计将链上数据的存储权回归用户,用户可以选择删除链上的数据来取消存储费。此外,Sui 的开发工具包(SDK)尝试连接其他生态系统和非加密应用,包括 Gaming APIs、SuiEcho、Handshake 等有特色的 SDKs。但其生态应用布局与 Aptos 相比非常寒酸,公开报道中仅有数个钱包相关的生态项目。
相较于 Aptos 与 Sui,Linera 显得起步较晚且更加低调,在今年6月18日发布的官方推特中仅展示了官网链接及使命。参考蜂巢 Tech《新生代公链再攻不可能三角》中的研究:Linera 致力于能将这两个支付系统的速率引入到应用型的区块链网络中,使链上用户的操作在几分之一秒内就能得到确认。
在网络性能方面,Linera 提出了「线性扩展」的概念——通过增加机器数量来使系统容量加倍。目前,区块链优先考虑「顺序」执行的模型允许账户和智能合约在一系列交易中进行交互(如闪电贷),但阻止了线性扩展。在Linera 的线性扩展模型中,不同用户帐户的操作可在不同的执行线程中同时运行。
2. 当前赛道霸主:Aptos
根据蜂巢 Tech 的报道,今年3月 Aptos 启动了开发者测试网,5月 Aptos 启动激励测试网注册,并将激励测试网分为4轮:「去中心化启动」、「质押」、「治理和升级」以及「动态验证器拓扑」。当前其测试网络已经达到了2万多个节点,使其成为当今最大的已知权益证明节点社区。Aptos 直言,社区的发展远远超出了他们此前最疯狂的预期。而根据计划,Aptos 激励测试网的剩余两个阶段预计会在接下来两个月间完成,到了9月底,Aptos 就将启动主网。
虽然长期来看,新公链最后赢家尚不明确;但是短期来看 Aptos 无疑占据着“Move 语言系公链赛道”王者地位,这由其开发速率和生态建构共同奠定。
Aptos 的明星团队让其在创立初期就收到众多明星资本加持。根据 ForesightNews 报道,其联合创始人兼首席技术官 Avery Ching 曾在Facebook 担任首席软件工程师超过 10 年,并且是原 Meta 旗下加密平台 Novi 团队的技术负责人;Alden Hu、David Wolinsky 等大部分开发团队都参与了 Diem、Novi 的开发。
其设计重点是绝对安全、可扩展性和可信的中立性,最终目标是能够在一秒钟内处理 10 万甚至 16 万笔交易。在这样的强技术团队下,Aptos 也充分展现了自己研发战斗力,打造了如下突出的边际优势:
-
Aptos 团队对其共识机制-拜占庭容错(BFT,理解此概念的可参考 CSDN 这篇文章:https://blog.csdn.net/qq_40713201/article/details/124618644)进行了四次迭代,以实现高事务吞吐量、低延迟与高稳定性,在三分之一的验证节点故障时,仍能保证稳定运行。
-
有望比老牌公链有更快的交易处理速度,根据 Aptos 测试网数据,当前该网络每秒可处理1万笔以上的交易,理想状态下,Aptos 主网每秒可处理16万笔交易。公开资料表明,近期有机构对各大公链的速度进行了测试,Aptos Max TPS 远超包括 Solana 在内的老牌公链。
-
Aptos 在7月正式公布 30 余个生态项目,虽然众多处于测试网和开发阶段,可交互的只有钱包和 DEX,但是相比较于其他 Move 语言生态公链遥遥领先。如今公布的生态项目类型包括钱包(Hive)、DEX(Pontem Network)、流动性协议(NjordFinance)、NFT(Topaz.so)、浏览器(Aptosscan)及数据分析工具(Dapptos View)等主流 dApp 赛道。
-
充分利用 Move 开发语言与当前主流公链 Solidity 语言差异化竞争。我们接下来从技术视角详细解读 Move 语言关键优势。
3. Resource 特性:Move 真正实现了数字资产化
Move 语言被誉为最适合编写区块链智能合约的语言之一,并且多次被拿来与目前主流的 Solidity 进行比较并力压其一头,主要原因是 Move 对于区块链最核心的 Token 资产进行了更为贴合的处理,弥补了Solidity在直观性和安全性的缺陷,这里我们单独将其最具有特色的 Resource 类型进行重点讲解。
因资产上链使得安全问题成为了区块链核心要解决的问题。在 Web2 中如果产品 Bug 或者数据泄露,难以导致用户资产损失,最多引发产品崩坏或个人信息泄漏、黑市贩卖,但是因为资产上链使得智能合约一旦出现了 Bug 就会直接导致背后无数的用户资产外流或者被锁死。
我们也可以经常从新闻看到黑客对某些交易平台或跨链桥进行攻击产生了数以亿计的资产损失,BuidlerDAO 之前也产出过大量的研报对这些事件进行研究,大部分都是因为合约出现了比较低级的问题被黑客盯上所导致的。这引发了一个需要读者注意的关键属性:Solidity是面向区块链智能合约的编程语言,但不是面向区块链链上资产的编程语言。
为什么这样说呢?举个例子,Solidity 和绝大多数编程语言一样将 Token 作为数值变量处理,就是将 Token 的转移过程是进行加减法操作的,即张三要给李四转10块钱,于是则先将张三的余额-10,再将李四的余额+10。
所以在 Solidity 中资产就是一个可以被加减的数字,那么这里面就需要合约代码非常严谨,比如在进行加减法操作时出现了一些问题,给张三-10,李四+20,或者张三-0,李四+10呢?因为这个过程就是通过很多代码逻辑去来回在若干个钱包中进行加减操作,很难保证不会出现一些问题。
究其原因是资产在 Solidity 中没有被特殊定义,只是将其看作和年龄、电话等一样的变量。而资产的定义本就应该是独一无二的,就像是在物理世界中,我手里有一块金条,我要将它给某个人,不论给予中间的过程是怎么样的,这个金条不会从1根变成2根。所以我们常说的数字资产,在 Solidity 中只可称之为可以被加减的数字,而谈不上资产。
Move的可编程 Resource 是其变得安全且强大的核心,实现了真正意义上的数字资产化。Resource 是一种数据类型。数据类型即定义一种数据结构的方式:
-
字符:比如姓名、住址,是 String 类型;
-
数字:比如年龄、电话,可以是 Int 类型;
-
是否、对错:一些对立,则可以用 Boolean 的 Ture 和 False 来表示。
Move 认为 Token 资产是一种很特殊且重要的数据,不应该用普通的数值类型来定义和表示,所以单独创建了 Resource 来定义链上资产。这种方式呈现出三个特性:
-
Resource 在 Move 中依然是以一个数值的形式存在,可以作为数据结构被储存,也可以作为参数被传递和返回。
-
Resource 可以安全的表示数字资产,它的特殊在于不能被复制,丢弃或重用,但是它却可以被安全地存储和转移,并且 Resource 类型的值只能由定义该类型的模块创建和销毁,所以其实现了资产的含义而非数字。
-
Resource 适配了区块链应用特性,如与账户进行绑定。Resource 数据必须要存储在账户下面,所以只有分配了账户后才会存在对应的 Resource 资产,以及 Resource 只要取出后就必须被“使用”,用内置的 Move_form 方法将资产从账户中取出后,要么将其作为返回值传递即必须要流向一个地方,要么直接将其销毁,这意味着资产取多少就用多少。还记得 Solidity 是如何操作的吗?它将一个地址的余额减少,再去另外一个地址增加,然后通过代码使得减少和增加的数字是一致的,所以在 Solidity 是完全靠代码逻辑强硬的实现了资产使用,但是 Resource 则是在底层将资产的概念进行了封装而非加减法,避免了资产凭空产生和随意访问,极大的提高了安全性,可以将 Move 的 Token 移动看作是搬砖,从一个地方搬到另一处,而 Solidity 则是加减法,一处减了,另一处加上。
综上所述,Move 是一种更加原生且贴合的专用于发行数字资产的编程语言,它实现了程序与数字资产的直接集成。
4. 技术差异总结:Solidity v.s. Move
从 Bitcoin 的 Script 过渡到 Ethereum 的 Solidity,经历了 DeFi 的洗礼,Solidity 无疑是成功的。但是分析最近半年那些历历在目的安全漏洞,例如 PolyNetwork、Horizon、Nomad、Solana等等,让人不寒而栗。对比不可能三角,如何保障链上资产的安全,已经成了整个行业急需面对的主要问题,a16z 正是看中了这一潜在的刚需,一口气领投了 Move 的三大公链。
未来拥抱 Web3 时代,在这些漏洞的背后,VM 也在不断的查缺补漏,例如修复原来的溢出问题,但是底层设计上的缺陷很难有质的改进。不同于以往的开发经验,DeFi 应用本质上是开源、透明的金融系统,对于安全性有极高的要求。所以针对金融场景,设计更安全可靠、低门槛的智能合约语言也许不失于更好的选择。这里我们深入对比一下 Solidity 和 Move:
从上面可以看出,Move 在 Solidity 的基础上,增加了很多的特性,具备极好的安全性和工程能力。Move 从 Solidity 真实的安全漏洞中吸取宝贵的经验教训,在底层的安全设计上有重大的创新,在保证语言表达能力和灵活性的同时,也让开源系统更加安全可靠。
举个栗子,假设有100个 Token,在 Solidity 中,黑客能够轻易的将100个 Token 复制成更多的 Token(参考无限增发的漏洞)。但是在 Move 中,只要将 Token 定义成 Resource 类型,从虚拟机层面保证 Token 是不可以复制和修改的,黑客绝对不能通过复制来盗取 Token。
对 Move 来说,类似的优点很多:
-
面向资源编程
Move 专门针对金融场景进行了增强,引入了面向资源编程。对于 FT 和 NFT 等常用场景,Move 将数据定义成资源,能够从虚拟机层面保障了数据的安全。
-
纯静态语言
动态调用是 Solidity 的基石,所有的跨合约调用都要通过动态调用来实现,例如 DelegateCall,但是也是大部分安全漏洞的入口,例如 TheDAO 攻击、PolyNetwork 跨链攻击等等。鉴于 Solidity 的真实经验,Move 采用了完全纯静态的实现,更好的保障链上资产安全。
-
形式化验证
形式化验证是 FV(formal verification)是指使用数学工具分析设计可能行为的空间,而不是计算特定值的结果。也就是说,通过数学的手段证明程序的安全性。Move 自带形式化验证的工具,我们可以使用数学的手段来测试和证明合约的可靠性,这是 Solidity 不可比拟的优势。
-
分散存储
Web3 时代,用户掌握数据是所有权。Solidity 是通过 Map 的形式,集中存储合约数据,在合约出现漏洞的时候,例如获取到了合约 Owner 权限,所有用户数据都将遭受攻击。Move 巧用 Resource,能够将数据分散的存储到每个用户自己的 Account 下,既保证了数据的安全,又真正的做到了数据的所有权归用户所有,合约的 Owner 没有修改数据的权限。
-
面向泛型编程
出于安全的考虑,Move 设计成了纯静态语言, 但是灵活性并没有因此而减少,Move 通过面向泛型编程,保障了合约的扩展性,增加了代码的复用能力。
5. Move 未来展望与课程学习
从 Script 到 Solidity 是合约表达能力的变革,从 Solidity 到 Move 是合约安全能力的变革。
Move 是对开发者友好的。Move 语言的宗旨就是,降低开发者的安全门槛。合约开发者可以专注于业务逻辑,无需在代码安全上面花费很多的心思。只有让合约开发者在无感的情况下写出高安全性的代码,远离那些低级 Bug 导致的安全漏洞,才能让 DeFi 更安全,才能让用户更放心。Move 还有很多优良特性(例如工程能力)我们未在本文展开说明,但是非常值得探索的方向。
在研究新公链这一火热话题中,我们研究员不约而同发现理解本轮新公链叙事,必须懂得 Move 技术细节与公链技术创新。