通告

Eth2 更新速览 No.8

Ajian   |     |   331 次阅读

要点速览

存款合约的审计和验证

Runtime Verification 最近完成了对 Eth2 保证金合约(deposit contract)字节码的审计和形式化验证。这是通向 Eth2 阶段 0 主网的一个重要里程碑。这项工作已经完成,我希望社区能对此作些反馈。如果在正式规范中发现任何漏洞或错误,请在 Eth2 规范库中发起 issue。

K 框架中指定的形式语义明确定义了 EVM 字节码所对应的行为,并证明这些行为成立,其中包括输入验证、对默克尔树迭代的更新、日志等等。这里是指定内容的(准)宏观讨论,在这里进一步了解完整的形式化 K 规范。

在这里我要感谢 Daejun Park(Runtime Verification 成员)所付出的努力,以及 Martin Lundfall 和 Carl Beekhuizen 在此过程中提供的许多反馈和评论。

我还想说,如果形式化验证是你感兴趣或擅长的领域,那么请不吝提供意见和反馈。

上月关键词:最优化

过去一个月的主要工作就是优化。

尽管在目前看来,做出 10 倍优化或 100 倍优化对以太坊社区来说不太切实,但是要抵达终点,这一阶段的进展也至关重要。

信标链优化的重要性

(为什么不可指望设备的进步来适应信标链)

信标链作为 Eth2 的核心,是分片系统不可或缺的部分。要同步分片,无论是单个分片还是多个分片,客户端都必须同步信标链。因此,要在普通计算机设备上运行信标链和少量分片,就要使得即使在验证者高参与度(约 30 万以上验证者)的情况下,信标链的资源消耗也要相对较低

为此,过去一个月 Eth2 客户端团队的主要工作都集中在优化方面,减少了阶段 0(信标链)的资源需求。

值得高兴的是,我们正在取得显著的进展。以下概述性内容并不详尽,但有助于读者了解我们的工作。

10万验证者?Lighthouse:轻而易举

几周前,由于出现见证消息传播中继循环问题,信标链节点自身出现 DoS 错误,Lighthouse关闭了测试网(当时在线有约 1.6 万验证者)。Sigma Prime 迅速修复了这个漏洞,并致力于开发更大更强的测试网(要能容纳10万验证者!)。过去的两周,他们一直在做优化工作,以期实现这种规模的测试网。

Lighthouse 测试网的一以贯之的目的是确保用户只需部署带有两个 CPU、8 GB 内存的 VPS 就可以运行验证者。在 10 万验证者规模的初始测试中,客户端一致使用 8GB RAM,然而经过几天的优化,Paul 已经将资源的使用降低到了稳定的 2.5GB,而且同沿着同一思路还有继续优化的肯恶搞。Lighthouse 在状态哈希计算方面也取得了很大进步,而 BLS 签名验证已被证明是 Eth2 客户端的主要计算瓶颈

新的 Lighthouse 测试网发布在即。可以进入他们的 discord 聊天室了解最新进度。

Prysmatic 测试网规模持续扩大,同步速度显著提升

几周前,Prysm 测试网庆祝了其测试网挖出第 10 万个 slot,验证者数量超过 2.8 万个。目前,测试网已经挖出超过 18 万个 slot,活跃验证者数量超 3.5 万。在维持公共测试网运行的同时,团队还能进行更新、优化、稳定性提升工作,这是一件非常了不起的事。

Prysm 目前正在取得许多实质性进展。在过去的几个月中,我与许多验证者沟通过,从他们的角度来看,客户端一直在显著进步,其中一个令人兴奋的进步是同步速度的提升。Prysmatic 团队将其客户端同步速度从约 0.3 区块/秒 优化到了约 20 区块/秒,极大地优化了验证者用户体验,使得验证者能够更快地连接并参与到网络中。

Prysm 测试网的另一个优化是加入了 alethio 的新 Eth2 节点监测器,Eth2stats.io。这是一项选择性服务,以便节点能够在某些时候汇总统计信息。这将有助于我们更好地了解测试网(或将来 Eth2 主网)的状态。

眼见为实!快来亲自尝试一下吧。

proto_array 备受喜爱

Eth2 核心规范经常会用明显并非最优的代码来指定预期行为。可见,优化规范代码的目的是增强可读性,而不是提升性能。

规范规定了系统的正确行为,而算法则是执行指定行为的过程。多种不同的算法都能一致满足相同的规范。因此 Eth2 规范允许客户端团队权衡轻重(例如计算复杂度、内存占用量及实现复杂度等等),用不同的方法实现各个组件。

分叉选择(fork choice)就是其中一个例子,此规范用于计算出当前区块链的顶端。 Eth2 规范用一种简单算法来表示这种行为,以清楚地显示常情与例外情形,例如,当新的见证消息出现时如何更新投票权重,新区块被敲定后该做什么等等。然而,只是简单粗暴实现规范的算法将永远无法满足 Eth2 的生产需求。因此,客户端必须更深入的考量在他们的客户端运行中的各种计算负担,并使用更复杂的算法来满足多种要求。

对于客户端团队来说,所幸一年前的文件里就有所参考。当时,Protolambda 实现了一系列不同的分叉选择算法,并列出了每种算法的优势与权衡取舍。最近,Sigma Prime 的 Paul 发现了 Lighthouse 分叉选择算法中的一个重大瓶颈,于是就去寻找对策。最后,他在 Protolambda 的成果中发现了 proto_array 算法。

虽然为了移植 proto_array 以适应最新规范耗费了一些精力,但集成之后,proto_array 便被证实能够使“运行时间缩短几个数量级,数据库读取也大大减少”。自首次集成到 Lighthouse 之后,proto_array 很快也被 Prysmatic 应用到其最新版本中。与其他算法相比,这种算法具备更加明显的优势,proto_array 也就迅速成为大家的宠儿。我非常希望未来会有更多其他团队应用起来!

阶段 2 研究进行时:Quilt、eWASM、TXRX团队

阶段 2 会在分片中引入状态和执行。尽管阶段 2 的一些核心原则是相对确定的(例如分片之间通过交联与默克尔证明进行通信),但阶段 2 的设计仍然保持一定的开放性。在过去的一年里,Quilt(ConsenSys 研究团队)和 eWASM(以太坊基金会研究团队)一直在致力于阶段 2 研究工作,以期在这个开放的设计领域进行探索,与阶段 0 和阶段 1 的规范和构建工作并行。

为了实现这个目标,近期我们已经举办过许多公开的视频会议,ethresear.ch上也发布了相关的帖子。现在有一些不错的资源能够提供认知帮助,以下仅选取部分:

除了 Quilt 与 eWASM 团队外,新加入的 TXRX(ConsenSys 研究团队)也将部分精力投入到阶段 2 研究中,该团队最初的工作重点是增进对跨分片交易复杂性的理解,研究将 Eth1集成到 Eth2 的可能途径,并对这些途径进行原型化。

阶段 2 的所有研发领域都是相对新颖的,因此是深入研究并取得成果的好时机。在今年内,将有更多具体的规范面世,并为开发者提供施展拳脚的空间。

Whiteblock 发布 libp2p gossipsub 测试结果

本周,Whiteblock发布了libp2p gossipsub测试结果,这是ConsenSys和以太坊基金会共同资助下的结晶。这项工作旨在验证用于 Eth2 的 gossipsub 算法有效性,并探究其性能潜力,以辅助后续的测试与算法强化工作。

概括来说,这一系列测试的结果看起来是可靠的,但还需要进一步测试以更好地观察消息传播如何随网络规模而变化。此处参见完整报告,其中详细介绍了他们所采用的方法、拓扑结构、实验和结果!

百花齐放的春天!

今年春季迎来了许多激动人心的会议、黑客马拉松, Eth2 赏金等等活动!每一场活动中都会有一组 Eth2 研究者和工程师出席。赶快来感受思维的碰撞吧!我们很期待与大家交流,包括工作进度、测试网验证工作、2020 值得期待的事等等大家可能感兴趣的话题。

现在不参与更待何时?多个客户端都处于测试网阶段,因此大显身手的时候到了!我们有各种开发工具,可以进行各种尝试,快来找找乐子吧!

以下列出了其中一些与 Eth2 相关的活动:

(完)


原文链接: https://blog.ethereum.org/2020/02/04/eth2-quick-update-no-8/
作者: Danny

本译本来自 ECN 以太坊中文网,EthFans 经授权转载。

 
0 人喜欢