V神:以太坊 2.0 已没有未解决的研究挑战
编译 | Jhonny
来源 | r/Ethereum
昨日,以太坊研究团队在r/Ethereum平台开展了第二场有关以太坊2.0的AMA (Ask Me Anything)。5个月前,以太坊研究团队开展了第一场AMA,Unitimes此前有整理当时的AMA主要内容,详见《Eth 2.0 AMA | Vitalik: 我对以太坊2.0充满信心!》。今天,我们总结了本次AMA的主要内容。
本次AMA主要由以太坊创始人Vitalik Buterin,以太坊2.0研究者Danny Ryan、Justin Drake以及Carl Beekhuizen来回答Reddit用户的提问。
DCinvestor:你们认为在未来实施Eth2.0的阶段1或阶段2之前,Eth 2.0研究中最大的未解决挑战是什么?
Vitalik Buterin: 我真的认为当前没有未解决的研究挑战。在研究方面,主要是“我们如何更优雅地来实施,并占用更少的代码行和更少的边缘情况”。
Danny Ryan:需要更好地理解无状态和高度抽象的执行模型中可能涉及的激励机制和各种参与者。为了更好地理解相关的设计和积极构建原型来审查相关的想法,以太坊基金会的 eWASM团队和ConsenSys的Quilt团队都做了大量的工作。
Ethical-trade:我没想提问题,就是想以全体投资者和爱好者的名义来对你们表示感谢。尽管总有一些人会抱怨,但我们大多数人都非常支持你们所做的努力。我们非常感谢你们正在建设的去中心化未来。
DCinvestor:此前,阶段0 (即信标链) 的非正式发布日期为2020年1月。你们觉得这个日期现实可行吗?
Carl Beekhuizen:感谢你注意到这个日期是非正式日期 :) 明年年初推出 (信标链) 是我个人的目标,但在那之前还有很多事情要做!我们需要完成的事情有:长时间运行的测试网络 (不管这是如何定义的),对抵押合约 (deposit contract) 的形式化验证,以及准备好的 (Eth 2.0) 客户端,但是现在看起来一切都将按时完成。我们也不想为了赶上某个任意日期而匆忙开出带有很多bug的软件客户端。
Danny Ryan:各个 (Eth 2.0) 客户端团队都做得很好,并在继续挑战极限。我期待在未来几个月里取得令人兴奋的进展,但我也预期最后的路程可能会很长。2020年初 (启动信标链) 是很现实的,也是我们的目标。
dmihal:我对Eth 2.0最大的担心是它会扼杀可组合性 (composability)。难道大多数dapp (去中心化应用) 不会最终选择在同一条分片链中进行搭建吗?就比如与MakerDAO搭建在同一条分片链中,这样他们就可以使用Dai了?
Justin Drake:分片之间的可组合性无疑还是个未知的领域,但我们有理由保持乐观:
为了促进跨分片交易,所有分片都是被设计为同质性的 (这点与 Polkadot 或者 Cosmos 不同);
有一些设计模式可以将分片之间的界线抽象化。这些设计模式将更容易在可编程执行引擎中使用。
由于验证者对分片的证明,各分片被设计成能够友好地实现“快速乐观的最终性 (fast optimistic finality)”,对分片的证明类似于当前Eth 1.0链上的区块确认。也就是说,在实践中,由于单个分片能够快速实现最终性,所有的分片可以充当一条具有逻辑性的区块链。
UI (用户界面) 层也可以将分片之间的界线抽象化。
nicknle:我只是想说…整个团队和项目都非常棒。你们必须面对来自市场的大量噪音,但看到你们坚定不移的乐观和积极态度来为全世界谋福祉,并突破技术、金融和社会的界线,这确实令人鼓舞。继续努力吧,伙计们。
Danny Ryan:谢谢!我只是努力让事情向前发展,而不是太关注市场波动和那些噪音。
avenger176:为什么有这么多团队在搭建Eth 2.0客户端?我知道客户端多样性的重要性,但你们不觉得似乎6个客户端会带来更多的压力吗?支持这么多的客户端还需要在资金方面分配更多的资源。你们认为哪个客户端将是以太坊2.0的Geth和Parity客户端?
Justin Drake:客户端多样性方面有几点需要注意:
当前正在开发的客户端不止6个,而是8个;
我预计客户端会出现合并--一些客户端将可能撑不过2020年;
我预计各客户端会实现专业化--某个客户端会专注于浏览器 (比如Lodestar),或者专注于资源受限的设备 (比如Nimbus),或者专注于企业 (比如Artemis),又或者专注于原型设计 (比如Trinity) 等等;
在(信标链)启动时,需要至少两个客户端处于生产就绪状态。我预计先行的优势会很强;
在某种程度上,以上所有的情况都曾经发生在Eth1.0旧链上。
Vitalik Buterin:我们绝对不想看到双头垄断的局面!就我个人而言,理想的情况是没有任何一个客户端的节点数不会超过整个网络的1/3,这样任何客户端中的任何软件错误都不会导致整个网络的停止运行。虽然如果没有哪个客户端的节点数会超过整个网络的1/2,这也没什么问题,也能为我们带来同样的好处。我希望网络的节点会出现幂律分布,而且很有可能其中一些客户端将不会在主网上被大量使用。
Danny Ryan:我认为之所有这么多的客户端会来完成这项艰巨的工作,是因为 Eth 2.0不仅是一项纯粹的技术挑战,也是一个在以太坊和加密货币领域留下足迹的机会。我很高兴看到有这么多优秀的团队在做着这项艰巨的工作,但最近,我更关注于寻找贡献者来做核心客户端实现之外的增值工作,比如形式化验证、协议的学术分析、测试、轻客户端、web3接口和开发者工具、能够接入任何底层节点且具有强大的用户体验 (UX) 的验证者客户端等等。
PurpleHamster:你们如何反驳有关Eth 2.0过于复杂的批判?
Vitalik Buterin:在过去的一年里,它已经变得相当简单。如果你对Eth2.0规范进行字数统计,就会发行当前规范的字数比以太坊黄皮书还要少。Eth 2.0中有很多东西比Eth 1.0简单得多。但肯定也存留这一些复杂性,我非常关注与将复杂性最小化。
Justin Drake:虽然研究的道路有些曲折和难以跟上脚步,但最终的规范可以说是简单明了的。期待更多的教育性材料能够强调当前Eth 2.0设计的简单性。阶段0大约需要指定1024行代码 (假设以SHA256和BLS12-381为原语)。我预计阶段1和阶段2加起来将有1024行代码 (假设以 WASM 为原语)。
avenger176:当我质押了32 ETH之后,一旦被罚没 (slashing) 了,会发生什么事情?如果我质押的ETH被罚没至少于32 ETH,我会被驱逐出验证者行列吗?
Justin Drake:当验证者被罚没时就会被驱逐出去。还有另一种驱逐机制,即当你累计的 (非 slashing导致的) 惩罚使得你的余额低于16 ETH时,你也会被驱逐出去。
Danny Ryan:你也会损失一定量的ETH。当前设置的最低损失量是1 ETH。如果最近一段时间内还发生了一些其他满足罚没条件的行为,还会有额外的惩罚。如果最近有更多的验证者被罚没了,那你会损失更多的ETH。而如果最近有1/3左右的验证者被罚没了,就会发生最大程度的惩罚,即你会损失所有质押的 ETH。
sassal:当前有关从Eeh1.0向Eth2.0迁移的计划有什么想法呢?
Vitalik Buterin:当前的方式就是将 Eth1.0 作为一个执行环境调入到 Eth2.0链之中。在实践中,这意味着我们将需要在Eth1.0链上进行一次硬分叉,从而调整一些gas费用 (读取存储或者账户的操作码的 gas 费用将上升至2,000-10,000),在这之后的某个时候,我们将会在某个区块高度将 Eth 1.0 链的状态根转移到 Eth 2.0 系统中。我的确认为读取存储/账户的操作码的gas费用将会上升,合约开发者应该注意到这一点并做好相应的计划。
nichlaes:对于那些持有32 ETH但对加密技术知之甚少的人而言,参与staking会很容易吗?“普通人”也可以参与并获取收益吗?Staking会给使用股带来损失ETH的风险吗?我想知道的是,除非“故意”做出有损网络的事情 (比如由于你的互联网供应商出现问题,导致你的验证者节点离线),我们是否可以毫无风险地参与staking呢?
Justin Drake:我预计市场中将会出现针对staking的行业,比如包括质押池 (staking pools) 在内的基础设施 (如 Coinbase 等提供的中心化质押托管服务,以及其他去中心化质押池),还有一些即插即用的“validator in a box”解决方案。在风险方面,对于有时短时间离线的验证者节点而言,相应的惩罚应该是很小的。
tsarlak:假设以太坊达到了100万TPS,账本的大小将每天增长1TB,对此有什么解决方案吗?对于账本大小的增长,你们的预计是什么?相应的解决方案是什么呢?
Danny Ryan:带有分片的Eth 2.0 预计将能处理大约10 MB/s 的数据可用性。这是在分片链中达成共识的数据,并保证数据在2周左右的时间内可用。
当前处理状态和状态执行的方式是采用“无状态(stateless)”的方法,即区块必须包相关状态的默克尔见证 (Merkle witnesses) 才能完成交易的执行。这将会减少任何共识节点必须存储的状态量,但确实会提出有关状态大小的其他问题,比如由谁来存储状态、用户如何获取状态等等。
事实上,整个状态执行都被抽象化了,这样我们就可以尝试多种方案来处理这个问题 (比如状态租金、让用户/dapp 存储自己的数据等等)。Alexey Akhunov 在过去一年左右的时间里研究的状态租金 (state rent) 将可能会发挥作用。
jojojojojojo777:我听说了很多有关 staking 奖励的宣传,但验证者被罚没 (slashing) 时的惩罚是什么呢?针对不同的不当行为 (比如验证者客户端离线,或者重复签名等),网络会有不同的惩罚吗?当前“离线18天将减少60.8%”的规定依旧有效吗?
Carl Beekhuizen:我认为你是将 slashing (罚没) 和 inactivity leak (验证者不活跃而受到的惩罚) 混为一谈了。
Inactivity leak 是指当验证者节点离线18天,且信标链停止了“finalizing”进程,那你质押的金额将会“在18天内减少60.8%”;
Slashing 是指当验证者进行了恶意行为时,其质押的金额就会减少。假设客户端软件没有问题,slashing基本上不太可能发生在你的身上。最低的slashing惩罚是1 ETH,但惩罚会随着与你同时被罚没的人的数量的增加而增长。有关惩罚的更多信息请参阅:
https://notes.ethereum.org/9l707paQQEeI-GPzVK02lA#Why-are-the-Casper-incentives-set-the-way-they-are
sassal:当前在 Eth 2.0 的研究进展方面最令人兴奋的研究是什么?
Vitalik Buterin:最新我对于https://ethresear.ch/t/layer-2-state-schemes/5691的研究最为兴奋。Karl Floersch 等人在 Optimistic Virtual Machine (OVM) 方面的研究也非常有趣。
sassal:研究者们对于当前 Eth 2.0 的经济激励机制满意吗?
Vitalik Buterin:我并不认为当前我们有必要担心具体的数字 (备注:V神是指信标链中质押的 ETH总数和相应的ETH年增发率以及验证者年收益率),不管对于验证者来说相应的奖励是否足够,网络都会启动的。
BC_investor:信标链上线之前,需要多少个 Eth 2.0 客户端团队必须交付完成的客户端?
Justin Drake:至少2个,理想情况是3个。
Shitshotdead:我在考虑在阶段0期间参与staking,但我有些担心 inactivity leak (因不活跃而受到惩罚)。我想知道如果我改主意了,如何才能停止/暂停成为一名验证者呢?我问这个问题是因为在某些情况下,我可能会离线一段时间,但我不想让我的资金因此而不断减少。
Vitalik Buterin:当你处于离线状态时,只有当超过1/3的其他验证者也同时处于离线状态,此时你受到的惩罚才会很大。除此之外,离线的惩罚是非常小的,只要你的在线时长超过了50-67%,那你就会处于净盈利状态 (不包含电脑成本等)。这种激励机制的很宽松的,目标是为了鼓励业余参与者加入进来,促进去中心化。
Justin Drake:“暂停”成为验证者的方式是首先退出 (这可能仅需要半个小时,但也可能需要几天/几周的时间,因为存在一个退出排队机制),之后 (想要重新参与验证时) 再次激活就可以了。
MysticRyuujin:各个Eth 2.0客户端团队是否会觉得他们的客户端实现将能够足够地稳健、足够安全且足够易于使用,使得像我这样的网虫可以安全地运行他们开发的节点软件,在上面质押32 ETH,且不会因为客户端存在 bug 而被罚或损失 ETH 呢?
我最大的担忧就是,我自己并不会进行恶意行为,但会因为客户端存在 bug 而遭受损失。我已经运行 Geth、Parity、Trinity 和 EthereumJ (Harmony) 等节点好多年了,这些客户端存在的时间比任何Eth 2.0 客户端存在的时间都要久得多,但这些客户端依旧会有问题,有bug,有时还会崩溃。
Vitalik Buterin:我希望如此!(Eth 2.0) 激励机制设计的一个关键就是,只有当很多其他验证者同时离线时,相应的惩罚 (不管是因离线还是因被罚没) 才会很高。因此,任何不会同时攻击所有节点的bug只会使你损失很少的资金。
ev1501:我知道现在还为时过早,但对于阶段1和阶段2规范的冻结时间是否有个粗略的估计?
Carl Beekhuizen:阶段2还不太明确,但我希望阶段1规范将在今年第四季度冻结。
jojojojojojo777:1024条分片链,这意味着存在超过131,000个验证者槽位...如果当分片上线时,验证者数量不够怎么办?
Carl Beekhuizen:由于存在1024条分片链,每个委员会中需要128名验证者,因此为了实现每个分片的交联 (crosslink) 需要至少131,072名验证者。如果验证者数量少于这个数值,那就会跳过一些分片,从而保证每个委员会中有128名验证者。
Danny Ryan:系统可以很自然地处理低至64名验证者的情况。在这种情况下,系统安全性会明显降低,但协议可以在技术上继续推进。
TheGreatMuffin:请简单地阐述一下为什么需要开发一条新链,而不是继续发展当前的旧链呢?
Justin Drake:在Eth1.0链上搭建Eth2.0链会是一个糟糕的设计决策,原因如下:
我们将受到当前Ethe 1.0链gas上限的限制,这将会严重影响新链的性能 (比如,将无法实现1024条分片链和质押32 ETH来进行验证);
我们将混合共识层和应用层。这意味着共识层将受制于应用层的DoS向量 (比如高昂的gas价格);
我们将受制于旧链的EVM (以太坊虚拟机),而众所周知,将复杂的合约安全地编入旧链的EVM之中非常困难。
Eth 1.0链无法支持 BLS12-381;
还有其他一些原因。
jojojojojojo777:不知我的理解是否正确,是不是验证者数量越多,finalize所需的时间就越长?
Carl Beekhuizen:在Eth2.0链中,更多的验证者应该不会导致更长的 finalize 时间。通过使用BLS 签名聚合以及通过将验证者组成委员会,我们能够容纳数十万 (乃至数百万) 的验证者。
Shitshotdead:我知道预计大约需要质押1,000万ETH才能为网络提供足够的安全性。假设某个大型组织获取了超过50%的被质押的ETH,并将之用于对网络发动攻击,那网络会发生什么事情?我所理解的是,这种情况下,那个质押总数更少的一方将会被罚没,那这个恶意攻击者是否能够有效地杀死整个网络?
Carl Beekhuizen:如果某个大型参与者想要获取大量质押的ETH来控制整个网络,那他将需要购买2/3以上的所有流通中的ETH,而当他购买时会推动ETH价格的上涨,这样一来使得这一攻击的成本非常高;
其次,只有当你的行为被2/3的验证者证明是恶意行为时,你才会被罚没。PoS 机制的一个很棒的地方就在于,这类攻击可以很好地被处理。作为一个社区,我们可以联手通过硬分叉的方式来将恶意攻击者从当前链中分叉出去,这样恶意攻击者就没有了投票权了。攻击者只是耗费了大量的资金暂时停止了网络。
而在 PoW 链中,如果攻击者购买了具备51%算力的ASIC矿机,那就没有办法将攻击者从系统中移除出去了。
life-is-a-gif:作为一名 ETH 矿工,我主要关心的是如何为Eth 2.0做准备。关于如何继续为以太坊贡献 (和获取盈利),有任何技巧或建议吗?
Justin Drake:Eth2.0将不存在挖矿。你也许可以通过诸如Golem等平台将这些GPU挖矿设备的算力租赁出去。
etheraider:大约什么时候 ETH 的增发率将会显著下降?比如增发率下降10倍?
Vitalik Buterin:当 PoS 链开始承载PoW链以保证安全时 (这可能会在阶段1或者阶段2是发生),那时可以安全地将 PoW 链的挖矿奖励减少约4倍。当 PoW 链完全停止运行时,增发率还会进一步降低。
Jokmok2:当前由哪个运行中的项目/产品可以在短期内改善以太坊的扩容性?
Justin Drake:Layer 2 扩容方案 (Plasma、Rollups、状态通道等) 可以在短期内改善扩容性。不幸的是,在2019年构建Layer 1解决方案仍然需要解决大量的技术复杂性,但并非不可能做到!
he-calm-nyuen:由于存在来自其他DeFi产品的竞争性,Eth2.0的增发率是否足以激励验证者呢?未来其增发率是否会根据需要而相应调整呢?
Vitalik Buterin:据我所知,在Compound 平台质押 ETH 的年化利率在0.02%,因此我们有很大的竞争优势。而“在Compound平台上质押ETH可以获得3%的利率,借出DAI的利率为6%”这种设计具有误导性,因为6%是基于USD (美元) 的,而3%的收益率是基于 ETH 的。但随着越来越多的staking形式 (比如Plamsa、Trubit 以及其他保证金游戏) 的出现,ETH的质押利率将会上滑。
Bob-Rossi:在阶段0期间,Eth 2.0 币可以在钱包之间相互转移吗?如果可以,你们是否关注交易所将上架 Eth 2.0 币呢?
Carl Beekhuizen:Eth 2.0 币的转移只有到阶段1时期才可能实现,那时交易所将会上架 Eth 2.0 币。交易所的上架将有益于维持 ETH 币和 Eth 2.0 币之间的等价。
ConradJohnson:当前关于将 Ether 代币从 Eth 1.0 转移至 Eth 2.0 方面的设计是什么?
Carl Beekhuizen:这取决于你所说的 “Ether 代币”想表达什么意思:
验证者可以向抵押合约 (deposit contract) 中发送 32 ETH,之后这笔存款将转移至信标链上,这样验证者就可以在信标链上参与验证了;
对于只是想要将 ETH 从 Eth 1.0 链转移至 Eth 2.0链的人来说,这方面的设计还没有最终决定,但可能两条链之间会存在一条专用桥,也可能通过抵押合约来实现这一目的;
当前谈论有关 ERC20/721代币在两条链上的转移还为时尚早。如果Eth 2.0 链有了像 Eth 1.0 链那样的执行引擎,那这种转移将非常便捷,但即便没有执行引擎,可能也可以通过只是将ERC20代币的状态根复制过来,从而实现其转移。
PrrJn:抱歉我的问题可能有些愚蠢,但我已经好几个月没有关注以太坊2.0了。是否有一个近期发布的日期?关于staking,需要质押多少ETH?现在我们可以知道相应的奖励了吗?在以太坊2.0方面,你们最自豪的是哪个方面?你们认为币安链 (Binance Chain) 会是以太坊的竞争对手吗?提前对你们所付出的时间和努力表示感谢!
Justin Drake:阶段0可能最早将于2020年1月3日启动。我认为很可能是在2020年第一季度。需要质押32 ETH,验证者的奖励取决于所有验证者的数量、个体验证者自身的表现,以及 gas 市场。我觉得验证者的年收益率大约在10%左右是不足为奇的。我觉得最自豪的就是参与到了这个我认为将以积极的方式彻底改变这个世界的基础设施的搭建之中。币安链不是以太坊的竞争对手。
cdiddy2:当 Sharding 启动时,是否会突然就存在1024条分片链?还是分片链的数量会随着使用的增加而逐渐增长?我觉得一开始就启动大量的分片链会导致大量未使用的空间/容量。
Carl Beekhuizen:所有的1024条分片链会一次性启动。逐渐增加分片链的数量 (可能) 会带来不必要的复杂性。带有大量未使用容量的分片,其gas 价格会更低,因此会吸引更多的用户。
Cockatiel:我原以为Eth 1.0 链只需要升级为 Eth 2.0 链即可,不需要将旧链上的代币交换成新链上的代币。Eth 2.0 币的流通数量会取决于有多少人将 Eth 1.0 币转换成 Eth 2.0 币吗?
Carl Beekhuizen:Eth 2.0 链对 Eth 1.0 链的彻底变革,因此相比于升级,更好的方式是实现一条全新的链。Eth 2.0 币的流通数量的确在很大程度上取决于有多少人将 Eth 1.0 币转换成 Eth 2.0 币。当然,Eth 2.0 链也会发行新币来作为验证者的奖励,从而也会增加新币的供应量。但最终,所有Eth 1.0币都将会转换成 Eth 2.0 新币。
JezSan:随着最近一些其他区块链平台实现了每秒处理数千比交易 (虽然这些平台并没有实现分片技术),你们能否想象Eth2.0中单条分片链也能与这些“全新&快速的区块链平台”一较高下?如果不能,这些区块链平台是如何实现其高性能的?Eth 2.0 是否也能如此?
Vitalik Buterin:这些区块链平台真的实现每秒处理数千比交易了吗?通常我的“直觉”是他们吹嘘的吞吐量是他们真是吞吐量的10倍。
如果某条链并不活跃,那我并不相信任何有关于这条链的数字,因为在实验室中轻易实现的高数据,在实践中并不能支撑得住。在试验期间,以太坊本身也可以实现500-1,000的 TPS,且 Plasma在试验期间也可以实现数十万的 TPS。
如果这些区块链平台在实践中真的能够实现1,000以上的TPS,那为什么运行在服务器上的节点数如此至少?
Zlizard:阶段0在扩容性方面会有提升吗?通过Sharding,以太坊每秒能够处理的交易量将是多少?
Carl Beekhuizen:阶段0的目标就是追踪验证者的状态和产生随机性,因此询问有关其扩展性方面并没有多大意义。
在TPS方面,并没有明确的答案。一个基本的计算是,如果每条分片链都有着与当前Eth1.0链相同的吞吐量,那整个Eth 2.0 系统的吞吐量将是:16*1024=16,384 TPS (假设不存在跨分片交易)。
尽管如此,以上这些数字都是没什么意义的,因为Eth 2.0 网络将会与 Layer 2 扩容方案 (比如 Rollups 和 OVM 等) 一起使用,这将有望带来非常高的吞吐量。
Miracolixe:如果Eth 2.0 引入 PoS 机制,是否会涉及到一些法律障碍需要澄清?其代币可能会被视为是证券吗?
Justin Drake:我并不知道有哪个管辖区将Eth1.0链上的ETH代币视为证券,由于Eth 2.0 链上的 ETH 代币与就连上的代币基本一样,那么新链上的 ETH 应该不会被视为证券。