公链赛道烽烟再起--Move系新公链崭露头角

1年前
标签:公链0799
文章来源: 白说区块链

自区块链诞生以来,整个行业已经经历了几轮周期轮替。目前拥有最丰富生态、影响力最大的以太坊,由于性能问题和费用问题而饱受诟病,在周期中不断被后起之秀挑战。

上一轮周期中,涌现出了一批新的Layer1项目,如Solana、Polygon、Fantom和Near等,它们都试图在底层公链上进行一些改进和探索。

随着周期进入了新一轮熊市,一波新的公链正在崭露头角。其中,最受关注的,无疑是采用了Move编程语言的Libra系项目:Aptos和Sui。

2019年,当时的Facebook(现已更名为Meta)高调宣布推出全球流通的加密货币Libra(后更名为Diem)。后来由于监管等问题,Libra这个项目未能成型。但这也使团队意识到,要想真正建立有创新性的Web3项目,必须完全跳脱出传统领域,进入加密领域。

Aptos和Sui的开发者都曾是Libra的核心开发者,他们继承了Libra项目中的编程语言--Move语言,构建了这两条新公链。

本文将简单介绍Move语言的一些特点和这两条公链的现状。

Move语言

Move语言被称为是最适合编写智能合约的语言。许多人拿它来与目前主流的Solidity语言比较并认为其优于Solidity。主要是因为Move在诞生之初就被针对于区块链资产做了相关的优化。

资产安全

几乎每一个区块链项目都有自己的加密资产。资产的价值增长既是项目发展的结果,也是项目发展的动力。资产安全原本应该是项目发展的头等大事。但是加密行业频频发生的资产被盗、资产丢失事件让许多还未进入行业的投资者望而生畏。

根据慢雾的数据统计, 2022年上半年发生了DeFi 安全事件约 100 起,损失超 16.3 亿美元,其中项目缺陷与合约漏洞是四大原因之首。

Move是为操作数字资产而生的语言。最初Facebook团队开发Move语言就是为了服务于Diem,打造全球化的金融和货币基础设施。所以Move必须有能力对构成金融基础设施的各种资产和业务逻辑进行编码。

在Move语言中,更强调资产和资源。用他们的说法就是“First-class resources”。Solidity和大多数编程语言一样,将Token或者加密资产当做一个数值来处理,资产转移的过程则是通过对账户进行数值加减来实现,例如Alice要给Bob转10个token,就先将Alice的余额-10,再将Bob的余额+10。在这个对多个资产账户进行加减的过程中就容易产生安全性漏洞,必须依赖于代码的严谨性,才能保证财产安全。

但在move语言中,资产被重新定义为一个resource(资源)类型,不再是字符串或数值变量。Move 编程语言抽象了资源的四个属性,可复制( copy ) 、可索引( key )、可丢弃( drop )、可储存( store ),通过这四个属性的不同组合,用户可以方便的定义出任何类型的资源。资源优先的概念为程序员写出安全和有效的代码提供了很大的帮助。就像SUI 的开发团队编程工程师 Damir 说的:“一旦您开始像对象一样思考,而不是像在哈希映射这样的编程原语上构建的抽象思考,您就能时时刻刻知道自己在做什么,就像具有无限表达性和明确说明类型一样——过去是什么,现在是什么。”这种设计让对资源的操作变得更加具象,更清晰可见。

Move还定义了一些资源的特性:

如与账户进行绑定。Resource 数据必须要绑定在账户下面,所以只有分配了账户后才会存在对应的 Resource 资产,以及 Resource 只要取出后就必须有一个去向,要么将其作为返回值传递即流向一个账户,要么直接将其销毁。可以理解成 Move 的 Token 移动是转移,从一个账户转移到另一个,而 Solidity 则是加减法,先在一处减了,再在另一处加上。

再就是资产的访问权限。在 Solidity 中,数据集中存储在合约里,在合约出现漏洞的时候,一旦黑客获取到了合约权限,所有用户数据都将遭受攻击。

而在Move 中,数据存储在拥有它的帐户中,而不是合约中。Move中有许多模块,模块是可以创建、转移、存储资产的程序,类似于以太坊中的智能合约。Move 规定只有公共模块功能可以被其他模块访问。

每个 resource(对象)都存储在由所有者的帐户控制的模块里。想要访问或者修改模块时,必须有模块所有者的签名,签名者在 Move 中拥有最高级别的权限,并且是唯一能够将 resource 添加到帐户中的实体。此功能允许在智能合约中维护数字资产的所有权信息和特权。如果资产被发送到智能合约,所有权不会改变。在这种情况下,即使智能合约被攻击者攻破,资产也不会丢失。

架构安全

Move 在Solidity的安全事件中吸取了经验和教训,在 Solidity 的基础上,增加了很多的特性,在底层的安全设计上有很大的创新,让系统变得更加安全可靠。

Move语言有几个特点:

静态调用。那什么是静态调用?静态调用是与动态调用相对的。一个程序在调用另一个程序时,如果必须到运行时才能确定被调用的目标,则称该调用为动态调用;反之,如果程序在运行前即可确定被调用的目标,且在运行时无法变更该目标,则称该调用为静态调用。

Solidity中的调用都是通过动态调用实现的,由于无法确定调用对象,所以可能造成循环调用,这带来了很大的安全风险。例如 TheDAO 攻击、PolyNetwork 跨链攻击,就是类似的事件。

Move语言吸取这些教训,选择了静态调用的设计,降低了运行时程序崩溃的可能。

形式化验证。形式化验证就是通过数学的手段证明程序的安全性。Move团队为使用者开发了Move Prover工具,可以使用数学的手段来测试和证明合约的可靠性,开发人员可以在几分钟内运行测试,使他们能够在部署前就发现代码中的错误。

简而言之,Move是专门针对区块链资产和智能合约而创立的语言,在安全性和可验证性上都大幅优于Solidity。





AIcoin审核需要时间,导致文章会有延迟公布,无法及时提醒,大家可以关注一下我的公众号:白说区块链,欢迎与我交流,感谢各位的阅读!

 

 

注意!下方【资讯底部广告】联系方式非本人!!

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

评论

暂时没有评论,赶紧抢沙发吧!