对话Jolestar:Move——为数字资产而生的智能合约语言

DAOrayaki热度: 13170

原文标题:DAOrayaki Podcast |对话Jolestar:Move语言特性 (入门篇)

原文作者:DAOrayaki

原文来源:DoraFactory

Facebook 在2019年发布数字货币项目 Libra 的那一天时,肯定没有想到,随后的故事是,Libra被迫转型为Dime,而Dime又最终以1.82亿美元的价格被Meta出售。这个曾经定位于,为面向数十亿人的全球货币和金融服务提供基础设施,一经推出便吸引了整个金融市场的高度关注的计划,看起来是无疾而终,但其实却给整个加密行业留下了宝贵的遗产——一个弥补了 Solidity 及 EVM 缺陷,并实际运用于,目前最具代表性的新Layer 1公链 Aptos、Sui 的编程语言,Move 编程语言。

今天DAOrayaki社区十分荣幸,邀请到Jolestar老师一起深入的聊一聊,当下最火的话题:Move—为“数字资产”而生的智能合约语言。全文如下文所示,喜欢听音频的朋友,可点击播客:https://www.ximalaya.com/sound/572268495

Shaun

Hello大家好,欢迎来到Yaki Talkie,我是主持人Shaun。

Facebook在2019年发布数字货币项目Libra那一天或许没想到,随后的故事是Libra被迫转型为Dime,而Dime最终又以1.82亿美元的价格被Meta出售。这个曾经定位于为面向数十亿人的全球货币和金融服务提供基础设施,一经推出便吸引了整个金融市场高度关注的计划,看起来是无疾而终,但却给整个加密行业留下了宝贵的遗产—一个弥补了Solidity及EVM缺陷,并实际运用于目前最具代表性的新Layer 1公链Aptos、Sui的编程语言:Move。

通常情况下,新公链上支持图灵完备智能合约的编程语言,主要有两种方式:一种是基于现有的编程语言进行裁剪,然后运行在WASM等通用的虚拟机里,这种方案的优势是可以沿用当前编程语言以及虚拟机的生态。

另一种是新造一个专门的智能合约编程语言以及虚拟机,从头构造语言以及虚拟机生态。我们熟悉的Solidity语言是这种方式,今天的Move语言也是这条发展线路。

由于Move合约之间的依赖和调用方式可以让它最大化的复用模块,适合一层一层构建智能合约的基础设施,而Move的“自由状态”模型,可以让数字资产在不同的合约之间流动,提供基于类型的组合性。基于以上两个特性,Move可以在分层扩容方案中发挥更大的价值,比如实现跨层的合约复用以及组合任意状态的跨层迁移。Move也由一个为Libra设计的智能合约语言演变成一个开源社区项目,成为多链设计的一环,让它可能被更多的公链等基础设施项目采用,从而构造更大的生态。

我的以上叙述,其间有一大部分内容,其实摘抄至我对Jolestar老师之前对Move相关话题的汇总。Jolestar老师作为Move语言最早期的研究者,实践者及坚定的布道者,一直在业内享有盛名及广泛的赞誉。今天DAOrayaki社区十分荣幸,邀请到Jolestar老师,抛开我上面那些“复制粘贴”性的半专业描述,与社区的小伙伴一起深入的聊一聊,当下最火的话题:Move—为“数字资产”而生的智能合约语言。欢迎Jolestar老师。

Jolestar

大家好我是Jolestar,也是Starcoin的核心开发者,Starcoin是最早采用Move作为智能合约编程语言的公链,并于去年5月在主网上线;同时我也发起了MoveFuns DAO,MoveFuns DAO的目标是打造一系列Move应用层的基础设施,以及让基于Move的应用可以在多链生态中更容易的迁移。

Shaun

欢迎Jolestar老师。在对Move进行深入探讨前,不免要追根溯源:Move语言是如何诞生的呢?其诞生背景与智能合约的发展又有着怎样的内在联系?

Jolestar

这可能要从2019年说起,当时的加密货币市场还处于熊市阶段,DeFi还没有大规模兴起。当时链上的TPS(一般指每秒交易处理量)有限,状态也有限,成本也很高,于是大家当时的共识是先从金融类应用做起,开始摸索有关链上金融设施的模式,Libra瞄准的也正是这部分市场。而为了弥补Solidity在面向DeFi建设时的一些不足,Move也应运而生。所以从这个角度看,原本Move会同“DeFi之夏”一同崛起,但因为各种机缘巧合错过了;但即使这样,Move仍为未来DeFi的进阶或下一个“形态”提供了突破口,发展空间仍然很大。

Shaun

DAOrayaki一直对整个行业的前沿技术保持着关注,所以在做调研时发现,Move一词在最近的中文与海外社区中频繁出现,有种全员皆Move的既视感。它为什么会突然爆火?发明新的编程语言是必要的吗?

Jolestar

其实有关链上到底需不需要智能合约,以及有没有必要搭载图灵完备的程序语言,一直有争议,但以太坊证明了图灵完备的智能合约语言是非常强大的。而有没有必要发明新的计算机语言,从纯粹编程的角度来看,不同的应用场景,设备或运行环境都可能催生新的编程语言,比如在Web2时期,大概2000年左右,有很多编程语言就是随着动态网页的发展诞生的。

而链的运行环境也与以往不同,链之前的服务器,移动设备,PC等,对应编程语言始终都面向的是操作系统,曾有类似极端的说法:“所有编程语言都是C语言的语法糖(指计算机语言中添加的某种语法,对原语言功能没有影响,方便程序员使用)”。也就是认为所有编程语言最终处理的事情都差不多:最底层是C语言,再之上分装了各种语法糖处理业务,内存,线程,文件系统等等。

但到区块链时代情况发生了变化,区块链上的智能合约将整个运行环境进行了托管。以往不断的发明编程语言实际上是为了尽可能将两个需求分隔开,一种需求是,如何处理技术性的东西?怎么调度,处理线程,最大化利用CPU与内存等类似问题;另一种需求是如何处理业务问题,也就是如何将需求转换成编程语言表达出来。以往的编程语言一直在折中这两个需求,很难完全分隔开。而区块链上的智能合约将顶层需求“屏蔽”了,只需要关心如何将需求通过程序表达出来,两个需求就以明确的方式被分隔开。

所以可以认为链为编程语言的发挥提供了新的“大陆”,那自然会有新的编程语言出现。但也有不同看法,有人认为如果把链理解成数据库,那实际上整个智能合约的运行过程很像冲突过程的表达,但实际上冲突过程在整个应用的构建里占的比重不大;包括也有人认为它只是脚本型的语言等。但我认为智能合约的应用场景不仅仅会在链上,同样可以延伸到其它的场景里。

Shaun

那Move语言在智能合约层面上,可以实质性解决哪些问题呢?

Jolestar

首先它将状态进行了拆分,现有的智能合约语言,无论是运行在何种虚拟机里,它的工作模式都是用虚拟机将合约分离开,虚拟机对应一套存储体系,只有对应合约有使用权限,即用虚拟机对外的一套接口汇集数据。但这种模式的问题是,一个用户的资产或数据,实际上是托管在不同链上的不同合约里,没有存在自己的状态空间里,这就涉及到数据所有权的问题。而Move是将数据存储在用户自己的状态空间之下,这样的好处是,如果要对链上用户的状态计费,可以比较容易的知道用户到底存了多少空间;其次从Layer1到Layer2的状态迁移会更便捷,不用通过映射的方式。

此外解决了合约之间的共享问题,原有模式下每个合约都是独立的,跨合约很难进行代码共享,这在抽象账号的背景下就会成为一个瓶颈,抽象账号也就是用合约去定义一个账号,但给每个用户单独部署一个合约,但是这种方式面临着用户升级的困难,因为每个合约的类型都不同,很难进行统一。但在Move里是用Account Model定义账号类型,它适用于所以账号,所有账号共享Account Model的合约代码,实现抽象账号的相应功能。

这也促使Move可以构造更复杂的DeFi生态,因为原有方式下,组合到一定程度就面临合约的体积大小等一系列问题,而Move都可以解决。

Shaun

细数目前常用的编程语言,包括C++,C#,JAVA,Python,GO,Rust以及Solidity等,那Move语言区别于这些语言的差异点是哪些呢?它先进在哪些地方?

Jolestar

在以往的编程语言中,程序无法感受“稀缺性”,因为程序无法主观判断数据(即信息)重要与否,能不能复制。但在虚拟机世界里,可以构造出一个表达稀缺性的“东西”,即所谓的线性类型(或叫线性逻辑),常用的例子是,用牛奶制造奶酪,牛奶=奶酪的表达为真,但多少牛奶才能推导出奶酪,传统逻辑是无法表达的,所以必须用线性逻辑增加一个“稀缺性”的表达。虽然Rust也曾尝试过解决内存稀缺的问题,但依然没有大规模普及。而Move语言可以清晰表达出“稀缺性”,这是它们之间的不同。

Shaun

那Move都适合哪些开发场景呢?

Jolestar

以EVM举例,EVM的很多指令是“强绑定”在链上的,脱离链的环境使用比较麻烦,需要再去模拟链上的参数,而Move是不需要的。同时“智能合约最大主义者”认为,智能合约只能在封闭环境里使用,所有软件都由合约构建,因为现在诸如钱包的安全问题愈发受重视,对于运行的软件是否在作恶你一无所知,而且即使作恶了也很难维护自己的权益。可行的方式是用第三方程序监控,要求软件提供不作恶证明,然后进行校验,如果判定作恶就对作者进行仲裁;同时用Move还可以提高智能合约的组合性,所以开发场景还是很广泛的,不只局限于链上。

Shaun

我觉得有关仲裁的场景还是很有亮点的,对于作恶问题确实需要借助类似仲裁机制去解决相关问题。

Jolestar

因为原有的维权方式成本过高,同时又要维护一个相对自由的环境,目前为了安全基本都是以中心化的官方应用商店方式来进行,但带来的审核效率以及其它问题还是无法避免。

Shaun

那Move语言目前的发展和应用的现状是怎样的?

Jolestar

Move语言本身已经有了好几年的发展时间了,相关新特性的开发以及安全加固工作也在进行。如果从Move的应用生态来看,Starcoin已经尝试了基本的DeFi类型,虽然也因为和Solidity语言不兼容会导致一些问题,但诸如Swap,稳定币,借贷,跨链桥,NFT以及其它可组合性都是可以构建的;而像Aptos,Sui也都处于早期开发或测试网阶段,也是最近几个月大家的关注度才逐渐被吸引,都还处于学习发展的阶段。

Shaun

聊到这可能就要提到大家比较感兴趣的“八卦”话题了,就是Aptos和Sui,这两个团队都曾是Dime的开发者,同时您也从事底层开发工作,您怎么看待这两条公链?

Jolestar

从技术的角度来看,Aptos和Sui的差异点还是很明显的。同时从Libra和Dime开始,Move就在变成一个面向多链的语言,所以提供了基于不同链的不同扩展能力或裁剪能力。

Shaun

所以同是Move语言,在不同的链上还是有不同的功能?

Jolestar

对的,不同的链对状态的处理也是有区别的,比如Sui的处理方式是用户操作一个叫Object的状态,在交易里先指定要操作哪些。有一点像Utxo的一种编程模型,Starcoin用的是Global Storage的编程模型。

Move的另一个差异点是,Move本身有Framework的结构,而Solidity没法提供这样的功能,因为本身合约之间的调用方式,无法在链上预布属一个系统合约让大家去使用,只能采用一些预编译的方法。同时Move的基础库是比较完备的,但因为不同链的技术不一样,对于构建多链应用也是一个挑战。这也是成立MoveFuns DAO的目的,实际上在软件构建上大家也倾向于发现一层有差异,再冲上一层,就可以实现某种程度上将差异屏蔽的目的。

Shaun

聊到MoveFuns DAO,您当时创建MoveFuns DAO的愿景是什么?现在MoveFuns DAO主要在做哪些工作呢?

Jolestar

目标主要还是希望在Move的多链场景下,多一些应用容易适配的手段;还有就是在从事教育和布道的过程中,一个相对中立的DAO,驱动起来会更方便。

Shaun

在最近Aptos和Sui带动Move爆火之前,Move语言就已经在进行不断的迭代升级了,但这期间似乎Move在中文社区中的宣传似乎有一些“失声”,您觉得这属于发展过程中的正常情况吗?

Jolestar

其实Move在国内火的要比国外早,事实上这也是反应了市场风向这件事很难预测,在各种机缘巧合下可能突然就火了,也可能是市场本身也在寻找新的热点。

Shaun

您对MoveFuns DAO的未来有什么规划呢?

Jolestar

技术方面主要还是想打造更多Move的基础设施,更好的适配多链,迁移的更顺畅;同时我们也制作了相关课程,启动了Learn to earn的项目,吸引大家来学,希望后期可以对接各种项目,孵化项目等,实现渐进的发展。

Shaun

其实也是一个边学边实践边建设的过程,这样也很好,很务实。

Jolestar

我们也是在Move还没爆火的时候就开启了这个项目,发现社区的参与热情也很高。

Shaun

那在Move爆火之后,您怎么看待Move对各公链未来发展的影响?

Jolestar

Move本身的生态蓝图也处在构建过程中,它可能不像ETH或EVM现在趋于成型,再想做改动时大家的态度都比较趋于保守。而Move在保证交集适配原有应用场景的情况下,也会适配更多的应用场景,保证可拓展性。历史上的编程语言多是公司去驱动成长,而Move是由社区去驱动。

Shaun

您会对刚入门的新手提哪些建议?比如从哪里开始做起?

Jolestar

首先得判断自身的程度,如果你对链和虚拟机,智能合约的相关概念有没有一定认知,其实无论是Move公链亦或是其它公链,本质上都差不多,所以了解了一个,其它也好触类旁通。如果连编程语言都不是很了解,需要做的就很多了,当然也有学习的第一门语言就是Move的情况。如果以上这些都比较熟悉了,那直接学习Move也只需要将思维模式转换一下即可。毕竟不同的人处于不同的阶段。

Shaun

谢谢Jolestar老师,今天我们从Move的起源聊到了全员皆Move现象出现的背后逻辑,以及Move可以解决的问题,跟其它语言的差异对比以及开发场景,包括聊到了MoveFuns DAO,我还有个比较感兴趣的问题,我本身也是从Web1走到了现在的Web3,我比较好奇您如何看待现在Web3的发展现状?您对Web3未来有什么畅想?

Jolestar

Web3本身是一个特别巨大的蓝图,大家也都在致力于往这个蓝图中填补东西,事实上现阶段的Web3或区块链,想拿出一个所谓已经落地的开拓性产品还是很难的。但即使如此,在绘制蓝图的阶段,想象力是至关重要的,现在毕竟还处于Build的阶段。那么大家Build的就不是基于所谓唯一范式,而是基于可能性。

在Web2时期纵使再优秀的应用也是属于某个公司,某个国家,这就牵扯到不同国家的不同法律体系的问题,这也就导致全球一体化是割裂开的,所以有关所谓互联网主权,我觉得更像公海,是大家基于一个框架性的规定进行自治。而Web3主张个人数据的所有权,只属于自己,这样也可以一定程度上解决这个撕裂的问题,但新的问题也随之出现:我们又何必重复“造轮子”呢?毕竟从效率等角度来看Web3目前的应用并不比Web2强,所以我认为Web3并没有到一个真正大爆发的阶段,很多基础设施还没有完善,如果只是简单“新瓶装旧酒”的将数据迁移到链上,目前任何一条链都承载不了这么多的应用和数据,成本过于高昂,也没必要。

Shaun

即使像Aptos这样的高处理速度也不可以?

Jolestar

不可以,并且也不是所有数据都一定要上链,比如我发一个微博或写了一篇日记,我也不希望将它放到链上。

从我个人观点我更倾向于Web3其实是P2P网络的成熟,因为P2P网络符合这样的假设,我将自己的数据存储在自己的设备里,有需要的时候同步给其它节点,公链这时起到的作用类似于将消息全局广播,起到同步的作用。

Shaun

经济学家布莱恩·阿瑟在《技术的本质》中写道,“新技术都是在现有技术的基础上发展起来的,现有技术又来源于先进的技术。将技术进行功能性分组,可以大大简化设计过程,这是技术‘模块化’的首要原因。技术的‘组合’和‘递归’特征,将彻底改变我们对技术本质的认识。”

Move是一种注重安全和灵活性的新型智能合约编程语言,其生态系统包含一个编译器、一个虚拟机和许多其它的开发工具。Move受到Rust编程语言的启发,该语言通过线性类型等概念来明确数据的所有权,Move强调了资源的稀缺性、保存和访问控制,并定义了每个资源的生命周期、存储和访问模式。这确保了像 “数字资产”这样的资源不会在没有适当凭证的情况下产生,且不能被重复消费,也不会消失。

你不能阻止一个人向自己的脚开枪,编程语言是一个工具,开发者用这个工具向自己的脚开枪的时候,编程语言本身能做些什么事情?智能合约让不同组织的程序运行在同一个进程中,最大化了编程语言的作用,但也带来了新的安全挑战。当然,新命题必然出现新问题,哪怕有更多的新问题出现,我们依然相信Move是一种可以提供更安全、更快捷、更简单的方式来编写智能合约的语言,它将成为一个强大而充满活力的开发者生态系统的基础层。而实际上,使用Move来构建下一代Web3应用程序以吸引更多的Web3用户的设想,今天已经在实实在在的发生着。

DAOrayaki社区一直保持着对Web3领域前沿技术的持续,深入,跟踪式的研究跟报道。我们在研究中发现,目前Move语言在整个Web3领域普及化的程度还很低。尤其是在中文社区,大家对Move的了解还处在很有限范围群体的阶段,介于Move语言可能对未来新公链发展所起到的至关重要作用,DAOrayaki社区觉得有义务跟责任让更多的小伙伴了解,熟悉,甚至参与到Move语言未来的建设中来。

而本期YakiTalkie作为Move语言专题报道的第一期,只是拉开了整个篇章的序幕,更多关于Move的精彩内容,尽请大家关注。

再次感谢Jolestar老师的倾情分享,让社区的小伙伴受益良多,谢谢Jolestar老师。同时也感谢DAOrayaki社区。今天相关讨论的音频晚些时候会上传在DAOrayaki官网,DAOrayaki.org的专属播客频道里。我们也会同时发布在国内的小宇宙播客平台,喜马拉雅FM,全球各大流媒体平台,例如苹果播客、谷歌播客、YouTube以及Spotify上,欢迎大家收听及订阅。我们下期不见不散。

责编:Lynn

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。 未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。