注:此为2020.10.28 上海以太坊Meetup的第一场圆桌的记录稿,部分嘉宾对内容进行了修订。记录人:沙漏时间。
彼时,Eth2的phase 0还未启动。站在当下,回顾这场圆桌特别有意义。
圆桌1:以太坊2.0 Phase0讨论
主持人: Esther(ECN)
嘉宾:Vitalik, Wang Hsiaowei(EF), Jan(Nervos), 阿剑(EthFans), Rudy(InfStones), 喵叔(SparkPool)
Q1:测试网中的问题
Esther:Eth 2.0快要上线了,存款合约正在审计当中,我们可能会在第四季度看到存款合约正式上线(注:已于11月5日上线)。第一个主题,在今年已经发布了很多测试网,在这个过程中产生了许多的问题,不是一帆风顺的,虽然这也是我们的初衷,希望在测试网中暴露一些问题。所以我们的问题是,从测试网中暴露出的问题中,有没有一些我们需要担心的事情,挑战或是不确定性?
Vitalik:你说的那个测试网中的低参与率问题,即很多验证人没有参与验证,这不是区块链的协议问题,而是因为测试网络没有利益,缺少经济激励。所以你启动一个节点,但不参与验证,并没有什么代价,所以很多人就不参加了。现在的低参与率不意味着主网的时候会有问题。这个问题仅存在于测试网。
还有一些客户端的Bug,8月份的bug都是比较严重的,但是现在还有一点,但是已经不多了。很多客户端也都通过了安全审计,昨天有一篇Quantstamp的文章(https://quantstamp.com/blog/quantstamp-completes-audit-of-2nd-eth-2-0-implementation),他们看了ConsenSys的Teku的工作,代码已经审计好了。所以,我觉得现在那种客户端的代码相关的问题还有一点,但是不多。如果你看现在的情况,和以太坊1.0发布前的情况相比,现在测试网的情况已经是特别稳定的。如果说以太坊1.0的时候我们有很多问题,我们有三个月的时间要去解决共识的问题,但是现在没有共识的问题,现在只有客户端的效率问题和其他问题。所以我现在比较乐观。
Hsiao Wei:我们在今年测试网的launch过程中学到了很多,像现在最新的测试网Zinken,老实说我们在启动测试网Spadnia的过程中的排练失败了,我们后来才有了Zinken。但在这个失败过程中,我们学习到了,像很多客户端一开始没有意识到发布一个P2P的正在运行的软件版本与发布自己本地运行的软件是不同的。要怎么样让全网同步更新,我们今年在测试的过程中学到了很多,相信主网上线的过程会更加顺利。像共识方面的bug是少数,当然非常严重,像在8月的那场崩溃之中,回头来看对社群是一个福音,我们当时发现了很多内存的问题、客户端如何有效分配资源的问题,这些问题在Medalla的版本中都得到了更新。
Esther:我们也知道测试网的低参与度问题还是因为那不是真的ETH,大家比较散漫,测试网的初衷还是能暴露出一些问题,给客户端团队、开发团队一些优化空间。所以说,我们也看到在最近的提案中,为了降低早期的风险,是有降低惩罚力度的,为验证者减轻风险。
阿剑:我基本上是认同第一点的,即低参与度的问题确实是因为没有实际的激励,让验证者及时退出共识。但是我认为,即使是在实际的主网上,不能敲定终局性的时间会被缩短,但是它的影响可能同样非常深远。我个人比较担心的是例如在 Medalla 测试网 8 月份的崩溃中暴露出的一些问题,因为当时不仅仅出现了长期不能敲定的情况,而且不能敲定的状态都会放在客户端的内存里面,特别明显的是 lighthouse 客户端出现了内存被挤爆的问题。这个部分可以认为是客户端实现的问题,但是这也意味着例如针对时间同步的这种可能产生大规模障碍的攻击时,客户端必须设计得非常强韧,否则即使我们有四种客户端,每种客户端都占一定的比例,仍然有20%、25%的客户端可能出现问题。所以我最担心的是目前的性能能应对多大规模的攻击。
Esther:阿剑也抛出了客户端性能和客户端多样性的问题。所以现场的嘉宾?
Jan:我觉得对于第0阶段的整体的风险,首先第0阶段已经相对简单,把一个非常复杂的事情拆解,这个做法是非常好的。我觉得最大的风险在于,以太坊一直在选择多版本的程序,同时做很多客户端,这个其实是一个很复杂的。现在的研究团队能去保证协议本身没问题,但我们现在做的事情是如何通过工程把协议变成具体的代码,变成实现。这个地方,有越多的团队就越容易出问题。尤其是在这么早期的情况下,你在这么早就选择这样的道路,对我来说会有一些得不偿失。可能一开始,我特别希望有多个版本,两个可能就够了,而不是7个,所以我也很久没有跟进这方面的开发进展了,我会觉得这是一个担心的部分。
Rudy:确实如Jan刚才所说,以太坊已经分阶段了,阶段0是一个比较简单的。在阶段0阶段的难点就是要教育以太坊的社区和持币者,PoS所带来的staking的新模式。刚才Vitalik和Hsiaowei都表达了这样一种观点:它是一个测试网,大家对它不那么重视,因此参与率不高。但是,同样因为它是测试网,因此也可能隐藏了一些其他的问题。因为我之前有其他公链staking的比较多的经验,比如说:我们现在是在用虚拟的以太坊参与2.0的测试,所以我们对它的价值和slash的风险没有特别注重,那么如果阶段0真正上线,我们把ETH锁仓进去,面对的是一个很未知的锁仓时间。这个机会成本是所有考虑参与的人要面对的。这一点在测试网阶段是没有暴露出来的。所以这几天万向峰会期间,我也和一些朋友沟通流动性的解决方案。流动性解决方案也分为去中心化方案和中心化方案,就好比我们把BTC搬运到以太坊上,也存在这两种方式,中心化的方式跑得更快。所以以太坊2.0在追求一种极致的去中心化,包括32个ETH的设计以及验证人的数量,但在流动性的解决方案上可能会出现一些中心化的手段。但是,也可能在另一方面促成更大的参与率。总体来说,因为阶段0在技术上比较简单,在运行的过程中遇到的主要困难还是教育公众熟悉这样的新模式,例如在此过程中的参与率的问题、节点掉线的问题、节点掉线后能否呼吁大多数人回归到验证过程,尤其现在惩罚的比例降低了,能否起到很好的激励。我觉得是很大的挑战。
喵叔:前面几位嘉宾对测试网的情况都做了概括和说明。我提供一些其它的视角。本身PoS对于矿池来说会是一个根本上的生意模式的改变,星火矿池从去年开始尝试跟进Staking的产品线,并且也在跑验证者节点,同时也在考虑如何解决Phase 0阶段的流动性问题,设计了几种解决流动性问题的方案。这些看起来都是工程问题,但是最终回到了另外一个问题。流动性挖矿给以太坊带来了里程碑的改变,就是以Rollup为核心的扩容方案,这个里程碑比Phase 0上线更重要,也让我看到以太坊的整个决策在朝着更加客观可用,可以接纳更多社区的力量,接纳更多可用的方案的高效的思路方面发展。因此,我们在思考,从PoW转到PoS的过程中我们到底在付出什么,Phase 0这个阶段是否是必需的,我们是否真的要做这件事情。因为看起来PoS的Staking在终极上想模拟PoW挖矿的过程,从设计上,从算法上模拟这件事情,但是否丢失了什么东西?我过去没有过多思考这个问题,而是更多地在尝试跟随ETH 2.0的进度,但是前段时间更多在各地与PoW矿工进行比较多的沟通。我的思考是,PoW的整个生态和激励是有更多的闭环,比如说挖矿的层面,PoW是有自有闭环的,矿工不太在意以太坊链上在做什么,这是不是会带来更多的安全性?转到PoS之后,参与staking的人和PoW矿工的人的选择会怎样,人对于安全性的作用可能会高过模拟的作用。我比较担忧是最终转向PoS之后,生态的参与复杂度会降低,因此会不会带来更多安全性的问题。
Q2:理想的以太坊路线图
Esther:喵老师把问题引向了下一个话题,我们也看到了以太坊接下来的发展路线可能是PoS+Rollup+Sharding。喵叔提出了一个质疑,就是PoS是不是有必要,与PoW的权衡,取舍在哪里。我们想要就这个话题给大家开放讨论的空间,每个关心以太坊的人都会关心以太坊的下一步走得稳不稳、好不好。想问各位,有没有心目中比较理想的以太坊路线图?
Vitalik:这个怎么回答……因为我已经说过很多遍以太坊的路线图,先做PoS,以太坊1.0和以太坊2.0的合并,等到2.0安全之后,可以把现在所有的东西搬到PoS上面,同时再做分片和扩展性的东西。长期的协议不会有特别大的变化。要做PoS还是不要做PoS,是非常复杂的,关于这个话题我已经写了比较多,我有一个Proof of Stake的FAQ,还有一个Proof of Stake的设计哲学。这是一个比较复杂的权衡,但是我还是觉得PoS虽然存在缺陷,但不是特别多。假如一开始所有的区块链都是PoS,有一个人发明了挖矿的概念,可能大家不会喜欢。(听不清)。
Esther:大家有没有什么不同的看法?阿剑老师有话要说。
阿剑:我觉得这样的安排很好,一位支持当前以太坊路线图(PoS+分片+Rollup)的发言,一位反对者发言。现场应该是有3位PoS支持者和PoW支持者。我心目中的以太坊路线图非常简单:以太坊1.0+Rollup。我想去挑战Vitalik,他认为PoS有很多优点,相对于它的牺牲是值得的。我在这里的挑战是:在我看来,这件事情不像我们想象的那样可持续,根本原因在于两个点:(1)PoW的这个世界中,生产工作量证明的过程和节点间的P2P通信过程是分开的。也就是说你可以有无数个矿工在网络之外,随便在哪里,生产PoW证明,其实你不会占用这个系统内部的带宽开销。但是PoS刚好相反,要生产证明必须要在系统内部不断与其他验证者通信来产生终局性,会占用系统内部的带宽开销。在我看来,这是技术上的非常大的不同。(2)其次在于验证,如果你只是要验证这条链的共识,在PoW里面非常简单,你只需要验证工作量证明即可,而在PoS世界中,它对于共识的验证,必须要验证每一位共识参与者的签名是否有效。假设有128位参与者,就需要验证128个签名,即使采用BLS的签名方案,可以通过聚合减少数据开销,但不能节约验证的次数,仍然要验证128次。我觉得可以得出一个结论在于,PoS系统的验证者的增加会导致内部开销和带宽成本上升,这是非常大的缺点,而在PoW中并不会出现这样的情况。这只是共识层,而没有涉及交易。如果我们把验证者的开销分为验证共识的开销和执行交易的开销,PoW可以保证第一部分的成本长期保持在比较低的水平,但PoS第一步的成本会随着共识的参与者数量的增加而不断增加。这在我看来是非常大的缺陷,这使我不太相信PoS系统可以做到长期的发展,这个是我在这里比较核心的观点,就是这个属性让我觉得PoW可以在长期发展中保持相当好的竞争,因为它的节点在共识层的开销是相当低的。注意是验证共识而非参与共识。
Vitalik:这个我可以回答。你完全可以说PoW在每12s只需要验证一个区块,而PoS要验证很多签名。不过你可以看现在,实际上验证共识的成本是非常低的,可能比现在验证共识的成本还要低10倍。我的电脑上有一个测试网的节点,也有一个以太坊1.0的节点。以太坊1.0节点启动的时候,我的电脑是比较慢的,很消耗计算。我在开Madella节点的时候,真的只需要一点点。原因有两个(1)BLS聚合签名可以把很多签名放在一起验证,很多签名一起验证的成本是比较低,验证500个BLS签名的成本可能只是验证1个BLS签名的2倍左右,所以这是很大的效率的改进。(2)我们的PoS和Tendermint、DPoS这样的PoS是比较不一样的,Tendermint每一次出新的区块需要所有的节点参与验证,例如有1000个节点,10秒出块,那么每10秒就要验证1000个签名。但是在我们的算法里,有32个slot,在每个slot只需要有3%的节点发一个签名,所以这个的成本相对不高。我想说的是,PoS并不一定需要验证很多签名,如果你看Cardano的Ouroboros,和传统的PoS相比,每次要验证的签名只有一个。我们做的每个区块需要10个、100个、1000个签名的原因是,每一个区块可以收到很多confirmation,所以你把交易发布后,5-10秒后可能就有特别高的安全性。按现在的标准,你需要等12个区块,比特币需要6个,但是在PoS的方式中就只需要几秒钟。这个有点像把许多confirmation集中在一起。
Esther:你可以说中文。(观众笑)
Jan:我觉得阿剑的观点是非常有趣的分享。阿剑刚才一直在强调验证共识的时间,我觉得Vitalik的第一点可能有些混淆。如果你把Eth 1.0的客户端和Eth 2.0的客户端去比较,你会发现Eth 1.0的客户端的大部分时间是花在交易的验证上。PoW的验证非常简单,是单次的Hash验证,这个一定比BLS签名的验证快很多倍,所以我觉得这里面有一些不一样。我从我自己的角度说一下对这个问题的看法,我是Nervos的架构师,我们也做PoW,我们也支持一般性的智能合约,所以从我的角度来说,我会希望以太坊坚持现有的路线。因为这样,Nervos将会成为唯一一个PoW的智能合约平台,这会给我们非常足够的追赶的时间。从这个角度来说,我挺希望以太坊坚持自己的路线。从另外一个方面,确实如Vitalik所说,PoS这个词涵盖了很多不同的内容,不同的项目是非常不一样的。总的来说,我觉得以太坊的PoS在各个方面是非常完善和平衡的,也是我最喜欢的PoS之一。所以,要比较PoW和PoS的话,可能要跳出具体的共识算法范围,更多从两者抵御女巫攻击的手段的角度去考虑我们去采用哪一种。因为它们最后的原理是一样的,即我们通过稀缺资源的分配来防止攻击者无限制去复制它的身份,这是这两者的本质。我会更喜欢PoW的原因是,它会带来一个更加开放的系统,因为它依赖的资源是PoW体系之外的资源,它依赖的是能量和硬件,是在物理世界而不是系统内部的资源。而PoS更依赖系统内部创造出的资源,会更加封闭。因为,已经拥有这个资源的人可以得到更多的资源,即新创造出来的token分配,往后时间越来越长,更容易聚集在现有拥有资源的人的手中。为什么开放系统更好呢?再往下一步想,就是你认为哪一种资源的分配更公平?区块链的出现很多时候不是在追求效率,而是在追求公平。这就是我们为什么希望有去中心化,希望有各种各样很奇怪的设计。如果我们单纯追求效率的话,我们用中心化的系统就好了,那已经解决了一切问题。如果考虑到公平,考虑到在寻找一种资源,抵御女巫攻击的手段。这个问题翻译过来就是,哪一种资源在世界上的分配是最公平的?在我看来,我觉得能量的分配是最公平的。因为,地球上所有的能量都是来自太阳(认真脸)。大家可能觉得比较科幻,但随着能源科技的发展,我们会找到越来越多的清洁能源,风能、核能、水电(中国的大部分矿工在用水电)、清洁的煤的能源。这些能源分配在全世界各个国家,美国、北欧,各个地方都有矿工,我觉得这个资源分配最公平。这就是我会喜欢PoW的原因。(Jan因为有其它安排先行离开,向听众致歉)
Esther:大家也是意犹未尽,我们希望讨论是endless的,在一会儿的其他环节和讨论环节,嘉宾也可以保持在线参与辩论。喵老师还有什么要补充的?
喵叔:不是说一个PoW一个PoS吗(话筒交给Rudy)
Rudy:好的。刚才Jan说得很好,说了一些比较具体的问题,然后又上升到比较哲学的层面。比较具体的部分,Vitalik回应阿剑的部分已经说到了,虽然举的那个例子Jan觉得不妥,因为Eth 2.0的阶段0和Eth 1.0是不能比较的。但是Vitalik想表达的意思是交易速度究竟慢在哪里,应该优化哪一部分,就像电流流过电阻的时候,应该优化电阻最大的部分,所以电阻比较小的那部分是10倍还是几十倍,其实不是最重要的。说到资源的分配上,我觉得如果说能量都来自于太阳,确实如此,但是获取能量或者说垄断能量的效率是不一样的,所以说电价便宜的地方会适合挖矿。我的意思是,能量来自太阳并不能说明哪里都是公平的,其实一方面在现在这个层面来说,电价最便宜的地方,他们的优势是最集中的。如果要讨论不同的能源种类的话,那么就是掌握先进技术的人或国家,他们的优势是最集中的。所以这并不是一个完全公平的分配。当然,不用讨论这么细,我认为不论是币还是电,还是其背后体现的技术提升的资源,我觉得他们之间都是可以互相转换的。并不是用币作为系统的资源,就会造成体系的封闭,除非以太坊的所有持币人都不卖币,阻断你进入这个体系。在现实情况是,资源的转换是非常方便的。这个是我关于这两点的观点。我认为这两点都不是很成立,因为PoW和PoS几乎站在一致的起跑线上,这个时候比较两者的优劣,其实可以参考Vitalik之前的文章,PoS的优点在于轻便、效率高,可能和分片这种体系更加契合,我觉得用PoS是没有问题的。我觉得PoW的支持者对于应用PoS之后可能产生的问题,尚没有在已经运行的PoS公有链上观察到,可能很多是停留在想象的阶段。我觉得应该选择一条更加切实、对现在有帮助的道路。
喵叔:拉回刚才的主题,路线图。我心中的路线图和阿剑的比较像,每个阶段应该是可用的。无论如何拆解阶段,每个阶段应该是可用的,尤其是对于以太坊来说。PoW是不是可用的?它是可用的。是否可以扩展?可以扩展。分片有什么问题?数据可用性的问题、存储数据的问题。当然这些可以继续推演和研讨,可能有更多的社区方案会出现。回到PoW和PoS这件事情上,已经拔高到太阳这个高度了。我确实比较认可一点是,大家无论怎么关注矿机怎样、算力怎样,但它确实就是一个能源行业,不单单是电价,它会关系到参与的人的社会状态、政局的稳定、经济的因素,很多很多。因此,其实带来的是PoW本身的基础更复杂。举一个例子,我理解的PoW的生态是在土壤里种菜,里面会有小虫子,会有细菌,这些东西不是为种菜而生的,但是实实在在产生了很多的因素,促成了植物生长。因此,我们叫它所谓的生态。PoS在朝着一种什么样的道路在走呢?你要种菜,你需要水,你需要营养液,我们搞水,搞大棚,这个还能叫生态吗?我觉得这个叫“共识内卷”,好吧,一个新的名词。我不知道怎么再去解释这个词,我只是想表明自己简单的立场,我会认为以太坊在当前的PoW共识基础之上,其实已经捕获了足够丰富的人员参与,甚至这些人并不真的关心以太坊之上的应用,他们也在以太坊做出贡献,他们自己都不知道。矿业有自己闭环的经济体,更像是河流山川里的水体,有泥潭有水草有鱼。我会觉得这样的生态更丰富,创新更多,可能性更多,而不是定向地我们要搞一个什么样的东西。我会从生态角度去思考。
Esther:Panel时间也差不多,感谢大家的精彩讨论,我们也收获到了一些新词:Power、Poser、共识内卷(Consensus Inclusion?),我觉得内卷这个词用在这里挺合适。感谢大家发出不同的声音,不同于以往的说教式的演讲。总结一下,我自己喜欢的一位作家(编者注:韩寒),他评价中国的教育是“没有立场,只有是非”,但是我觉得在去中心化世界是反过来的,“没有是非,只有立场”,因为更多的在起作用的是共识性的东西,这也是以太坊社区一直感染到我的地方。第一个Panel到此结束。