LibraMOVE语言将会改变智能合约开发生态

原创
1975 天前
17164


- PART1 -

导语

火讯Facebook Libra周线上访谈第一期和第二期收获了高度的关注,传统媒体和区块链媒体矩阵的支持,让火讯决定第三期和第四期推出总共11位嘉宾“马拉松式”的线上演讲沙龙,两期总时长长达10个多小时,可谓真正意义上的“信息马拉松”,超级课程!为了让大家更清晰的了解大咖观点,我们将前四期同类型角度嘉宾观点分别从监管、经济、技术三个方面做了整合,以下是对Facebook 稳定币Libra技术的解读。


-PART2-

精华集锦

安比实验室创始人 郭宇:

  • 未来可能会出现一种专门发币的语言,FBLang。
  • 站在以太坊的肩膀上,Libra MOVE语言将会改变智能合约开发生态。

中国移动通信联合会区块链专委会首席安全专家 黄连金:

  • MOVE最好的一点就是定义了Resource就是资源。
  • MOVE从安全性,可扩展性、可形式化证明方面确实有它的独到之处。

金山云区块链部门总经理 朱江:

  • 无所谓哪条链或者哪个技术一统江湖的说法,核心还是产品。


-PART3-

讲座实录


01

郭宇:“站在以太坊的肩膀上,Libra MOVE语言将会改变智能合约开发生态”


主持人火讯财经主编赵一丹:欢迎安比实验室创始人郭宇从技术角度分析Libra

 

郭宇:感谢火讯的亲们,感谢这里的老朋友,新朋友们。我就随便聊聊 Libra Move,尽量不太技术。

前几天,写了一篇短文,介绍move语言,我个人感觉这是 libra 整个技术架构里面非常充满想象力的东西,然后这几天团队就逐步开始看比较细节的目标。但是出乎我的意料,也出乎我们团队的意料,Move 语言这个看起来很美的新技术,目前处于非常非常早期的地步。

刚刚 我还和上海交大的曹教授在聊Move语言白皮书里面的各种错误,不仅仅是Move语言白皮书写得非常草率,在看了Move语言的代码之后,发现代码实现的完成度也很低。 

或者我不应该用“错误”这么扎眼的词,应该说白皮书充满了各种“令人疑惑”的内容。这几天媒体充斥了 对 Facebook Libra 的赞誉,但是可能去真正看代码的人很少。

 

张曦:当年看ETH发布Solidity,我一直认为这是个错误,应该基于一个已有的语言发布一个library来提供希望实现的功能,而不是从头开始打造一个编程语言。我看solidity语法非常别扭,更重要的是,似乎也没有什么是不能用一个其他语言(python、go)的library不能实现的。Move还没看,是不是也存在同样的问题?

 

郭宇:张老师说的非常好。待会跟您好好探讨关于语言设计的问题,看得出来您在这方面功力深厚。

我第一遍看 Move 白皮书的时候,感觉这是个野心很大的项目,之所以说野心很大,我有两个理由:

第一个:Move 语言的针对性很强,这和其他公链的智能合约语言非常地不一样。Solidity语言本身是一个通用型编程语言,他的语法和Javascript有点类似。接下来是 EOS, 用的是C++,接下来的各种靠谱和不靠谱的公链项目都不约而同地采用了“通用型”编程语言,而Move一上来就只打算做好一件事,那就是说「数字资产」。

而且Move 语言的设计从整个架构上践行:面向资源,面向数字资产的编程,所以不难理解为啥 Move 要重新造轮子,因为没有任何前人的工作可以借鉴。

第二个「野心很大」的理由:通常来说,编写智能合约的是什么人呢?是码农,是我们程序猿,专业点说:智能合约工程师,但是Move 语言本身并不是「直接」用来开发智能合约的语言。

Move语言是一个中间语言,所谓的 IR,通俗地讲未来可能会出现一种专门面向数字资产的开发语言,暂且先称它为 “FBLang”。用这种语言编程,可能是出乎想象地简单,每一位金融大神,没必要再去雇一个智能合约工程师了,自己就可以操刀。这种 FBLang -> Move IR -> Move Bytecode,中间经过若干次的编译,最终可以部署到 Libra 上。

当然理想状况下,各种好用的工具直接鼠标点点就好了。当然除了FBLang,之外,可以加上各种金融衍生品合约语言,房地产资产管理语言、汽车资产、游戏装备等。

熟悉以太坊的朋友都听说过 ERC20这东西,可能大家很少听说 ERC223,、ERC160,、ERC721、ERC821……这些干啥的?这些是为各种未来的数字资产而设计的规范,然而这些规范无一例外都没火起来,为啥?因为这些玩意儿太难用了。

我第一次看到ERC721的时候很激动,感觉分分钟各种资产就上链了,当时我们团队在一年前观察以太坊上 ERC20 合约对比 ERC721 合约创建数量的时候,发现比率大概是100:1,而 Move 语言的野心就是,你想创建一种新的数字资产标准,那会非常简单,非常低成本,甚至你不需要是专业人士,你也不需要得到哪个组织的规范认定,Move 语言将会改变智能合约开发生态。

接着谈下一点:Move 语言是站在以太坊的肩膀上。

Move 语言的账户模型,继承了以太坊,如果你写过以太坊的合约,那么写一个简单的 Move IR 智能合约,不怎么复杂,很多概念是相通的。

Move语言把合约安全放在了一个很高的位置上,Move 语言专门针对以太坊智能合约中特别容易出安全漏洞的语言特性进行了大幅的修改。当然最吸引眼球的就是 "move" vs. "copy" 语义,这个号称是学习了「Linear Logic」的思想,用Linear Type 或者叫Resource Type能够定义出非常安全的数字资产。

另一个长时间困扰以太坊的问题是 「重入漏洞」,也就是当年 DAO合约被攻击的那个漏洞,Move 语言特意从语言层面去彻底规避了重入漏洞,当然代价就是稍微丧失了一点灵活性。

 

曹辉宁:linear type 本质是资源守恒法则,这样避免无中生有。

 

郭宇:曹教授是专家,太对了。

这部分稍微总结下:Libra Move 的理想非常丰满,我个人觉得这是智能合约语言设计非常正确的思路。先把一个细分领域做好,不同的区块链应用领域,是会面临不同的问题,如果想做一个大而全的合约编程语言,是不太现实的。

现在在程序开发领域,各种不同的语言已经开始百花齐放,golang, rust, c,js, c++, java 都适用于各种更细分的平台或者场景下., move 如果能保持一个轻量级的设计,相信也会被很多公链所采纳。但是,这几天在看Move的白皮书和代码,感觉就是:现实很骨感。

Move语言中最大的卖点就是LinearType,但是这部分在白皮书和代码中都还比较混乱,我下午和曹教授@曹钦翔-上海交通大学 梳理了半天白皮书中残缺的形式化定义,发现白皮书的Appendix里面虽然就那么几页,但是各种概念都比较模糊。

 

曹辉宁:move到能为我们所用还需要多久?

 

郭宇:我觉得还需要等白皮书第二版出来,这一版基本上没有多少参考价值。而且Move IR的语法将会变化很大,这一点在move的实现代码里面能看出来。

 

曹钦翔·上海交通大学:这个有一个“方便用”和“能用”之间的gap

 

郭宇:我觉得「凑合能用」,应该还有很多工作要做,Move 中最关键的 Bytecode Verifier 看了之后,感觉type checking算法应该还没成型。

 

Pitt张弛@区分:为什么这么说呢?

 

郭宇:其实我留给大家一个问题: Facebook 匆匆忙忙发布这样一个半成品都算不上的pre-alpha版,是为啥呢?(应该不是拉盘 BTC过一万)那么会有什么别的原因呢?

我今早上迷迷糊糊的时候,有种细思极恐的感觉,facebook应该是感到了强大的压力,这个压力是来自于对手,比如谷歌?还是来自于监管,一定要提前发布?

我的分享到此为止,感谢各位老朋友,新朋友, 还有火讯的小伙伴们,你们辛苦了。

 

Muse:郭老师,你好,Move语言把合约安全放在很高位置,是否意味着图灵不完备?即便丧失一部分灵活性,那它设计思路上最具优势的竞争力会在哪方面体现?可能的缺陷有哪些?可以谈一下未来发展的可能性么?

 

郭宇:我个人观点:对于智能合约而言,图灵是否完备【不是关键问题】

 

张曦:哈哈,我说一个类似的场景:我当年在高盛工作的时候,用的编程语言是高盛内部的一个编程语言,叫Slang,与之配套的数据库叫SecDB(就是Security Database的意思)。这是一个所谓的面向证券(security)的语言,跟Move所谓面向资产的语言有点类似。高盛一直号称自己是一家技术公司,整个公司架构于先进的IT体系之上,这一点上领先华尔街其他投行大概5到10年,其中Slang/SecDB功不可没。Slang诞生于90年代初,那个时候,当时的JAron公司(后来被高盛收购)想要搞一套面向证券的开发语言以支持公司的整个技术架构,响应瞬息万变的金融市场。当时Python这些语言还很不成熟,所以高盛的工程师以极其前瞻的理念设计了这套Slang/SecDB,这实际上成为了高盛的核心竞争力之一。

但问题是,后来Python这些语言,由于有巨大的社区支持,发展非常迅速,实际上进化得比Slang要好很多。高盛内部也有过好几次讨论,是否要把IT体系移植到基于像Python这些通用编程语言上去,但是那个时候,高盛内部已经有太多的东西基于Slang,这个迁移已经是mission impossible。换句话说,高盛到现在还在使用Slang,其实是一种路径依赖,并非当下的最优选择。

Slang的想法跟你说的Move的想法很类似,“你想创建一种新的数字资产标准,那会非常简单,非常低成本,甚至你不需要是专业人士”。就是非程序员要创建一个security(比如一个option),会非常简单。

但实际上这种简单,今天看来,Python等语言一样可以实现,只需要提供对应的library/package就可以了。

我正是因为亲身经历了Slang的例子,所以当初认为ETH重新打造一个solidity是错误的选择。

 

郭宇:我觉得还有不同,python语言对金融从业者而言,仍然有不小的门槛。非常对,我虽然不懂金融,但是我觉得这块空间异常地大。今天第一次听说 Slang, 非常有收获,我去学习下,受教受教

 

张曦:Slang在很长一段时间里面是高盛的核心竞争力,但是发展到今天,有点鸡肋的意思,某些方面甚至成了一种制约。举一个例子,以python作为编程语言的人很容易就能调用tensorflow这些强大的外部工具,但是Slang就不行。

 

曹辉宁:金融里面安全是第一位,所以叫security

 

郭宇:曹老师,学到了!


赵一丹:感谢郭博士的精彩分享,大开眼界了。


02

朱江:“无所谓哪条链或者哪个技术一统江湖的说法,核心还是产品”

朱江:作为联盟链技术的拥护者,很高兴看到,Libra这个To C的应用始发也在使用联盟链常用的共识协议BFT,Libra的白皮书里叫LibraBFT,这是一个拜占庭容错共识协议。

该共识协议是在另外一个共识协议 HotStuff 的基础上演化而来。共识协议 HotStuff 由 VMware Research 等团队于2018年3月提出,其预印版经过五轮迭代修改,并将于并行与分布计算领域著名的国际会议 PODC 2019上正式发表。HotStuff 是一个基于主节点(Leader)的拜占庭容错共识协议。

所以,这也标志着无所谓哪条链或者哪个技术一统江湖的说法,核心还是产品,互联网经济下,流量为王仍然是主旋律。


03

黄连金:“MOVE最好的一点就是定义了Resource就是资源”

黄连金:以前我在华为做,华为做的是“云管端”,云就是云计算,管就是管道、数据的管道,端就是手机。区块链在华为的主营业务、在云上面会有很多的应用,在端上面、在手机端里面,这个光钱包的功能如果实现的话,(大家可能知道Samsung手机已经有些钱包的支持了,华为因为监管的问题在国内可能不会去做,在其他的国家也有可能推出这个钱包的功能),最主要的是管道,以前传输的是数据,现在传输的是一个有价值的东西,相当于libra这样的,但是它能够支持多种类型的数字货币。

其实我在华为的时候确实是想推这方面的一些东西,但是中心的思想就是说,我这里比较看好的就是Facebook它定义了一个MOVE,大家很多人说他这个MOVE语言没必要,但是仔细看他这个MOVE这个语言其实定义的还是有必要的,MOVE从安全性,可扩展性、可形式化证明方面确实有它的独到之处。

MOVE最好的一点就是定义了Resource就是资源,Resource把智能合约的代币进行抽象,比代币有更广泛的含义,MOVE可以包括任何有价值的东西,包括股权的数字化、房地产的产权的数字化、知识产权的数字化等,任何价值的东西的数字化MOVE都可以来代替。MOVE把这些东西进行抽象化,然后用智能合约把这些东西进行定义。

这与以太坊确实不一样,以太坊的智能合约是把代币与智能合约的代码写在一起,所以以太坊会有一些安全的漏洞。MOVE则把智能合约和代币的代码分开了,更容易扩充、安全和有利于形式化证明,这是MOVE比较好的一点。华为也从这里面可以借鉴一些,因为华为在安全、在通讯领域和ICT Technology 方面是大家公认的一个领导者,以前是作为数据的传输者,以后可以做价值的传输者。

也是经济学家乔治·吉尔德他讲的,华为确实在这方面能够作为一个价值的传输者,并行,不是说去代替以前的数据传输,以前的数据传输这个管道的事情是华为做的很好,以后这个可能跟Libra进行合作,或者自己做也行,最好有个生态比如说跟腾讯、阿里一起合作,去做一个这样的一个生态,然后华为专门负责把价值从A转到B,而且对价值进行抽象化,我认为是比较重要。

2、Libra有没有技术创新点?libra可能遇到哪些挑战?在技术方面,尤其是To B的技术开发方面有哪些挑战?

第二个问题就是Libra有没有技术创新点,应该说不是有非常多的让人眼睛一亮的创新点,比如说他在Privacy,在隐私方面他也没怎么讲,这也有一定的原因,因为如果全隐私的话对Libra来说监管就不能兼容了,对他来说也是个难点。我认为Libra最大的创新点是它的MOVE语言,我特别欣赏的就是MOVE基于一种抽象,虽然在一开始白皮书说Libra是要定一个世界性的、一个全球的货币,但是在MOVE里面他没有说这是一个货币。

MOVE把它抽象成为资源,所以它这个抽象的能力还是值得赞赏,大家可能知道Internet基于在TCP/IP,IPPacket 就是个抽象的数据包,如果定义的非常具体,在这上面就不能够建立很多的应用。同样的,如果Libra纯粹的定义一个货币,如白皮书上写的上面的应用都是跟货币有关,那Libra也很难去做溯源、去做房地产产权的追踪,去做那个IP之类的东西,所以MOVE这方面我认为确实是值得赞赏。