万向区块链蜂巢学院 | 关于ETH2.0路线图,搞研究的大脑在想什么?
Posted 万向区块链
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万向区块链蜂巢学院 | 关于ETH2.0路线图,搞研究的大脑在想什么?相关的知识,希望对你有一定的参考价值。
以太坊2.0是2020年区块链行业最火热的话题之一。万向区块链蜂巢学院线上公开课第42期,邀请了以太坊爱好者社区负责人阿剑、链闻研究总监潘致雄、MYKEY研究部门负责人姚翔、HashKey Capital研究总监郑嘉梁,全面解读以太坊2.0的路线图。让我们一起来看看搞研究的人,脑子里都在想什么。
蜂巢学院每周都有线上直播公开课,添加小助手微信号:fengchaoxueyuan,或B站关注“万向区块链”直播间,可获取每周公开课直播时间和入口。
阿剑(主持人):
各位在B站收看本场直播的朋友们,各位晚上好!这里是由万向区块链实验室和新链空间举办的蜂巢学院线上公开课,本期是第四十二期,主题是“关于以太坊2.0路线图,搞研究的大脑在想什么?”我是今天的主持人阿剑。
非常荣幸受邀担任本场圆桌的主持,作为关心以太坊的人,更令我激动的是今天晚上可以听到三位非常资深的研究员对以太坊路线图解读和判断。
现在先请三位嘉宾自我介绍一下。
潘致雄:
大家好!我是来自链闻的潘致雄。
目前自己比较多的精力在以太坊本身和以太坊周边的应用上,更多是以媒体角度观察生态,和研究机构应用垂直社区的关注点和深度还不太一样,今天主要是和大家讨论和学习的。
姚翔:
大家好!我是姚翔,来自MYKEY。
我主要关注以太坊底层研究,例如EIP内容,也在做考古的工作,观察这个成功的系统是怎样一步步成长起来的,是很有价值的事情。我是密码学相关专业,对密码安全类的技术方案个人更感兴趣一些。谢谢!
郑嘉梁:
大家好!我是郑嘉梁,来自HashKey Capital,HashKey Capital是一间投资机构,我做研究是从投资的角度来看。
刚才跟几位老师聊,发现几位老师考古能力非常强,但做投资更多的角度是着眼于未来。会从不同的角度跟大家学习一下以太坊2.0,以太坊2.0是非常重要的话题,几位老师在做研究方面都是行业标杆式的人物,非常荣幸跟大家一起讨论相对来说挺复杂的问题。谢谢!
阿剑(主持人):
感谢三位嘉宾的自我介绍,今天圆桌就要正式开始了。今天的主题是ETH2.0,ETH2.0是2020年大家谈得特别多的话题,现在收看的直播的观众应该不止在一个场合听到过ETH2.0的讨论了。
是什么原因让我们在2021年开头重新回到ETH2.0话题?关注ETH2.0路线图进展的朋友可能会知道,在2020年10月以前,有一种常见的对以太坊2.0的解释是,它将分成三个阶段来部署, Phase0实现权益证明的共识机制;Phase1通过分片链来测试整个系统的数据吞吐量;Phase2为分片链添加执行功能,把数据吞吐量转变为事务处理的吞吐量。
在这种解释中,有三个特点:
强调三个阶段的按顺序推进。
较为重视 Phase 0和Phase 2 的里程碑意义;一个是开启权益证明,另一个让分片真正具有执行功能,让系统变得可用。
尽管有可能将PoW以太坊区块链的迁移时间放在 Phase 1实现之后,但更有可能放在 Phase 2 实现之后(也就是整个系统可用之后)。
这是在10月以前看到的解释。但在 10 月,Vitalik 在以太坊魔术师论坛上发表了《以 Rollup 为中心的路线图》。结合其他研究员在公开的 AMA 活动透露的信息来看,以太坊 2.0 的路线图似乎有所改变。
1、它强调 Phase 1 有了独立的实现目标,即为Rollup方案提供发布数据的空间;
2、弱化了 Phase 2 在使系统可用上的意义,不再需要等到Phase 2系统才可用;
3、Phase 1 与合并的研究和实现都将并行推进。
有鉴于这些公开的信息,我们今天紧扣关键词 “以太坊 2.0 路线图”,来听听三位资深的研究员的解读和观点。
第一个问题,在三位研究者看来,以太坊2.0的路线图是否已经改变?还是说,改变的只是推进策略,而不是长期的目标?
潘致雄:
谢谢阿剑!我觉得很明显,以太坊路线图已经很明确地改变了,而且是在非常短的时间内发生了非常大的变化,变化是非常剧烈的。
发生这件事情的根本原因,一方面是Vitalik、基金会、开发者发现了Rollup这套神奇的机制;另一方面之前这套路线图里的跨分片、分片执行等一系列难度。这两方面的考虑之下,以及Rollup这套机制已经将原本链上计算+储存范式发生了彻底的转变,变为链上无损压缩、在链下进行大规模运算,在链上进行轻量级验证,这种范式变化可以使以太坊区块发生非常大的扩容。
所以,我觉得从长期来看,Rollup很可能会成为以太坊核心协议的一部分,就像现在我们所认识的以太坊域名协议(ENS)一样,虽然路径是不一样的,ENS是官方培养后来放养,ENS可以自己赚钱。但Rollup存在很多方案,官方初期是以市场化、资助的形式资助部分Rollup的方案,但最终还是需要市场化PK。
最终Rollup可能不会成为官方协议的一部分,但可能是大家都离不开的东西。
阿剑(主持人):
非常漂亮的回答。姚老师怎么看?
姚翔:
这个题目我特别喜欢,路线图是不是真的改变?
首先,应该定义什么是“路线图”,今天我特意看了Github页面修改记录,2.0是有规范文档的页面,2.0的spec倒数第二次修改是去年的12月18日,修订是Vitalik 做的,删掉了Phase1和Phase2两个表达,修改成了在AMA里面提到的三个东西:轻客户端、合并、分片,合并和分片都还在R&D的过程。
(关于合并和分片的)讨论很有趣,会先把你带到聊天室里,聊天室里告诉你这个已经不用了,再导到Discord去。关于合并和分片这两件事情的讨论都挪到Discord上去,轻客户端有比较实际的成果。
我们一直在做考古工作,有一个事情我还没有考出答案。“2.0”的词源在哪里,原先只是以太坊升级的阶段Serenity。为什么要叫2.0?从品牌的角度、宣传的角度一定是有特殊含义的,肯定意味着一次非常大的升级。
我目前能考据出最早的点是2018年3月份台北分片的工作坊(Taipei Sharding Meetup),没有找到视频,相关资料提到Vitalik 在那次会议上说以太坊1.0是一群人充满斗志地尝试建设世界计算机,而他认为2.0是真正的世界计算机。在他看来1.0是不那么完备的系统。
再看2018年中期的资料,2.0一开始包含内容非常多,Casper等,大家可以自己找,非常多的内容。但最核心的一点就是Sharding,为什么这么讲?6月份台北以太坊工作坊上,Hsiao Wei的演讲标题是“What you can do for Ethereum 2.0 a.k.a. Sharding。
a.k.a Sharding什么意思?以太坊2.0就是围绕分片展开的,分片又是为了什么?分片是一种技术,有它的目标,目标是为了提高系统的可扩展性。现在来说,以太坊是单线程的计算机,单位时间里能处理的计算、可传输的数据量都是有限的,分片是把单线程系统变成多线程系统。
如果我们认可的可扩展性目标,那我认为路线图是没有变化的,甚至表现出了理性和务实。在Rollup方案出现后,思考计算和验证的方式发生了变化,调整推进路线,向更符合现状的方向发展是非常合理的。
如果以太坊2.0推进的策略就是分片,那路线图毫无疑问就是发生了变化,尽管所有关于分片的讨论都在积极地进行,但直到今天也没有特别的能拿得出给公众看的研究成果,甚至行业对分片的问题有非常多的误解,直到今天还有很多人停留在过去两年对路线图和进展的认识上,甚至是过时的二手信息,造成了很多不准确的传播。
以上是我的看法。
阿剑(主持人):
如果我一开始的问题是以太坊2.0的路线图改变了吗?姚老师的回答就是你说的以太坊2.0 是什么意思?好的,听听郑老师的看法。
郑嘉梁:
前面两位老师说得挺好,我突然想到一点,姚老师刚刚说的关于扩容的问题。
Vitalik在2020年初的时候一篇Twitter解释过以太坊2.0是什么,ETH2.0 is all by scaling,所有的东西都是围绕着扩容进行的。
在我的理解范围内,Sharding是一种扩容,Rollup也是一种扩容。既然都是扩容,几个方案之间会有比较,就目前以太坊状态来讲,Rollup是better solution,Sharding拿不出短期内可行的方案,但以太坊扩容又变成了迫在眉睫的事情。
区块链除了以太坊以外,还有所谓的“以太坊杀手”等生态,不扩容的话,其他链也已经开始扩容了,或者一上线scaling就比以太坊强。
但以太坊有强大的生态,要把生态继续往前滚,需要自己的生态不断往前发展,而且不是光跟自己比较,要跟别人比较,是很多维度的竞争。
从scaling的角度,2.0的目标没有变,步骤是加速的,有一点同行压力。大家对以太坊的期望是如果以太坊能变得更好,就不需要别的链,也不用迁移,大家还是希望以太坊可以把“世界计算机”、“金融轻结算”这样的角色扮演好。
以太坊本身不光是技术方案,还是大的生态,生态要兼顾大家的发展,大家都需要生态做起来。我认为加速是正常的,从工程化的角度来讲,一直围绕着理论上可不可行有点慢,我个人认为把能提起来的速度更加快一点是比较好的。
对我来讲,2.0目标没有变,路线加快了。这是我的理解,谢谢!
阿剑(主持人):
感谢三位嘉宾对第一个问题的回答。虽然三位嘉宾都不约而同地提到了在过程中大家对分片的认识、推进,以及对Rollup技术加深理解影响了大家对以太坊2.0该怎么推进的思路。但我们还可以意识到这个问题是非常复杂的,很难仅瓶某几个方面就说以太坊2.0的路线图已经彻底改变了,毫无疑问的是在某些层面上已经发生了变化。
接下来的问题想请三位嘉宾各自讲解,对于自己所构想的改变后以太坊2.0路线图中,哪个步骤是最难以实现的?这个问题是否有可能导致以太坊2.0整体进度停滞?
潘致雄:
刚刚姚翔说了很多关于2.0已经变成什么样子了,而且某些还是在RND阶段。关于这些讨论大家都没有特别充分,而且大家能讨论的素材也没有这么多。
我会认为其中有一块的难度是非常大的,怎么将1.0合并到2.0的具体方案?我认为这件事情已经超越了纯技术的范畴,牵扯到生态中应用、钱包、矿工、节点如何配合,大家如何看待这套方案。
合并的事情在线下聊过很多次了,差不多的方案有点类似于1.0在某一个区块高度的时候把状态导到2.0的网络中,但中间除了技术细节,更多看生态应用会怎么样,以及1.0这条链是如何宣告落幕的。
我们在想,这套方案目前来看是不是太硬了,是不是有可能官方RND一些更适合大家的migration方案,比如说类似于Uniswap从V1切到V2的很好案例,让用户自己双向决定,因为V2有很好的功能,大家愿意去V2,而不是大家被迫去V2。现在的方案有点像在某个时间点,没地方选,只能去2.0了,但Uniswap不是这样子的。
我认为目前合并这件事情需要更多讨论,如果不充分讨论可能会导致之后的一些问题。
姚翔:
我非常同意潘老师的想法,他说了我要说的一部分。
这里面每一项都很难实现,所以要把先后依赖关系打破。从我的视角来看因为都很难,如果一个等一个也不能确定进度,大家并行来做,哪边先跑出东西再调整方向,这也是比较合理的工程推进方案。
潘老师刚才提到了,这里面「合并」包含的社会学共识更多,甚至认为这里面的技术问题并不是那么重要。随着以太坊应用的持续增长,在合并发生前,每多一天,合并的困难和阻力都会变得越来越大,这是比较难实现的东西。
如果说跳出路线图内容,最难的反倒是路线图的决策,为什么会在两年多的持续研究,2018年3月份就在台北讨论分片的内容,今天我回顾了会上的很多东西,非常有价值,再去做一些梳理和考古,所有的客户端团队都在那里,最顶尖的研究员都发表自己的看法。
为什么两年多以后路线进行这么大的修正,而且修正是在短短几分钟内完成的。大家会看到我以前在微信整理的Note,描述了以太坊2.0实现会议的第52期,路线图切换只用了4分钟,其中还有一些沉默。这件事情让人不得不去想背后的原因是什么?我个人认为现在在以太坊的路线决策上已经出现了一些问题。
昨天我还发了一个朋友圈,有一个Layer 2项目CTO康斯坦丁在抨击以太坊缺少Formal governance正式治理,是super centralized system。很多决策会影响到开发者的实际在工作的应用代码。
问题的出现不是问题,但问题必须摆在台面上来,如果不摆在台面上来进行展开讨论,这个进度我是谨慎不乐观的。
在过去研究的这几年时间里,研究团队、开发团队都是非常聪明的人,他们是可以交付东西的,只是有一些关于决策的东西要放在台面上讨论。
这是我的观点。
郑嘉梁:
我稍微补充一下。我印象中2.0路线图是最后Sharding实现以后把1.0(1.X)作为分片链接到2.0里,不会影响原来1.0的任何东西,1.0和2.0是并行发展的。但是前提是Sharding一定要做好,Sharding这边已经做好了,1.0生态继续繁荣下去,现在的所有东西都不用改,以太坊还是保持现在道路继续往前发展,Sharding完成以后直接并入2.0,皆大欢喜。但是前提是Sharding一定要实现。
Sharding在技术没有能保证在未来一定可以实现的情况下,会导致现有生态的合并方案到时候完不成,如果Sharding完不成不如现在的状态先做一次合并。我自己猜测,可能算是比较可行的选择。
如果不是按123的顺序,如果是并行顺序的话,Sharding就变成可选项而非必选项。不仅取决于区块链的技术,还取决于分布式系统的技术在未来2、3年对Sharding是不是能实现一些突破,这样2、3年之后区块链把分布式系统的技术改进借过来,也有可能就实现Sharding了。
这变成类似万无一失的方案,Sharding在最后无论实现还是不实现,2.0合并都要先行,高难度的东西会退后,实在不行的话保持状态也是可以的,是大家可以接受的2.0状态。
所以说,我会觉得Sharding在技术上没有办法很确保在2到3年以后一定会实现,由此对以太坊生态会造成很大影响,还是从生态的角度考虑这个问题。
阿剑(主持人):
谢谢三位嘉宾,到了第二个问题,三位给出的信息量非常多非常大,虽然我是当主持人,但实在是忍不住想多加一句。
姚老师最近在朋友圈发的问题是这样的,各位知道以太坊的状态数据会不断增加,为了抑制状态数据的增加,以太坊当前治理程序选择的办法是隔一段时间在需要硬分叉升级的时候提高某一些操作码的gas消耗量,由于很多合约预设了自己的gas消耗量是多少合约能正常工作,操作码gas消耗量的改变会对他们造成非常大的困扰,甚至会直接破坏合约,这个事情在君士坦丁堡分叉实行 EIP1884的时候已经发生过一次了。
这个问题确实像姚老师说的那样是个问题,而且问题本身不那么重大,但要有合理的方法公开讨论,大家不能认为这种事情是完全无所谓的,我们就是这样做事情的,这是一种非常不负责任的态度。
像刚刚三位老师已经提到了对路线图的理解会影响到对问题的回答,实际上这是非常复杂的问题。刚刚三位已经提到了不仅有技术上的难题,分片怎么实现,怎么保证现在系统的可用性,也包括了一个很大的问题,在社会共识上怎么让大家愿意迁移到系统。
这两方面还有一定的关联,如果分片实现的特别好的话,大家对过程会更有信心。但如果分片技术或者对2.0下的具体执行没有非常清楚能够得到大家公认的答案的话,这个过程会变得更加艰难。
这引向了一个问题,也是在讨论路线图时经常提到的问题。在你们看来,你会认为完整以太坊2.0路线图的实现需要多长的时间?或者说,可用2.0需要多长时间实现?
潘致雄:
比如说看到信标链,从预期上线到最终上线有一年的时间差距,延期了一年。
再看另外一些最新的演进,包括Vitalik 最近发布了关于数据分片的细节,包括此次以太坊2.0变化之后的数据分片纯技术层面的东西。
历史上发出一篇论文到最终执行,一般至少隔2到3年的时间,Rollup也是,从2018年中期早期Rollup才出现,2021年Rollup才是刚刚可用的阶段,我对2.0完整版可用不是特别有信心,像刚刚郑老师说的,真得要2、3年之后才有可能的情况。
但是反过来说,现在社区也理解到一件事情,更实际和更现实的扩容路线不依赖于2.0的Sharding,而是依赖于Rollup,因为Sharding只是64个数据分片,但是Rollup已经帮你提升了100倍的性能(两个数量级),额外还有一些Backup,还会有一些可以提升的空间,比如TurboGeth和大区块。
一百倍甚至几百倍的提升对网络几年的发展已经是“量变”到“质变”的不同了,社区大家已经不依赖于Sharding了,只要大家把Rollup玩好,2到3年间应该没有很大的问题。
我对ZK Rollup和Optimistic rollups的看法比较乐观,Rollup是一套既可以兼顾现有矿工利益也能兼顾2.0创新方向的一条路径,也不能说一定兼顾矿工利益,但是矿工无法改变这件事情,因为Rollup不需要改变现有共识,他们必须被迫接受Rollup方案。
姚翔:
在我没有那么像今天一样考古、深度参与社区讨论之前,我对很多问题的认知比较片面。2018年去布拉格开会前,当时心想是不是2.0快了,现场感觉好像没有能交付出来的东西,虽然进了一步,但心里还是很慌,不知道当中有多大的预期给人时间上的确信。
挺大的问题在于现在的系统框架越来越复杂,能看懂的人越来越少,能参与讨论的人越来越少,可能给不出更多的建议。最近我在做账户抽象(的研究),原来账户抽象也是2.0很重要的框架部分,我在做这件事情考古的时候,关于账户抽象的安全性问题有一个研究员写了一篇“安全性分析”的文章,修改了geth的客户端,做了DoS攻击演练,但是没人给他回复,没人在帖子下回复这里面是不是有点问题或怎么样。但是这篇文章得到了Vitalik、Danny Ryan的指导,所有的文献里都会引用这篇文章说大家看这是安全性分析。但我认为没有多少人能看懂,要真的理解的话要花很长时间,另外他是自己写的客户端,怎么验证这个客户端的数据是不是那么准确?可能要做更多的工作。
在这样的基础上,系统要想安全实现,必须要更多大规模的人参与,在比较对等的位置上进行讨论,我对这件事情不是特别乐观的。
潘老师刚刚提到的关于整个系统往更好的方向去走,这件事情也还是很有希望的,不仅是Rollup的方案,现在网络的带宽在不断增加,计算机验证速度在不断提升,帮助网络更加稳健。在这五年时间里,以太坊吞吐量有显著提升。当然这是硬件、条件比较底层的优化,Rollup更多是在密码学层面的优化,这些都是可以期待的。
从历史经验上来说,比较完美的系统目标一般都不太能实现,无非是怎么取舍,在中间选择我们想要的东西取舍的程度。最简单的可用方案是直接把现在的这套智能合约系统在信标链上实现,让信标链变成可执行的环境,但这显然不是大家想要的结果,所以可用不是非常紧迫的目标,现在的系统也是可用。
郑嘉梁:
刚刚两位老师说的让我想起一些事情,补充一下。
以太坊最早的扩容方案是Layer 1和Layer 2并行的,最早有Sharding plasma,当时设想无论在Layer 1还是Layer 2都要做起来,但现在明显转向以Layer 1.5为核心的扩容,中间肯定是碰到一些问题。
记得2019年的时候除了Layer 1、Layer 2还有Layer 0,很多项目在2019年提出Layer 0扩容,把区块传播速度优化,最近声音会比较小,因为Rollup声音实在太大,把Layer 0通信协议的层面扩容声音都盖过去了。
这些东西以后还是会被翻出来,就像0、1、2之间大家选一个最容易执行的方案先去做,如果做不出来再找其他可行的方案再做。现在把Sharding的扩容方案放在后面,先把Layer 2做出来,如果Layer 2有难度的话可以去做Layer 1,如果Layer 1有难度的话就做Layer 0。
刚刚姚老师、潘老师讲了可用现在确实是可用,但不叫“更好的以太坊”,叫“可用的以太坊”,不是以太坊基金会、社区的目标。扩容比较复杂,尤其是Sharding部分,为什么Rollup方案大家转向这么快?觉得容易实现,理论上也站得住脚,记得2019年Vitalik 发了文章,就是用zkSNARK实现500tps的目标,是ZK Rollup的雏形。
2019年的时候他就已经很喜欢扩容的方案了,在Sharding以外会找更可靠的方案,不能把所有的扩容方案都压在某一层、某一个方案上,对系统和方案来说太过危险了,这是一种比较现实的选择。
但是真正实现特别更好的以太坊,时间上不要抱太大的希望,慢一点会比较好一些。
阿剑(主持人):
虽然三位老师没有给特别明确的时间,也说希望路线图能随着时间的推移变得更加清晰,但都指出系统改善需要有很多方向,无论改进哪个方面,比较重要的是用安全的方式实现改进,保证最大限度地满足对可靠系统的追求。
非常感谢三位嘉宾告诉我们往常的媒体讨论、圆桌讨论中没有被触及到的比较深的问题,不管是社区治理、技术方案细节、生态平衡各方需求实现社会共识上的合力,这些问题在之前都是很少触及到的。那么,请问各位认为一个完成形态的 Eth2.0 比当前的以太坊区块链更 “好”?或者说,它在哪些方面更优?
潘致雄:
好不好相对而言可以衡量一些,最重要的指标是性能,以太坊2.0本身就是为了扩容而实现的,如果这件事情做不到性能有数量级上的提升肯定没法说好,但如果能做到提升,同时能兼顾到安全性、去中心化的特点,也可以认为是好的系统。
现在以太坊也有一个比较尴尬的问题,如果市值太高,会导致生态更偏向于更高数额的交易规模导向,很多高频、低价值的生态根本没法运作,离愿景会更远。如果市值更低,无论是PoW还是PoS,网络的安全性都会有很大的权衡。
好在哪?有哪些方面更优?可能会有两个方向。
1、PoS,信标链是为了实现PoS部分的,把工作量证明变成权益证明。这部分我的观点比较中性,以太坊本身就是实验的大沙盒,挑战新基础设施没有逻辑上的问题。
当然肯定会有各种各样的权衡,之前讨论也很多。问题还会牵扯到PoS是不是足够好、是不是更优。从现在来看,历史上有些项目已经实现过PoS了,但至少没有看到明确的证明PoS一定比PoW非常好的特点。
2、数据分片(Sharding)。原来的Sharding方案是在Sharding上做执行,但现在放在信标链上做执行,数据分片具体是怎么运作的,这方面的细节不知道是不是要经过更多的讨论、验证才能具体了解可执行程度以及是否能做到像开发者说得那样好。
姚翔:
谢谢潘老师、谢谢阿剑。没有一个完美的系统,大部分的决定都是取舍,之前我在Twitter上看Bitcoin core开发者说不可能什么都不付出得到非常完美的东西,这是不可能的,最终取决于我们需要什么样的系统,为什么是以太坊而不是其他的公链获得市场的认可。
当然,每个人有自己的观点,有很多种方式来解释,像社区、先发优势种种。站在我的视角上,不妨回顾一下2.0的设计目标,design go写在spec里的设计目标。
第一条,要尽量减少复杂度,甚至以损失一些效率为代价。
第二条,当主要的网络分区(中国、美国)以及很多节点脱机掉线时,以太坊网络仍然能保持活性。
第三条,关于密码学的,希望所有的组件都是能抵抗量子计算机、是量子安全的,至少可以很容易地换成量子安全的对应物,可能算法现在不是量子安全,但万一量子计算机出来了,可以比较轻松地保证系统在运行的情况下做更换。
第四条,可以利用密码学技术,用相关工程设计满足在一个单位时间内有大量的验证者参与,就是所谓去中心化的目标,要大规模的验证者,不能是很少的。
第五条,从个人和系统的关系上,允许消费级的笔记本电脑,用常数时间的复杂度处理和验证Sharding的分片,包括系统级的验证、信标链。
听下来,一切的根本都在安全性,要保证有足够多的人维护系统的安全,验证系统里发生的每一件事情,甚至个人也可以参与在网络中。有很多公链不可能用个人电脑来运行节点,验证历史上所有的事情。
回顾2.0的设计目标,除了抗量子性以外,1.0做的都还是OK的,唯一的问题是确实不那么可用。回到性能问题,确保条件都能满足的情况下解决可扩展性问题,解决吞吐量问题。现阶段,我的观点是Rollup给了我们新的选择,不如先去尝试。一百倍的空间是不是能满足系统的要求?可以看看,至少比还没有那么明确设计方案的2.0是现阶段更紧迫的事情。
从我的直觉层面,我不太能相信一个东西什么都好,这不太可能存在。既然有设计目标,设计目标是以太坊核心开发者的共识、社区的共识,就以设计目标为基础。
郑嘉梁:
扩容是没有什么异议的,速度快是没有什么问题的。剩下的问题就是1.0和2.0的问题,解决状态爆炸问题也是一个方向,肯定要去解决。想来想去其实就是PoS是否比PoW好的问题,这可能是最最核心的问题,前两个问题是没有什么异议的。无论是在实际上还是在数学上,PoW已经证明了安全性,以太坊跑在这样的共识上,这么多年没有出现什么问题也证明了一些东西。
PoS大家都很喜欢,新出来的新一代区块链全都会选用PoS,还用PoW的话会显得更像“老古董”,有点过时,赶不上潮流。
转向PoS是没有办法的,这是大的趋势,新一代的公链都是往这个方向转的,或者一上来就是这么设计的。PoS好不好社区里讨论的都比较多了,无非是矿工、持币者、生态者之间比较重要的利益相关者在不同的共识下有什么样的表现,PoS的安全性还需要再验证。
说白了,不同的链选用PoS是不一样的,如果很小的区块链用PoS确实很容易被攻击,套在以太坊上有可能不会发生什么问题,但并不代表PoS本身没有问题,只能代表以太坊生态的强大。有些事情会掩盖另外工程上、科学上的特性,没发生问题不代表不会发生问题。
讨论来讨论去就是PoS还是PoW更稳定,但这是很长时间没有定论的东西。既然阿剑老师问出来了,我就抛出来,大家可以再讨论讨论。
阿剑(主持人):
我看到三位老师“一脸不情愿“地回答了这个问题,虽然回答的信息量还是非常大的。在刚刚的四个问题中,三位嘉宾在每个小问题回答中都覆盖了讨论以太坊2.0时会讨论的各种东西,包括多重设计目标、重要技术概念(PoS、分片),也包括对社区来说最为关心的问题,什么时候以太坊2.0能真正变得可用,以及什么时候以太坊1.0生态能搬迁合并到2.0系统中,以及什么时候真正完成最终的发展目标。
每一个问题都值得相当大的篇幅去讨论,每个人都可以写篇文章形成非常复杂的观点。但是时间是有限的,下面进入到今天最后一个问题,是刚刚潘老师和姚老师都提到的问题延伸:在非常复杂的社会共识协作过程中,变量非常多,你们认为在转向 Eth2.0 的过程中,以太坊的生态有无可能发生社会共识的分裂?
潘致雄:
今天是个非常好的日子可以聊这件事情,比特币区块链Schnorr Signature和Taproot功能已经发布到代码里去了。
为什么聊这个事情呢?可以看一下比特币区块链是怎么做到社会共识升级的。Schnorr和Taproot是三年多前开始提出的功能,开始了漫长的布道和介绍优势、功能、必要性。2020年一整年的开发过程中,核心开发者和最大的矿池进行深度沟通。
为什么呢?因为比特币区块链的最终激活还是依赖于算力,核心开发者开心完之后最后需要矿工来制衡是不是要支持功能,矿工可以不支持功能。比特币网络的形式已经有可以制衡的点,开发者和矿工之间可以寻找到共同利益。
从另外一个极端来说,有些新型区块链项目、区块链网络都开始进行链上治理,把需要的社会化提案通过代币的形式进行民调大范围投票,让所有系统参与者认为这件事情对系统的未来到底有没有好处,这是链上治理的特点。
回到以太坊,目前以太坊没有这样一套机制的,以太坊的核心开发者是有集权的,是中心化来管理这些事情的,没有和社区进行更广泛的交流沟通,也没有一套像比特币区块链、链上治理的机制寻找各个参与方、代币方的共同利益。在以太坊1.0迁移到2.0的过程中还是很可能发生断层和分叉的,因为以太坊分叉也是相当容易的一件事情,只要修改Geth客户端,总有人很方便、很容易地将以太坊分叉。
之后会带来各种各样的冠名权、资产所有权的问题,之前有人提出观点,以太坊发展到这个阶段已经不可分叉,因为资产和生态实在太庞大,算是非常混沌的一套系统。我会觉得至少目前以太坊生态在1.0到2.0过程中从历史角度来看是最危险的阶段。
姚翔:
如果说用更温和的方式去做迁移,把旧的链上状态、资产迁移到新的链上,可能没有太多问题,大家是“用脚来投票”。
如果是一种“大家必须要过去”的方式的话必然会出现问题,原因在于PoW这样一套体系下,仍然可以继续运行,如果说矿工愿意,可以一直在这边挖下去,除了极端情况生态搬走,矿工依然可以在这里挖下去。
在这个时间点面临的是不得不做的选择,到那天发生的时候大家必须做选择,这很好玩,这是一件很危险也挺迷人很不错的事件,考验了很多东西。
最近我在听非常多Bitcoin core developer的观点,谈他们为什么会做这件事情。现在是没有比特币基金会的,过去是有的,可以认为这些开发者是在义务工作,而且有人捐献,捐献并不能改变意愿,真正愿意捐赠的公司也不是那么多,这是很好玩挺大的社会实验。
回到以太坊这件事情,把问题抛开讲,共识切换是社会共识撕裂很重要的点。关于这件事情的讨论足够多了,今天很难展开特别深入,同时两边的观点都很明确,谁也说服不了谁。在那个时间点,如果危险的事情发生,真的会发生用脚投票的事情,甚至是更极端的事情。
我不想做过多的推演,很显然新系统的安全性和可靠性需要时间验证,大家对新系统的信任不足以在很短的时间内建立,需要考虑怎么有过渡性的阶段。我不想去推演发生什么,在线下讨论的时候我谈到过这件事情。
传统的共同体要议事讨论事情,逃离的成本是很高的,不到万不得已不会分裂。比如说班级决定去哪里吃饭,你不能说我不去了,最后大家肯定选出一个地方聚餐,或者上升到国家层面议会,大家投票,选出来一个结果,大家认,在认可的程序下通过意识规则表决程序,表达自己的意愿,决定了就决定了。以太坊不做链上治理有自己的原因,这是合理的,没什么问题。
但在数字世界里逃离系统的成本是很低的,不像在现实的世界里想逃离这个地方受到很多约束,在数字世界里也有约束,但成本低很多。比如说THE DAO事件是很典型的案例,现在的以太坊与那时候相比逃离的成本高得多了,仍然比传统世界、物理世界里的成本低。
虽然我们说社区暂时很难分叉,但因为氛围是这样的,逃离成本很低的话不太愿意对话和交流,反对的声音容易出现,很难聚集起来。主流的声音没有人在反对,共识如果不是在大家的抗辩中产生的,没有退让、没有妥协的话很难取得更广泛的尊重和认同,可能大家吵一架吵出来是什么就认了,这件事情还会好一点。如果不说话,走了,对两边都不是特别好的结果,缺少争论不代表没有共识分裂,反而分裂已经结束了。
转向2.0很具体的事情里我最近也有一些观察,现在1.0有一个Core Dev Meeting有一个汇总页面在Github上,现在这个页面没有精心维护了,原来每期能看到,第一期几月几号note是什么,video是什么。停在了第99期,已经有3、4期没有维护了,没有note,没有video link,这个事情没人管了。
最新的会议笔记Tim 一直在记,会放在Twitter上,但是没有人会汇总到Github上,这件事情让我觉得有点不可接受。会议原先一直是Hudson在协调,从第一次会议到最近他说他要退休交给Tim。他自己说去寻求新的挑战,我觉得背后也有些别的原因,这是个人的猜测,毕竟做了这么久,选择在这个时间点退出。
同时Vitalik也不参加1.0的会议了,这件事情在什么时候发生的呢?他最后一次参加在10月16日,在上海那次Meetup(远程)之后他就不参加1.0的会议,专心做2.0的事情。
某种程度上1.0和2.0已经完全分开了,大家彼此没有那么了解对方在做什么,1.0开发者在做1.0sunset的事情,2.0在做sunrise的事情,大家彼此并没有那么了解在做些什么事情。
这是我最近的观察,谈不上很有Insight,最近我会整理一些细节,因为细节里能发现人性的东西。
郑嘉梁:
前面两位老师讲的很好,说几点自己的想法。
第一,分裂。
区块链很多链很怕分裂的,因为很早就有其他链提出不分叉,永远不分叉,如Tezos。对区块链来讲,虽然历史上比特币和以太坊链发生过分裂,但毕竟他们是强共识的链,如果很多链共识非常弱的话,分裂一次意味着以后这个链就没有什么前途了。
即便是以太坊、比特币这种大的链,也没有办法经受大的分裂太多次,凝结一次共识需要很长时间、很多人、很多资金、很多资源的投入,分裂是大家都不太希望看到的事情。
第二,分化。
分化是时时刻刻发生的,潘老师以前写过一篇文章是Layer 2站队的问题,Rollup上大家已经战队了,分成Optimistic rollups和ZK Rollup,不同技术方案已经做出了选择。大家觉得以太坊虚拟机比较重要,在开发环境不怎么变的情况下,有几个知名的DeFi项目选择了Optimistic rollups。有人觉得安全、可追溯性比较重要的话会选择ZK Rollup。
现在以太坊基金会对两大类Rollup方案比较端水的态度情况下,大家自己按照自己的选择做未来路线的betting,因为你不知道哪种Rollup最终会成为目标,还是说两种Rollup会融合,不融合也没关系,只要可交互性到最后完成以后不影响DeFi的“乐高特性”。
大家时时刻刻都在做选择,选择的影响还是蛮深的,不是分裂,每个团队、每个人对区块链的设想有不同诉求,诉求体现在对不同技术路线的选择。
有些项目比较现实,觉得迁移一个东西要付出太大成本的话,尽量选择最简单的方案,所以选择了Optimistic rollups。大家有不同的选择,这是没有办法改变的。
但大家有个底线,还是不要分裂,可以选择不同的技术路线,但不要分裂社区。对以太坊绑定比较深的项目来说,大家都有最后的底线在心里,分裂这个事情不用想得太多,但分化是无可避免的。
这是我的观点,谢谢!
阿剑(主持人):
感谢三位在圆桌上的回答,我在一开始接受担任这场圆桌主持的时候,我跟大家交流过,希望在这场圆桌中讨论在其他圆桌上很少讨论、不敢于讨论甚至会被忽略的问题,呈现以太坊发展和生态本身的复杂性。
不管选择哪种技术路线,不管做什么事情,生态的复杂性必须是首先要尊重的,也是我们要理解的,理解了才能发现生态真正有活力,真正被大家选择的原因。
今天谈到的很多问题都指向一点,人类做的事情只要涉及到群体协作,不可能离得开人们如何在制度、语境下参与协作,不可避免地需要向人类的历史、前人的经验学习完成社会协作,尽可能减少摩擦和冲突,塑造出更强的社会共识,乃至得到更广泛的普及。
不管在技术上还要走多少路,在学会相互协作和社会治理上还有更长的路要走。这也是我们可以期待以太坊的地方,确确实实以太坊在这么多年发展中证明了值得我们的期待。
感谢三位嘉宾对五个问题的回答,今天的圆桌到这里,感谢各位在B站收看本场直播的朋友们,再次感谢蜂巢学院为我们组织一场这么好,这么高质量,这么深入的圆桌,谢谢!
万向区块链蜂巢学院第13期贾瑶琪:Web3.0落地的必由之路—区块链的可扩展性和互操作性
本文为万向区块链蜂巢学院第十三期,Parity亚洲区技术总监、区块链和信息安全技术专家贾瑶琪博士的演讲内容(整理自现场速记)。贾博士在演讲中介绍了Web3.0的定义和应用,并分享了实现Web3.0的技术和手段。
此外,我们也为对攻克和推动Web3.0、跨链/平行链等技术发展感兴趣的创业团队,提供了多种福利。2月12日,万向区块链实验室、新链空间、Parity、Web3.0基金会正式宣布联合推出“Web3.0 Bootcamp”。Web3.0 Bootcamp是一个以区块链创新为主的创业训练营和孵化营,旨在通过资源对接和技术支持,帮助优秀的区块链项目快速成长和发展。Web3.0 Bootcamp将在全球范围内挑选12支团队,进行为期6个月的扶持和帮助,团队招募现已启动,将于2020年3月15日截止。参加Web3.0 Bootcamp无需费用,点击阅读原文即可报名。
活动现场
大家好!我是贾瑶琪,Parity亚洲区工程总监,主要负责技术研发和Substrate开发者生态建设。今天我将和大家分享区块链里难度比较大但很有意思的两个话题,一个是可扩展性,另一个是互操作性。今天讲的内容更偏技术一些,我会举一些例子帮助大家去理解里面的技术细节。
Web3.0定义和应用
Web3.0是目前一个比较热门的概念,许多从事区块链行业的人也会认为自己开发的应用是面向Web3.0的。究竟什么是Web3.0呢?Web3.0有很多不同的定义,上图采纳了其中的一个。Web1.0时代,网页是只读的,用户只能搜集信息,浏览信息。Web2.0时代是社交网络的时代,像脸书、推特、人人、新浪、微信,以及最新的快手、抖音等等。作为用户的我们不仅可以浏览,还可以自己创建内容并上传到网上。Web3.0更往前一步,除了可以发布内容,未来可以去做更多去中介化的事情。这样就不得不提到其中需要的一些方法,包括一些理念。
Web2.0时代数据被大公司控制,像谷歌、脸书以及亚马逊。当你使用他们的服务的时候,协议中写明可以免责使用你的数据。虽然谷歌早期的slogan是don’t do evil, 但是有时候却把自己的数据提供给第三方。在Web 3.0的时代,我们不需要他们保证don’t do evil,而是通过代码使他们can’t do evil。
Web3.0时代,为了实现愿景,需要什么样的技术呢?区块链是一个基础。区块链可以提供的特性,一是不可篡改,二是公开透明,三是点对点的网络。
再具体到一些细节如Web3.0技术栈,简单的可以划分为这几层,最上层是客户端,比如去中心化的浏览器。在这之下包含了一些协议支持的开发工具,对应API和特定编程语言。脸书的Libra有自己的编程语言Move,以太坊也有自己的编程语言Solidity。再下一层是Layer2的协议,比如说Governance、State channels等。一个区块链应用不能随意获取互联网上的信息,比如说想看天气预报,区块链不能直接提供这样的数据,这里我们就需要Layer2协议栈中预言机协议,通过协议本身预言机机制获取互联网上的信息放在区块链上。Layer1协议,就是广为人知的区块链底层协议,比特币、以太坊等各种各样的公链,联盟链都采用了类似的底层协议,它提供了支撑整个Web3.0愿景的基础。再往下是网络层,如P2P网络传输。
有了这样的技术栈,才使得web3.0之路变得更加现实。在众多的Layer1协议中,Polkadot的跨链协议拥有很多优势,比如共享安全、互操作性等。Polkadot本身是基于Parity开源的Substrate开发的。Substrate作为一个通用的区块链开发框架,既可以用来开发Layer1协议如跨链操作,也可以用来实现Layer2协议如预言机。
基于以上介绍的技术栈实现的早期应用有哪些呢?上图列出了一些典型的的Web3.0应用。除了大家熟悉的公链系统外,还有一些网络协议层的项目,更多的位于应用层,例如去中心的金融服务如借贷。但对于非区块链领域的用户,有没有真正的主流应用呢?目前其实没有。是什么导致现在没有主流的应用呢?在这里举几个例子进行解释。
案例一,以太小怪兽。这是一两年前在以太坊上特别流行的游戏应用。它的方法跟电子怪兽一样,你去购买这样一个怪兽去跟其它的怪兽进行打斗,如果赢的话可以升级。游戏在初期很火爆,但是后来发现这个游戏太花钱了。如果把一个小怪兽升到四级要花15美金的交易费,一直支撑他打怪兽或者进行训练。
案例二,以太猫。一两年前比较火爆,大家可以购买各种各样的加密猫,两个加密猫可以再生成一个新的加密猫。最火爆的时候,有的加密猫价值十万美金。但是也有问题。玩儿的人越多,手续费增加越高,因为以太坊的吞吐量只有这么多,如果大家想玩,需要用更高的手续费买到这样一个加密猫,同时出生费也相应增加。现在加密猫应用已经淡出人们的视线。
总结出来的一个结论是,目前对于区块链行业,由于低吞吐量带来的高手续费,给开发DApp带来很多功能限制。
可扩展性
无论是学术界还是产业界都致力于解决区块链低吞吐量的问题。其中一个方法是增加区块大小。如果把区块大小增加,吞吐量会有一个提升。但是由于带宽限制,这不是个提升吞吐量的高效(100倍)解决方案。
方案二,通过链下交易。链下处理所有交易,将结算部分上链。因为可以使用中心化的服务器处理交易,那么可以轻松实现每秒上千/万笔交易。通过这样的方式可以有效提高吞吐量。但是也有劣势,因为不是所有交易都在链上完成,那么中心化的服务器本身会不会进行一些作弊?透明度是个问题。
方案三,我们不再采用链式的数据结构,而是采用图结构,不同的节点可以生产不同的区块进行广播。当一个节点想打包区块的时候,可以基于过去的区块,建立一个有向无环图,再打包分发给其它节点。好处是可以包含多种交易,同时提高吞吐量。在图结构里面可能很多交易是有冲突的,对于最终要执行的智能合约是有分歧的,这就是图结构所遇到的难题。
方案四,代理人机制。参与共识协议的节点越少,跑起来越快,吞吐量越高。只有少量的超级节点参与共识协议可以达到一个高吞吐量,但是容易被大家垢病的是少量的代理节点能否代表整个社区。如果节点越少,这些节点不太喜欢某一些交易或者某一些应用,其实可以拒绝这个应用提交的交易。这就回到了中心化的弊端。
还有,就是分片以及多链。这个解决方案代表了一个趋势,在不损失很多去中心化特性的同时,可以达到比较好的吞吐量。大家看到最新的以太坊2.0和新的分片项目,还有一些跨链项目,大家会发现这中间的区别已经变得很模糊,很多时候可以把一个分片看成一个同构的链。在处理多链跨链交易的原子性协议和分片协议里面提到的原子性协议区别不大,有的采用同样的技术。只不过多链技术以及分片技术,有的时候会有一个中继链或者中继分片来协调不同的分片或者不同的链。但是归根到底,技术本身其实有很多相似的地方,这里统一起来进行讲解。
分片就是将交易分而治之,从而提高吞吐量。举个例子,有一千道问题,同时有一百个人解决问题。现在可以分组,一百个人分成十个小组,将一千道问题分给十个小组,每个小组十个人处理一百道问题,根据绝大多数人的答案形成一个共识,那么我们其实可以保证每个小组正确的解决一百道问题,这样整个解决时间就从一千减小到一百。未来如果有更多的听众,例如一千个,我们可以把一千人分成一百个小组,一百小组解决一千个问题,一个小组只解决十个问题,最终只用解决十个问题的时间把一千个问题都解决了。然而可能会出现一些攻击情形,假如如果有十个攻击者,他们合谋分到第一个小组,达成共识的时候不遵循一些原则,例如把一分钱掰成一万块人民币来进行双花攻击。如果攻击者能控制一个分片,产生的攻击在一些协议里面其它分片是不能进行阻止的。
如何避免这样的攻击呢?
首先,要设立很高的门槛,让攻击者不容易加入到网络中,防止女巫攻击。一个方法就是工作量证明,需要使用特定的矿机做足够时间的计算,才能作为节点提交区块。第二个方法,权益证明。
一旦有了一百个听众(或节点),进行随机分组可以保证听众分到不同的小组。我们需要根据一个什么样的随机数进行分组呢?一种方法是用上一个工作量证明的结果作为随机数将大家分到不同的小组。另外一个方法,在权益证明中,使用随机数生成协议(如VRF),让大家分到不同的分片里面。
如果已经有了比较合理的分组,且每个分组能保证正常节点占绝大多数,那么之后就是如何将上面提到的一千个问题分给不同组。为了保证不同的分片或者整个系统的数据一致性及有效性,我们需要一个方法来防止同一个交易被不同分片处理多次或者同一个数据被改变多次。常用解决方案是用两段式提交协议保证数据一致性。
刚刚讲到网络分片,节点可以安全的分到不同的分片或者链里面,之后的交易也可以分到不同的分片里,然后来进行交易处理,同时保证数据的有效性及一致性。如果做状态分片例如ETH2.0,每个分片有自己的数据存储,不同的分片存储不同的数据,这样会有单个分片数据丢失的风险。
比较直观的解决方法,首先就是通过一些权益奖励,鼓励节点长期在线,而且要做大量交易验证和共识协议来保证不会受到惩罚。如果长期掉线会被移出分片,而且抵押的权益会被系统拿走。当我们有了健壮的分片系统,那么我们可以整合多个分片或者链的吞吐量,从而极大地提升整个系统的吞吐量。
有了分片和多链的方法之后,我们更多想的是对于单链有哪些方法可以进一步提高它的吞吐量呢?更快的解决方法就是通过更改共识协议。目前比特币或者以太坊使用中本聪共识协议,节点通过工作量证明,每过一段时间生成一个区块,并将区块广播给其它节点,其它节点看到这个区块的时候,会选择拥有最长链的区块来进行确认。中本聪共识协议的优点是去中心化和异步。即使有上万个节点在网络里面,而且有不同的网络延迟,中本聪共识协议还是可以很好的在全网达成共识。当然缺点就是吞吐量太低。
拜占廷共识协议(BFT),是学术界产业界常用的共识协议。简单来讲,比如现在我要去买一张票,我要保证现场一百个人中的绝大多数都知道我要买票,大家都同意我买票。我的做法是广播给所有人,我要去买票的信息。其他人收到这样一个消息之后,同意这个信息,再把这个信息广播出去。当每个人收到2/3节点的确认信息之后,再广播一个自己收到绝大都数人确认的确认信息。当每个人收到2/3节点的最终确认信息之后,就确定了全网已经同意并确认买票的这个消息。
拜占庭共识协议的优势是速度快,如果去实现这样一个BFT控制协议很容易达到超过1000TPS,而且有绝对的最终性,一旦协议跑完,交易马上可以确认最终性。
缺点是传统拜占庭共识协议只能用于不到一百个节点,超过一百个节点,信息交换量太过庞大使得网络拥塞不能提升吞吐量。与此同时,它不是完全异步的。每个阶段都有一个等待时间,例如中间可以等十秒,如果没到就进行下一个阶段。如果长时间协议没有向前推进,就会进行视图转换,切换指挥者重新运行协议。
Polkadot整合和改进了中本聪共识协议和拜占庭共识协议。它采用了一个混合式的算法, GRANDPA协议和BABE协议。BABE协议是负责区块生成,GRANDPA协议是提供最终性的。BABE协议和传统的比特币、以太坊的协议一样。每过几秒钟选择一个节点进行出块,节点出块以后,进行一个广播,再过几秒选第二个节点进行一个出块,不同的节点也是根据最长链原则选择区块进行确认。
GRANDPA算法,它是根据BFT进行改进的版本,是非异步的共识协议。BABE协议生成的区块,GRANDPA协议最终会做一个敲定。BABE协议生成不同长度的链,GRANDPA协议会选择这里面包含最多投票的有效链进行确认。以往的区块链里面,如果进行共识协议,通常是一个块一个块进行敲定,但是Polkadot是根据不同的链进行敲定。比如每过一段时间,生成十个区块或者二十个区块,那么运行GRANDPA协议,将二十个区块直接一次性的确认。这样GRANDPA可以在有限的时间里确认更多的区块。
通过以上讲解,我们可以看到想要吞吐量高的区块链解决方案,同时拥有比较好的去中心化特性,最好的方法就是选择高吞吐量的单链解决方案加上安全高效的分片或者跨链解决方案。
互操作性
除了从可扩展性的角度出发,我们也需要从实际角度出发思考,为什么需要互操作性,或者为什么需要跨链。传统来讲,区块链可以解决信任的问题,如果可拓展性可以被解决,那么性能的问题也将被解决。互操作性其实是在上面两个问题被解决的情况下,可以解决更广泛的信任问题。
目前不同的应用场景有不同的联盟链和公有链。有了这些链之后,我们需要用互通性才能将有用的数据沟通起来。这里会涉及到跨链或者互操作性的不同方法。未来会看到一个界限极其模糊的区块链系统,就是私有链、联盟链、公链通过某种方式来进行互联。
区块链领域的互操作性,为什么在传统的互联网应用里不明确提这样的要求呢?因为现在的互联网基础设施已经把这些功能都提供好了,例如各种各样的SDK和API。你如果做一个应用想调用微信上面的数据,那么可以通过微信上面的SDK和接口把数据拿下来。如果想做支付,支付宝也有对应的支付通道,写代码的时候可以把API调用一下就可以做支付了。目前在区块链上无法做到的原因,是由于各种区块链不同的共识协和区块结构导致了我们的数据目前还是属于孤岛状态。为了让不同的孤岛上面的数据进行沟通,我们必须通过互操作性以及跨链的系统将不同的区块链连通起来。
互操作性以及跨链协议有哪些具体的方式呢?第一种方式就是公证人模式,不同链之间有一个公证人。相对比较去中心化的第二种方式就是侧链模式。通过侧链的方式,在链B上面可以验证链A上哪些交易被写到区块里,那么链B就可以验证A上面的操作并在B上面进行对应操作例如转账。第三种方式是哈希时间锁,这是相对一个比较复杂的协议,它是一个集去中心化以及透明交易的资产转换为一体的跨链操作。简单来讲,如果我做比特币兑换以太坊的交易,我在比特币这边放一个锁,同时对方也要在以太坊放一个锁。我把密钥给他,同样的密钥我可以获得对应的以太坊,同时他可以根据密钥获得对应的比特币。还有一个时间锁,保证双方只能在限定时间内去解锁以太坊和比特币,否则协议会自动终止,双方都没有获得对方的资产。
刚刚提到的方法都是很好的数字资产跨链的解决方案,无论是从效率还是去中心化的角度。如果想做到数据以及逻辑层面上的跨链,我们就需要更复杂的系统,例如多链系统里面的中继链。具体到Polkadot上,系统使用中继链来协调不同平行链的跨链操作。根据不同的商业环境,开发者可以使用Substrate开发和搭建不同的平行链。中继链的验证节点用于验证平行链区块的正确性从而保证每条平行链具有相同的的安全性,与此同时协调不同平行链之间的通信。一些已有的区块链,例如以太坊、比特币,暂时没有基于Substrate的平行链版本。目前的方法是使用桥,将它们桥接到平行链当中,再通过中继链与其它链进行沟通。
在这样的框架结构中,最中心的是中继链,它连接不同的平行链。刚刚提到桥接链,桥接链不是直接连到中继链上,而是通过一个桥,先连接到平行链,之后通过中继链跟其它链进行通信。
每个平行链都有中继链的轻节点,用来接收和验证中继链的消息。同时平行链有自己的校对节点称为collator。校对节点搜集对应平行链上的数据,将这些数据传递给中继链。中继链会分派不同的验证节点,去验证平行链上的区块是否是正确的,是否有双花的攻击,如果一些区块有问题,中继链会根据协议没收对应平行链插槽,或者对一些节点进行惩罚。
上图来自Polkadot的白皮书,将不同的角色都包含在里面,包括不同的平行链以及平行链里面是怎么运作的,如处理交易、广播交易以及最终交易写成区块,区块最后要写入到中继链里面等。
如果中继链想要支撑成千上万个平行链,那么我们如何实现更高的横向扩展呢?方法就是将二级中继链作为一个平行链接入到中继链里面,构建出一个更加分散的连接中继链的跨链平台。
目前Parity正在开发三个至关重要的功能。第一个是Cumulus。平行链需要一个连接器连接到中继链,这个连接器就是Cumulus。现在用Substrate开发出来的代码,未来只需要很少的改动,就可以使用Cumulus连接到中继链,前提是拿到对应的插槽。
第二个是XCMP跨链信息交互协议,不同的平行链如果想调用或者发送消息给其它的平行链,就需要通过这样一个协议去传输。
第三个是SPREE。讲到跨链,大家通常默认是资产跨链,资产A放在链B上面,做好一点可以做成去中心化的。再好一点就是现在提到的不同的链可以通过中继链或者其它的方法将信息发送过去,对方链可以执行对应的交易,或者智能合约。但前提是,不同的平行链他们是相对比较同态的架构。同构就是不同的平行链执行处理交易的逻辑是大致一样的。链A是用EVM处理智能合约,链B也是用EVM处理交易,那么链A发送交易给链B,链B是可以处理的。如果链A是EVM,链B是WASM,那么链B收到A的交易也不知道怎么处理。SPREE可以支持跨链执行代码的交互。就是链A将自己的执行逻辑进行打包,打包以后生成一个可执行的runtime通过一些渠道发送给链B,链B收到后可以去执行链A的交易。即使链A和B的处理交易的方式不同,因为B收到了A的代码和数据,那么B就可以处理A上的交易了。这三个功能都在紧锣密鼓的进行研发。之后有了这三个协议,我们进行任何的跨链交易和数据的处理操作。
在过去两年间,Substrate已经有超过20万行代码,还有很多的社区贡献者。在第一季度Substrate会从1.0升级到2.0版本,会有更好的性能以及更稳定的组件。同时,目前已经有超过80个团队基于Substrate/Polkadot进行开发。欢迎大家共同在Substrate/Polkadot上构建有意思的联盟链和平行链。
今天的分享就到这里,谢谢大家!
小编再次提醒:Web3.0 Bootcamp报名通道已经开启,详细信息查看→万向区块链实验室、新链空间、Parity、Web3.0基金会联合宣布推出Web3.0 Bootcamp。报名截止时间为3月15日,点击阅读原文可直接报名!
End
※———长按识别下方二维码 关注我们———※
长按识别下方二维码,加入万向区块链
多个核心岗位在招,薪资福利优厚
▼
▼点击阅读原文,立即报名Web3.0 Bootcamp
以上是关于万向区块链蜂巢学院 | 关于ETH2.0路线图,搞研究的大脑在想什么?的主要内容,如果未能解决你的问题,请参考以下文章
万向区块链邹传伟:我们正处在人类货币发展史上一个激动人心的阶段 | 蜂巢学院线上公开课