本文根据上海树图区块链研究院首席技术官伍鸣先生在第九届区块链全球峰会现场演讲速记整理,略有不影响原意的删改,仅代表嘉宾观点,不代表万向区块链立场。
大家好,我今天想分享的主题是Web3.0的mass adoption。我将从用户体验和基础设施建设两个方面来讨论,同时会跟大家分享Conflux在这个方向上的思考、进展和未来布局。
首先,回顾一下区块链技术和Web3.0技术的发展历史。区块链技术经历了非常漫长的发展过程,上世纪80年代区块链的基础理论,即公钥和分布式系统日趋成熟。在后来的二三十年里,先后出现了链式结构、多方监管的存证系统、反女巫攻击的方案,以及分布式电子等技术。2009年,由于互联网和算力的发展,所有的技术集成在一起,最终形成了一个可以落地的区块链系统——比特币网络。2009年,智能合约出现,使区块链有了编程能力,也就开启了去中心化应用的繁荣。在那个时候,大家开始意识到并关注区块链的性能,因为性能会成为瓶颈。
到了2018年,有了一系列研究团队设计高性能区块链系统来解决性能问题,Conflux就是其中的代表。现如今,区块链未来的发展趋势主要是接口标准化、功能模块化和用户体验友好化,以及规模的扩大化/这些都是Web3.0 mass adoption的驱动。Conflux也做了一些工作,比如我们领导了IEEE P3217应用与系统接口标准的制定,和中国电信联合推出了BSIM的卡,从而降低用户进入Web3.0的门槛。同时,我们也不断提升系统的扩容能力。随着区块链技术的出现,互联网从Web2.0发展到Web3.0的关键因素之一是信息分发和利益分配模式。在Web1.0时代,实现了高效的信息分发,是一个只读的互联网。而Web2.0得益于中心化大规模的分布式系统,使得互联网的信息处理平台的能力大幅提升,这种处理能力也反国际化催生了用户生成数据的模式,是可读可写的互联网。
到了Web3.0,区块链的出现使得我们可以构造不依赖于中心化公司的信息处理平台,从而使得用户拥有对自己所创造数据的自主权,同时在上面创建不依赖中心化实体的数字身份、数字资产、数字权益和数字契约,从而在数字世界里实现开放的经济活动,提高它的效率。所以说Web3.0的出现就是由区块链技术催生的。
Web3.0用户的规模跟Web1.0用户规模相比有很大的差距。假设从用户规模达到500万开始算起,未来的八年里,Web2.0的用户规模增长到4亿,但Web3.0的规模至今也没有突破1亿。而且可以看到,2018年以后,Web3.0的用户规模遇到了瓶颈。Web3.0的mass adoption的瓶颈有很多。首先是Web3.0的用户体验和Web2.0不一样,这给Web2.0的用户带来很高的门槛。其次,Web3.0应用类型不够广泛,目前来讲最主流的应用就是Defi、GameFi,这些应用都是应用于纯资产上,比较容易滋生庞氏金融游戏。现在有一个非常好的叙事,就是RWA,它把传统金融的资产影射到链上,通过合理的通证化提升它的经济活动效率。我个人认为RWA会成为Web3.0的下一个应用增长点的突破口。
再有一个问题就是合规监管,因为Web3.0的去中心化属性给监管合规带来很大的困难,这也是阻碍Web3.0 mass adoption的因素。还有一个因素是多链的互操作性,多链的存在已经不可避免,因为不同的链有不同的特点,有不同的生态,有不同的智能合约开发环境,有不同的资产沉淀,有不同的性能和安全感。用户使用Web3.0应用时,不可避免要在不同的时间段使用不同的链。这就给用户造成了Web3.0的APP非常割裂和碎片化的感觉,如果没有一个丝滑的、安全可靠的跨链基础设施,也会对Web3.0的mass adoption带来很大的问题。
我上面说的这些都是应用问题,这些应用问题我相信在未来会得到很好的解决。一旦这个时间到了,我们的系统能不能支撑大量的Web2.0的用户进入到Web3.0世界。这时系统的容量和扩容能力是不是准备好了迎接这么大的用户量?所以系统的扩容能力,也是我们一直非常关注的问题。由于时间关系,在这个演讲中,我主要针对用户体验和系统扩容能力这两个方面来介绍一下Conflux所做的工作。
Web2.0的用户体验非常简单,用户只要和一个Web2.0的服务交互就可以。在Web3.0的世界里,一个用户要和不同的Web3.0组件和链去交互。每次交互时,要用私钥做签名,去授权操作,但对私钥的管理想要做到既安全又便捷,其实是非常困难的。Web3.0要给用户自主权,意味着用户必须对他的Web3.0账户有管理责任。Web3.0的账户是一个私钥,私钥是一串没有规则的数字和字母组合,很难记。所以通常的做法是用助记词,它是24个英文单词,也很难记,但是又有安全感的要求,我们不能截屏,不能存到文件,不能上传到网络。只能抄下来,抄的时候不能让别人看到,一旦助记词和私钥丢了,资产再也找不回来。这个事情使得用户的心理负担非常重,90%的用户到了助记词这一步就忘记了,这是管理起来非常复杂的Web3.0用户,跟Web3.0打交道要多次使用,而且用户签名时,很多用户不知道在签什么东西。所以Web3.0的账户管理系统,看起来给用户更大的自主权,但实际既不安全,也不方便。我们在思考如何改善Web3.0的账户体系,可以参考一下Web2.0的账户迭代。
早在软件时代,Web2.0的用户只要用密码登录就可以了。到了网页服务时代,用户可以用邮箱来登录平台。到了移动服务时代,用户可以用手机和短信验证码登录平台。用户体验越来越方便。到了Web3.0,业界有一些项目采用让Web3.0钱包或平台方去托管用户私钥,给用户一个Web2.0一样的体验,但这样的方式就引入了中心化的机制,带来新的安全问题。针对这样的问题,Conflux和中国电信联合推出了基于区块链的BSIM卡,它把硬件钱包的逻辑体现在SIM卡里面,手机插入卡以后,用户自然获得了软件钱包的方便性、便捷性和硬件钱包的安全性,因为这是去中心化的,没有引入中心化的风险。
同时SIM卡又可以把手机号和私钥账户很自然地绑定在一起,一方面监管友好,另一方面使得用户直接通过手机号去参与Web3.0的应用变得更加容易。我们相信BSIM卡的逻辑为Web3.0的mass adoption推进一大步。
区块链的系统是复杂的系统,由很多组件组成,有共识网络、执行和存储。这些组建对于整个系统性能的影响遵循木桶原理,也就是系统能力是由最短板决定的。Conflux这个项目刚创建时,共识系统是整个区块链系统的瓶颈,我们从共识开始讲起。经典的共识算法是依赖于链式基本结构。一个区块产生以后,在区块链网络广播有很大的延迟。如果我们需要把账本维护成链式结构,必须降低出块率,所以系统吞吐量大幅度降低了。如果我们想提高系统的出块率,分叉的账本结构必然会出现,这时就必须去调整共识算法。所以Conflux提出一个创新的基于树图账本结构的算法,使得整个网络里的节点能对树图账本里的区块的逻辑顺序达到共识,这样就可以不牺牲安全性和去中心化的前提下,把系统的出块率大幅度提升,从而提升系统的吞吐量。
当共识瓶颈去除以后,网络就会成为下一个平台。网络的瓶颈,一个是网络带宽的利用率,也就是网络系统每秒能转化多少笔交易,另外是交易触达全网的延迟。先看网络带宽的利用率,我们有一个工作叫Shrec,Shrec工作是一个交易转发协议。它的核心思想是在网络里面做交易时,要解决一个问题,就是如何避免一个节点会多次收到重复的交易。我们一般是一个节点往另外一个节点转发交易时,先发一个交易ID过去,询问一下这个ID有没有被收到过。如果没有被收到过,我才会把完整的ID发过去。这时候涉及到ID怎么设、怎么构造,如果ID太长了,重复转发ID也会对网络带宽带来很大压力。如果ID太短了,就会带来冲突,就是不同的交易被映射到了相同ID,一旦出现以后,很多交易不能很好地被转发了。所以Shrec工作就是创新发明了一个交易ID的构造方法,使得我们能很好地平衡ID的长度和冲突率,从而最大化利用网络带宽。
第二份工作是如何减少交易的触达全网的延迟。我们通过一个分布式的自动学习的方法,为网络里的每一个节点构造区域空间里的虚坐标。不同坐标之间的虚坐标所表达的距离,就描述了这两个节点之间的交易转发的延迟。有了这个信息以后,对全网节点做聚合分类,并且找到一个交易转发的最优路径。
网络的瓶颈解决以后,下一步就是执行,执行一部分是计算,一部分是存储访问。对于计算来讲,很简单想到并行式进行,但是在Conflux还没有实现并行化的虚拟机,但我们做了预研的工作。在应用层,应用本身有很多内在冲突,这在这种情况下,即使有一个可以并行调度和并行处理的虚拟机,也没有充分发挥应用的并行度,因为应用没有太多的并行度。比如我们对以太坊的trace做了分析,大部分的区块里面的交易的并行度都不超过4,造成这个问题的原因,一个是Token的空投,一个是Defi和GameFi。造成这个现象的操作叫全局计数器,有一个全局变量,大家在上面加1。针对这个事情,我们提出了解决方案。一种是通过一些改变编程范式的方式,比如空投,我们希望先分给多个sender,再从多个sender分别发给用户,这样并行度就会高一些。针对全局技术器,采用分片技术器,不同的分片是独立技术,整个全局的技术器的值就是所有分片值的和。进而我们提出更好的方法,可交换操作的字节码。我们希望通过可交换操作字节码,比如可交换的加法运算,把可交换的属性从指令传到虚拟机里面,这样虚拟机就知道如何并行可交换的操作。比如你有两个并行的交易,它对同一个变量做加1,但是提交时并不冲突,因为+1操作可以交换,最后只要把+1的操作写成+2,这个交易就没什么问题。
这些方案都要修改用户的编程模式,这就涉及到一个问题就是开发者为什么要用新的编程范式做这个事情,因为需要有激励机制。一旦引入激励机制到并行调度,就会得并行调度带来新的挑战。因为我们不仅仅要求调度执行的结果是确定的,中间某个交易的Abort行为也确定的,因为由于激励机制的原因,使得某些账户受到惩罚,Token会发生改变,这个状态也会有影响,也就是abort会影响状态,所以abort也要确定,所以我们创新设计出一个能确定abort的并行调度算法。
最后是存储问题,区块链的存储系统是可验证存储系统。通常的做法是Merkle Tree,Merkle Tree会带来存储访问的读写放大,log(n)的读写放大。也就是当你更新一个值时,从叶子节点到根上的所有节点都要去更新。学术界有一些新的可验证的结构,比如AMT,AMT有一个好的特性,你更新一个值,commitment值的更新是O(1)。当你把这样一个理论上很好的算法应用到实际的存储系统时,会面临很多挑战,比如说复杂度上的优势,不一定实现起来就快。因为AMT的每一个操作,都会涉及到很慢的密码学的椭圆曲线的操作。第二,AMT的容量,会带来一些预计算的密码学参数,并且去构造出来,而这个密码学参数的规模和集合个数是相关的。
如果我们要在AMT更新一个值,比如从a更新到a’,commitment的更新就会更新。我们注意到有一个a’-a乘以Gi,这是一个很复杂的椭圆曲线乘,如果a’-a乘以Gi等于1的话,就可以把这个乘法去掉了,因为乘以1就等于没有乘。
对这样的观察,我们就提出了一个巧妙的设计,也就是说因为在区块链的存储系统里,这是一个多版本的存储系统,可以证明每一个值是出现在最新的版本里,并且最新的版本是什么。也就是每一个值的更新,都会附带一个版本的更新,版本的更新都是+1的操作。这样我们可以把版本存在AMT里面,AMT可以去证明一个Key当前最新的版本是什么。我们把真正的Key value存到一个append-only的一个merkle tree的集合里面,这个merkle tree在每一次一个区块处理完以后,再把区块里更新的所有的值再一次性构造一个merkle tree。这个构造过程是线性的,没有放大。我们通过这种方法,就把AMT椭圆曲线去掉了。
第二,就是AMT的不可扩展性。针对这个问题,我们设计了多级的AMT结构,把一个Key分成多段,不同的段索引到不同的AMT。比如说10、01和11,分成三段——10、01和11,分别索引到1、2、3级的AMT里面,到第三级就可以索引到这个key所对应的版本号。通过这样的方式,我们就构建了一个完整的可验证的存储系统,我们叫LVMT。我们的实验结果表明,它比基于merkle tree存储系统带来接近3倍的性能提升。
最后我简单介绍一下Conflux的生态情况。Conflux的生态分有两类,一类面向大陆用户,一类面向全球用户。面向大陆用户,主要是以数字藏品和元宇宙的合规应用为主。面向全球用户会有一些Defi、NFT和GameFi。面向全球生态依赖于稳定币这种大规模的金融资产的注入。现在随着香港拥抱Web3.0,各界在呼吁香港政府和企业去发行自己的稳定币。我们也在和这些相关的稳定币发行项目方在进行交流和合作。另外我个人看好RWA,我个人觉得RWA肯定是Web3.0的mass adoption的催化剂。我们现在也在跟一些好的RWA相关的项目方在进行紧密的合作,期待在不久的将来在Conflux能出现一大批非常高质量的RWA应用。
我的分享就到这里,谢谢大家。
来源:金色财经