ETH2 以太坊基金会博客

Eth2更新速览(八)

来源 | Ethereum Blog

作者 | Danny Ryan

要点速览

🔹Runtime Verification完成对存款合约(deposit contract)字节码的审计和形式化验证

🔹本月关键词:最优化

🔹Whiteblock公布gossipsub测试结果

🔹春季活动来袭!会议、黑客马拉松、赏金任务等你参与!

 

存款合约的审计和验证

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测试网的每次改进,目的是确保成千上万个验证者可以轻松地在小型VPS上运行, 配备2个CPU和8GB RAM。在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会将状态和执行添加进分片后的eth2中。尽管阶段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/