新公链后浪Aptos、Sui强势来袭:Move将如何书写新篇章?_MOVE:movez币为何总跌

2019年,Meta推出了加密货币项目Libra,吸引了整个金融市场的关注,但随后Libra因监管限制被迫转型Diem。今年1月底,Diem以约1.82亿美元的价格被Meta出售。Meta的Libra和Diem计划看起来是无疾而终,但却给加密行业留下了宝贵的遗产——弥补了Solidity及EVM缺陷的Move编程语言以及衍生出的公链团队,比如最具代表性的Aptos、Sui和Linera。Move编程语言从最开始被推出以来,便被不少开发者誉为是最适合区块链的语言。随着最近Aptos和Sui等超新公链的强势出场,Move语言也被大家广泛的议论,并不断被与Solidity和Rust做对比。本篇文章我们将Move语言的金融属性,智能合约的安全性,灵活性,可组合性,以及Move语言和Solidity,Rust的联系和比较进行探讨,并追踪建立在Move语言上的新公链们的进展。一、Move的两大优势

目前最主流的智能合约语言是Solidity,和它相比Move最大的特点是安全,Move从语言、虚拟机、合约调用、合约运行等层面为智能合约提供了全方位安全保障,此外在可组合性方面,Move也提供了更优解决方案。下面将分别介绍Move这两个最大优势。1、从底层确保智能合约的安全性

根据慢雾此前的报告,2021年区块链安全事件导致损失超98亿美元。作为新兴的编程语言,Move语言在安全性上也做了不同层面的突破和创新。正如First-classResources的真正含义是「数字资产是一等公民」一样,Move是为操作数字资产而生的智能合约语言。相比其他语言,Move对Token资产进行了更为原生,底层的处理。Move语言专门将资产定义为一种Resource,与其他的数据区分开来。在区块链语境下,代币就是一种Resource,同时Resource数据必须要存储在账户下面,在交易过程中,资产必须要流向一个地方,要么转移到另一个地址,要么被销毁,代币不可被复制或被“双重使用”。而Solidity和绝大多数编程语言一样将Token作为数值变量处理,资产只是可以被加减的数字,一个地址的余额减少,另外一个地址余额增加,通过代码使得减少和增加的数字一致,因此只能通过代码逻辑确保资产的安全性。Resource则是在语言层面将资产的概念进行了封装,避免了资产凭空产生和随意访问,极大的提高了安全性。

Move代码示例先字节验证,后执行合约与Solidity采用编译器不同,作为一种可执行的字节码语言,Move具有内置的安全算法和字节码验证器,可以防止许多常见错误。Move合约代码要能被执行,必须先被验证,这使得合约可以免受编译器的潜在故障和可能遭遇到的攻击。Move从一开始就致力于建立规范文化,每个Move模块都有标准库。Move开发团队已经初步开发出专门的验证器MoveProver,用于合约的验证。目前,该验证器运行速度已有较大提升,开发人员可以在几分钟内运行测试,使他们能够快速迭代他们的代码。2016年造成以太坊的硬分叉的TheDAO事件,就是因为黑客利用了重入(Re-Entrance)攻击漏洞,这是智能合约中的经典攻击。有了Resource模型和字节验证,则不会发生这种攻击。以Solidity等语言为例,智能合约之间的调用是同一个进程内不同的智能合约虚拟机之间的调用,安全依赖于智能合约虚拟机之间的隔离。

Solidity等语言下,智能合约的安全依赖于智能合约虚拟机之间的隔离Move的做法则是通过MoveVM让采用Move语言的区块链具备确定性,将合约调用放在同一个虚拟机沙盒中,通过编程语言内部的安全性对智能合约的状态进行隔离,而非依赖虚拟机进行隔离。

Move通过编程语言内部的安全性对智能合约的状态进行隔离静态调用减少合约调用漏洞合约的调用方式可以分为静态调用和动态调用。若程序调用必须在运行时才能确定被调用的目标,则称该调用为动态调用;反之,在运行前即可确定被调用目标,且在运行时无法变更该目标,则称该调用为静态调用。动态调用允许程序里面可以写很多的函数、过程或者子程序,是一个灵活的语言机制。但灵活也意味着更容易出问题,动态调用不利于程序的推理,更不利于形式化验证,也更容易出安全问题,例如恶意用户通过循环调用制造恶意合约,造成多方的损失。Move语言采用静态调用,所有的合约执行路径都能在编译的时候确定,然后可以进行非常充分的分析、验证。开发者将问题暴露在合约编译的阶段,而非运行阶段,降低运行时出现宕机的概率。与以太坊EVM平台相比,Move模块系统不支持循环调用,完美解决合约重入漏洞。2、基于模块的可组合性:效率更高、更灵活

智能合约的可组合性是构建编程语言生态的另一重要特性。Solidity等语言生态的智能合约的组合基本是基于Interface间通过消息传递进行的组合。而在Move是基于Module间的组合,通过资源(Resources)的传递进行交互。以太坊上,当我们想扩展一些新的行为或者做一些实现上的优化,那我们需要重新定义过往的接口,同时也会影响旧的方法。而在Move中,合约的组合只需要对Module进行升级和优化,所有使用过这个Module的其他合约都会自动使用最新的版本。Move的Module功能类似于以太坊中的合约,但更类似于使用面向对象编程的银行。Module相当于给智能合约提供了统一的兼容空间,智能合约就像乐高玩具的各个部分,通过任意组合产生新的产品。按照3NJOYLab创始人Flex的解释,如果以建造一个汽车工厂为例,Solidity的做法是定义了这个工厂的生产标准以及流程,每一个想来造汽车的人都需要先造一个符合生产标准及流程的工厂,然后才能创造汽车。而Move的方式是工厂就只有一个,想要造汽车的人使用这一个工厂就能造出来大家都认可的汽车。Move通过Module间的组合,一方面,节省了合约占用的区块空间,一方面,让升级变得更加容易。同时,由于Module系统沿用了线性逻辑,可以很好地将数字资产的概念打包封装,并非常明确的将资源的定义和资源相关的行为进行拆分,这种面向资源的编程带来的表现力与可扩展性是其他语言无法带来的。二、Move和Solidity,Rust的联系和比较

相较于早在2014年就发布的Solidity,Move在区块链开发领域还是一种非常年轻的开发语言,需要更多的时间来证明它是一种足够安全并且不容易报错的区块链开发技术选项。Move和Solidity的主要区别

1、在金融属性上,Move将资产作为一种Resource,对区块链最核心的Token资产进行了更为原生,底层的处理。2、在合约的灵活性上,Move可以创建一次性指令。Move语言中的模块与以太坊智能合约有相似之处,但又不完全一样:比如在基于Move编写的Libra中,模块包含了代码,而数据则是在Resource中。从目标导向来说,任何一个基于Solidity的以太坊智能合约就像是一个发布在单一账户地址下的单例对象。而在Move环境下,单一模块充当了一个创建resource的配方,但是任何单独模块都可以用来创建可发布在不同账户地址下任意数量的resource,这也体现出Move的模块性的灵活。3、在安全性上,MoveVM采用语言层面的隔离,而非虚拟机方面的隔离。Move采用了静态调用,形式化验证。同时,为创建数字资产而设计创造的Move旨在用于开发出可定制化的交易逻辑,因此基于Move的每一笔资产都具有原生稀缺性,是独一无二的,并且拥有对应的访问控制属性。相比之下,Solidity并没有原生稀缺性检查,当有新代币生成时,开发者必须通过手动查询其稀缺性是否满足,即代币的总供应量是否满足;并且,Solidity也不具有原生的访问控制检查,开发者必须另外创建像onlyOwner这样的修饰器。在Move环境中,对于任一智能合约中的数据只能在该合约范围内进行修改,而无法通过外部合约进行修改;而在Solidity中,数据修改并不限于所在智能合约内。因此相比Move中对于合约内数据的修改范围限制,Solidity少了一层安全保护。对于所谓的修改范围限制,可以用下面一段代码举例说明:只有在Currency模块范围内可以对Coin的数值进行修改。

Move的Module属性4、在性能上,Move作为一种解释性语言,它的每行代码都需要在运行中单独进行评估。由于Move代码需要在运行中进行评估,Move的性能表现可能不如Solidity以及其他编译语言。不过,这也避免了Solidity中常见的bug,是出于安全性考虑的一种折衷策略。目前,完全基于Move所构建的区块链生态还十分有限,并且用Move所创建的智能合约暂时也无法移植到现有的其他区块链。尽管如此,开发者可以通过在EVM中运行大多数应用程序,并在Move中做出对应的必要修改来替换旧程序。Move和Rust之间的联系

另外,在我们比较Move和Solidity的同时,也需要提及与Move十分接近的Rust,或者更准确的说,Move是建立在Rust的基础上,但又不同于Rust的一种新语言。Rust首次发布于2011年,比Solidity更早,并且不同于经常出现安全性问题的Solidity,Rust的诞生同时兼顾了安全性和运行性能,从代码语法上来看,Rust接近于传统编程语言C++,所以具有高效的运行性能,但又为内存提供了安全保障。Rust是Solana生态开发者的必学语言。在开发过程中,Rust环境中的bug可以在程序汇编时被发现并消除,这一点与使用Move开发时,在运行中逐行评估代码、避免产生bug,异曲同工。而且,Move中的模块与resource也和Rust环境下内置的依赖项管理器Cargo有着相似之处。正因为Move与Rust的紧密联系,很多Solana生态中熟练使用Rust语言的开发者都开始往像Aptos和Sui这样基于Move的新兴区块链生态进行迁移。三、MOVE生态下的新公链建设

Move生态下已有Aptos,Sui,Linera,Starcoin等公链部署,它们都在Move语言的基础上做了自身的拓展。本章节将对Aptos,Sui,Starcoin进行介绍。Aptos

项目简介Aptos起步于今年2月初,团队的开发人员有Diem的创始团队成员和核心开发者,团队对于Aptos的构想与对Diem的构想有高度的相关性,开发Aptos一定程度上是对Diem开发的延续。Aptos主打Layer1上的交易的并行执行,以及高性能,试图用一条链解决去中心化、安全、高性能这组「不可能三角」。当前该网络每秒可处理1万笔以上的交易,理想状态下,Aptos主网每秒可处理16万笔交易。Aptos此前拿到了3.5亿美金的投资,现在属于Move系公链中进展最快的。Aptos上的Move语言Aptos通过适配器层扩展了核心MoveVM的附加功能,其中包括通过Block-STM实现的并行性,无需用户输入即可并发执行事务,用于在帐户中大规模存储、存储密钥的表,以及解耦的细粒度存储在帐户中的数据量会影响与帐户相关的交易的GasFee。开发进展今年3月Aptos启动了开发者测试网,5月Aptos启动激励测试网注册,并将激励测试网分为4轮:「去中心化启动」、「质押」、「治理和升级」以及「动态验证器拓扑」。当前其测试网络已经达到了2万多个节点,使其成为当今最大的已知权益证明节点社区。Aptos第三轮激励测试网活动AIT-3将8月30日正式启动,9月9日测试结束,Aptos主网将于今年秋季上线。生态发展今年6月底,Aptos推出了2亿美元的生态系统资助计划,吸引了超过100个项目在Aptos构建。从生态布局来看,Aptos仍以基础设施建设为主,部署应用的场景多是钱包、DEX和借贷协议等产品,值得关注的有超并行CLOB协议Econia、移动多签钱包hive、可集成应用程序的加密钱包Martian、借贷协议NjordFinance、交易聚合器HippoLabs、AMM交易应用PontemNetwork等。Sui

项目简介Sui是由前Meta工程师创立的MystenLabs建立,引入了不可变状态,试图在Move中实现类似UTXO的编程模型。Sui专注于高TPS和低延迟,没有设置TPS上限,具有良好的扩容能力,降低用户的交易成本。在今年3月的测试当中,Sui的TPS达到12万。Sui正在以20亿美元估值完成至少2亿美元的B轮融资。项目特性链上存储及其扩展性。SuiMove中没有全局存储,存储只发生在Sui存储内,而不是Move存储中。Sui的存储低成本且可水平扩展,使开发人员能够定义具有丰富属性的复杂资产。高性能&高扩展性:Sui横向扩展以满足应用程序的需求。MystenLabs表示,Suiauthorities理论上可以有效地无限扩展网络吞吐量,以满足建设者和创造者的需求。截至2022年3月19日,在8核M1MacbookPro上运行的未优化单一workerSuiauthorities可以每秒执行和提交12万个代币传输事务(TPS)。开发友好:MystenLabs还将发布SuiDeveloperKit开源工具包,让开发者减少调试智能合约、等待审核或构建基本技术堆栈元素的时间。SuiDeveloperKit的三个构建模块包括游戏SDK、引导社区的SDK和HandshakeSDK。Sui上的Move语言Sui在使用Move时,它对Move的核心功能进行了某些更改,尤其是在全局存储运算符和关键能力方面。这些更改保留了Move的安全性和灵活性,但优化了存储和地址机制,从而提高了网络性能并减少了交易确认时间。开发进展Sui于5月上线Devnet,允许开发者使用Sui网络,截至7月已有超5000个节点在Devnet上运行。本月,Sui将启动激励测试网,目前已启动激励测试网注册。测试网将分为:网络、质押、升级等不同阶段。生态进展目前公开信息的项目有8个,类别涵盖钱包、NFT、链游、元宇宙等。从目前项目布局、Sui对游戏提供解决方案来看,NFT和链游有望成为其生态比较有特色的板块。Starcoin

项目简介Starcoin基于增强版PoW共识机制,是较早在Move上部署主网的新公链。Starcoin在探索Layer2乃至Layer3的分层扩展模式,具有较好的可扩展性,状态能够安全无缝转移,数据能够轻松快速扩容,拥有较低的延迟和较好的操作性。开发进展Starcoin于2021年5月上线主网,Starcoin主网目前已稳定运行一年多时间。StarcoinLayer2将于今年9月提供测试网络。生态发展Starcoin生态包括钱包、CEX、DEX、矿池、稳定币、NFT、链游等七类,主要围绕STC挖矿,交易等展开。代币STC是Starcoin的原生代币,发行总量为3,185,136,000STC,总量恒定。主要用途有1.支付交易的gas费用2.支付状态空间费用3.用于链上治理投票。STC的代币经济模型显示,国库是经济模型的中心,国库将区块奖励分发给矿工,将国库资金分给DAO,矿工和DAO将STC投入生态,链上生态收益最后回归国库,实现经济模型自举。结语

总体来说,Move面向金融属性的智能合约框架使得其与支持去中心化金融应用的部署天然适配。Move语言在智能合约的安全性,可组合性,以及灵活性上的创新为其生态发展,DeFi、NFT等去中心化资产的安全等提供了多方位的支持与保障。我们相信,有着强金融机构背书和强技术背景支撑的Move语言以及Move系新公链,将会给区块链行业带来全新的叙事。随着越来越多的开发人员,行业资源进入到Move生态,我们将不断见证这个面向资产编程的语言的魅力,同时也有更多捕获到新公链们带来价值的机会。原地址

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:171ms0-3:228ms