通告 | Eth2 更新速览 No.4

当当的当,Eth2 更新速览第四篇!本周有很多东西要谈。除了史诗般的 Eth2 客户端开发工作,还有如下要点:

Differential fuzzing 奖金

Sigma Prime 获得了一项奖金,用于领导 Eth2 客户端的 differential fuzzing 测试工作
。这部分工作对于一个多客户端网络的成功启动是至关重要的,因为它可以帮我们发现一致性问题。
所谓的 “fuzzing”,就是给一个软件丢入许多随机的输入,然后看软件有什么反应。使用这种办法测试软件的时候,我们的目标就是找出那些会导致意外宕机的输入。发现有这样的输入之后,接下来就是找出错误的根源并加强软件的功能。
Differential fuzzing 与单纯的 fuzzing 又有点区别,在这里我们不是要发现导致错误的输入,而是看看在同一协议的不同实现中,哪些输入会产生不同的输出。在我们的工作中,我们想用这种办法里发现在哪些情况下,同样的一系列区块会在不同客户端中产生不同的状态(进而发现不同客户端的一致性问题)。生产环境中是不能出现这种情况的。

轻客户端特别小分队

Chainsafe/ Lodestar
是以太坊基金会所颁发的 Eth2 轻客户端研究和开发奖金得主。他们成立了 轻客户端特别小分队
。他们团队给自己的任务是保证轻客户端变成 Eth2 中的一等公民。为实现这个目标,他们正在主持一个 月度的视频会议
,致力于推动轻客户端研究、标准、技术规范和教育。
在 Eth2 这样的分片协议中,对轻客户端生态系统和轻客户端服务器的需求只会更多,不会更少。即便一个节点近同步协议的一部分(例如只同步几个分片),他也会经常需要其它分片的账户、合约和普遍状态的信息。客户端当然可以同步额外的整个分片,但这样效率很低,更有可能只是轻量级地请求另一个分片上某个账户的信息,只需一个简洁证明就可以搞定。

请关注下一次的 轻客户端小分队视频会议
以了解 Eth2 轻客户端的所有前沿内容。

Eth1 -> Eth2

在 Eth2 早期,从现有的以太坊主链(Eth1)到新的信标链(Eth2)上的 Ether 转移是单向的。也就是说,转移到 Eth2 上用于质押的 Ether 不能转回 Eth1 上。实行这种单向转移是为了最小化 Eth2 给 Eth1 带来的风险,并且让 Eth2 可以有一个更快的开发周期、无需对 Eth1 施行硬分叉。
现在也有一些围绕创建双向链桥的想法,不给我会把讨论不同链桥机制利弊的内容放在日后的推文中。当前,我想更具体地谈谈单向链桥是怎么工作的、如何能在不改动 Eth1 的条件下安全地实现。

在现在的以太坊 PoW 链上,我们会部署 eth2 验证者合约
。这个合约里面有一个简单的函数叫做 deposit
(“存入”),它可以接受多个参数(例如:验证者公钥、取款认证信息、存入的 ETH,等等)并初始化相应的新验证者。这个合约里面是没有 withdrawal
(“取款”)函数的。除非我们用硬分叉来构建双向链桥,否则这些存入验证者合约的 ETH 就只存在于信标链上了。

然后,信标链上的验证者会对该合约的状态达成共识,新存入的保证金也由此得到处理。具体的实现方式是:Eth2 的区块提议者将最近的 Eth1 数据打包到信标链区块里面一个叫做 eth1_data
的字段里面。当在一个投票期中有足够多的区块提议者都同意最近的 eth1_data
,这些数据就会存到信标链状态中,好让新的准备金得到处理。

有必要强调的是, eth1_data
所采用的数据必须足够深,要跟最新区块隔着约 1000 个区块的 “跟随距离”。这个跟随距离会导致准备金处理出现很高的延迟,但也会为两个系统的耦合带来更高的安全性。只有深于 1000 个区块的重组才会打破这个链接,在这种情况下,我们就需要一些手动干预来解决问题了。
我们正在研究并制作利用信标链来敲定 Eth1 链的原型(即确定性小工具)。这样做会需要 Eth1 最终将分叉选择推迟到信标链的敲定状态上(defer its fork choice ultimately to the beacon chain);Eth1 将能从 PoS 验证者处获得安全性、并支持更快速的保证金处理。确定性小工具也会打开一些有趣的可能性,比如双向链桥、把 Eth2 的数据层暴露给 Eth1。敬请期待!

原文链接: https://blog.ethereum.org/2019/11/21/eth2-quick-update-no-4/

作者:Danny Ryan

翻译:阿剑