编者注:2020 年 7 月,以太坊基金会研究员再一次在 Reddit 上举行 AMA(有问必答)活动。本文为问答内容的节选。为便于阅读,下文对回答者的名字都做了缩写,“Justin” 代表 “Justin Drake”,“Vitalik” 代表 “Vitalik Buterin”,“Danny” 表示 “Danny Ryan”。

Phase 0 发布时间问题

问:上一次 AMA 的时候,你们提到 Phase 0 可能在 2020 年 7 月发布。现在看来是不太可能的,当然我们却确实更接近了。从你们个人来看,我们什么时候能看到 Phase 0 部署上线呢?就不用说具体哪一天了,我只是想了解一下最新的时间表。谢谢!

Justin:我希望能在启动前看到下列事项完成:

一个有超过 3 个客户端参与的公开测试网能平滑运行 2~3 个月一个带有激励措施、鼓励大家实验攻击的网络能运行 2~3 个月(这里有更多细节)bug 悬赏计划能运行 2 ~3 个月客户端间更严格的 differential fuzzing 测试(见此处)

上述所有事项在 2020 年第三季度都做不完。再加上 11 月 26 日的感恩节假期和 12 月假期,我觉得要在 2020 年推出 Phase 0,最后一个可能的机会是在 11 月中旬,也就是 4 个月后。我现在会倾向于认为 Phase 0 启动最早、最现实的时间是比如 2021 年 1月 3 日(比特币 12 周年)。

在这条推特中我解释过,(出于一些美好的目标)我们已经让 Eth2 变得对我们自己来说都有点难搞。不过,在等待黎明之前的这段时间里,可能还会有一些好东西能让你激动起来:

我们现在预计,在 Phase 0 启动的时候将有 3 ~4 个能用于生产环境的验证者客户端。感谢 Lighthouse、Nimbus、Prysm、Teku 客户端团队的努力 —— 他们提高了生态的多样性和去中心化。blst 库正在为客户端实现 best-in-class 性能(例子请看此处),并将在 2020 年完成形式化验证。BLS12-381 硬件钱包整合已在进行中(例子请看此处),新的保证金合约在用 Solidity 编写,Gas 消耗可以更低。

Vitalik:不管说这话有没有用,我个人很不认可这一计划(译者注:指在 2021 年 1 月 3 日启动),我绝对更喜欢能在那天以前就启动 Phase 0,不论我们要付出多大努力。

Eth1 从推出第一个多客户端测试到启动花了 4 个月时间(从 2015 年 3 月底 Olympic 测试启动到 2015 年 5 月底 Eth1 启动),我会支持从 Altona 测试网启动(7 月)后安排 4 个月的倒计时。Eth2 Phase 0 有些地方比 Eth1 简单,有些地方更复杂:更复杂的 PoS 共识机制,但没有那么复杂的 GPU 导向性 PoW;需要更多的优化,但没有复杂的虚拟机,等等。我倾向于认为 Eth2 Phase 0 更简单一些,而且在 Phase 1 之前,Eth2 上不会有任何重要的应用,所以遭到破坏的实际风险还更低(虽然你可以说整个生态变得更大了)。所以,整体来说,我觉得没有道理认为 Eth2 Phase 0 的启动周期要比 Eth1 的启动周期更长。

Danny:说实在的,我和其他人都押注在 2020 年能够发布上。

(译者注:在该问题下面产生了许多回复。包括 Justin 也回复了 Vitalik 的说法,认为 Eth2 Phase 0 的启动还是复杂很多,而且从安全的角度来看还有不少事情没做。但大部分回复者都表示支持 Vitalik 的意见,或者表示不能接受 Justin 的预期,认为发布如果再推迟会产生信任危机,等等。后来,Justin 在自己的推特上说:呼声响亮而且明确,整个社区都以在 2020 年发布为目标,那我们就加油干吧。)

问:Altona 测试网已经运行几周了,离 可能的 最终测试网还有一个月时间,那么,现在大家对 Altona 该运行多久有共识了吗?(假设没有 bug)我们已经听到很多开发者说什么 “两个月到三个月”,那我很好奇,这到底是不是一个正式的意见呢?还有两个相关的问题:就假设要测试网要运行 3 个月时间好了。那 Altona 运行的时间算不算在内呢?还是要从最终测试网启动的那个时间点开始算呢?

Danny:在最近我跟各 Eth2 客户端团队的交流中,客户端团队已计划为在几周内重启一个更大的公开测试网作好准备。

我可以接受最终测试网平稳运行 6~8 周就行(如果事情非常顺利,而且测试网上已经出现了很多样的行为)。但是其他人可能希望看到至少运行 12 周。在这一点上,我会听从客户端团队的意见,因为他们所维护的软件才是即将实现的主网的安全性的最终来源。

Altona 的运行时间不会算在那 3 个月以内,但是,提醒一句,主网的推出计划可以开始并行实施。也就是说,如果这个测试网足够稳定,那我们就可以开始部署保证金合约,主网启动的日子也可以确定下来,但这个日期仍然要依赖于当前测试网表现出来的稳定性,如果发生了意料之外的故障,也要作相应的推迟。

有很多部分都在推行,但最终它们会齐齐整整一起到来。大部分的责任最终都是由客户端团队来承担的,所以我不会把话说死。当我们的对话越来越明显地呈现出结论时,我会写文章公开大家的计划,绝对不会让社区蒙在鼓里。

Aditya Asgaonkar:我们已经有计划启动另一个带有赏金的测试网,成功发动攻击者就可获得奖金(也就是 “attacknet”)。至于 Eth2 规范和客户端的稳定性,一个很好的指标是 attacknet 很长一段时间内没有发生严重的攻击。这个 “很长” 到底要多长,也是一个需要小心确定的事情。我个人意见是要 3 个月,对安全专家、Eth1 开发者、黑客爱好者等等群体来说,要 3 个月才能正经尝试打破这个系统。

问:现在发布保证金合约的计划是什么样的?

Carl Beekhuizen:关于在 Phase 0 启动之前我们还需要做什么,我觉得 Justin 已经回答得非常好了。

关于保证金合约的实际部署时间,如果我们愿意的话,现在就可以部署上去,但结果只不过是一些资金会一直锁在里面,直到各客户端准备工作就绪。

所以关于保证金合约的部署,最重要的一方面是保证对哪个地址应成为保证金合约地址达成共识。毫无疑问,日后会出现许多钓鱼合约、尝试骗人钱财,所以,让大家都知道保证金合约是哪个是非常关键的。到时候会有一个让合约启动的仪式,然后我们就可以宣布这个地址,让尽可能多的人都知道这个地址。

有很多办法能跟保证金合约交互。我就一直在开发 Lauchpad,这是一个托管在 ethereum.org 网站上的接口,让大家能够存入保证金、成为验证者。客户端团队也在设计他们各自的保证金接口,帮助平滑化存入保证金的流程。

问:大家担不担心在 Phase 0 阶段没有足够多的人对 staking 感兴趣(因为他们的 ETH 要锁定很长一段时间而且不能转账)?

Danny:我个人感觉是早期参与的个体肯定比最终参与的个体少,但已经有许多 ETH 持有者在跃跃欲试了。我估计达到启动 Phase 0 所需的最低门槛是没有问题的,但因为这个系统是一个新系统(因此有其内在风险)、锁定周期又不确定,我估计好几年才能实现锁入 1000 万 ETH 的目标。

Justin:我的猜测是我们将很容易达到 50 万 ETH 的信标链启动门槛,部分原因是早一点参与可以早一点开始拿 staking 奖励;部分原因是以太坊有一票狂热的粉丝会很乐意参与。

长期锁定也有一些好处。举例而言,我就希望长期锁定能过滤出那些又懂技术、又希望长期囤币的人,这样能更好地适应信标链,因为届时信标链可能出现动荡。