天天看点

一文看懂以太坊2.0最新进展

来源 | unitimes

作者 | Ben Edgington

编译 | Jhonny

9个月前,原先的 Casper 和 Sharding 的设计被抛弃,以太坊 2.0 被认为是是当前以太坊主网的一个全新的发展。让我们来盘点一下。

9个月前,以太坊2.0规范在 HackMD 上还是空白页。现在它是一个功能齐全的 GitHub 库,拥有着5版预发布版本。54位贡献者提交了1860次大约 23,000 行代码,删除了 19,000 行。该规范现在贯穿了12个独立的文档,涵盖了协议的不同方面,这还是不包括在不同代码库中的验证者管理合约在内。该规范还在继续快速发展。

以太坊2.0的设计包含了一些优秀的创新以及现有技术的应用,如 LMD GHOST 分叉选择规则、BLS 签名聚合、哈希树根 (hash tree root)、二次泄漏 (quadratic leak)、托管证明等等。

简而言之,这是一项宏伟的工程。这是激动人心的。就在9个月前,在柏林的那间地下室里,作者从来没有想到在这么短的时间内会取得这么多成就。这还不包括以太坊2.0客户端实现。

在以太坊 2.0可以考虑交付出去和能够运行之前,计划了三个阶段。当前进展如何了?我们一起来看一下!

阶段0是信标链 (Beacon Chain),这是整个系统的权益证明 (PoS) 协调层。当前,阶段0的规范正处于完成时期,针对此阶段的规范进行修改的步伐已经迅速放缓。实际上,该规范已经是处于可执行和可测试状态。剩下的几乎就是选择一个序列化算法 (抱歉!开玩笑?)。

信标链客户端实现已经由多个团队使用多种语言创建,并且正在组装测试网络。在调试、联网实现和兼容性测试之前,我们还有很长的路要走,但前进的道路是很明确的。一些人认为,我们可以在2019年底前部署一个真正质押 ETH 的以太坊主网。可以肯定的是,2020年初定能实现。此阶段可能是最具挑战性的实现阶段。

阶段1是分片数据层 (sharded data layer):就是在1,000多条独立区块链 (即分片链) 之间分配交易,这些分片链都锚定于权益证明信标链上。当前,阶段1的规范进展得很好,可能会在阶段0规范完成之后很快敲定。也就是说,在接下来的几个月里就会敲定阶段1的规范。阶段1实现主要是一个点对点网络设计挑战,当前这项工作正在进行中。

阶段2是分片状态 (sharded layer) 和执行层 (execution layer)。阶段2还没有规范文档,还有很多研发工作要做。问题不在于我们将如何做这些事情,而在于考虑到未来系统中的所有利益相关者,哪种可用的解决方案是最佳选择。开发者们即将开始着手解决这些棘手的问题:更多内容详见下文。

这就是以太坊2.0现在的情况。过去的9个月是一段令人震惊的时期。我想我们大概已经走了四分之一到三分之一的路程。按照这个速度,以太坊2.0将在英国正式退欧之前得以交付……

规范更新

当前有一个实验性的模式识别 ,用于查看从所有规范文档生成 RST/Sphinx (ReadTheDocs 格式) 的效果。

链接:https://github.com/ethereum/eth2.0-specs/pull/835

1. 信标链规范 (阶段0)

规范链接:

链接:https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/0_beacon-chain.md

自两周前的上一个以太坊2.0更新文档以来,信标链规范还没有发布过新的主要规范版本。

链接:https://notes.ethereum.org/c/Sk8Zs--CQ/https%3A%2F%2Fbenjaminion.xyz%2Fnewineth2%2F20190315.html

但是有一个 bug 修复的小版本发布,所以我们现在使用的信标链规范是 v0.5.1 版本。

链接:https://github.com/ethereum/eth2.0-specs/releases/tag/v0.5.1

展望未来,Justin Drake (以太坊核心开发者) 曾确认过,我们将使用 SHA256 作为标准哈希函数 (之前是Keccak256,在那之前是 Blake2b)。选择 SHA256 函数的主要原因是跨链标准化和兼容性。

其他更改包括拆分和将分叉选择规则变得可执行。这样做允许从信标链规范直接生成测试向量(test vectors),这也是非常棒的。验证者退出 (validator exiting) 相关规范也经过了重新调整和简化。

信标链规范0.6版本预计将在接下来的几周内发布,此版本的变化将包含对上一版本的彻底简化。

2. 分片链规范 (阶段1)

规范链接:

https://github.com/ethereum/eth2.0-specs/blob/master/specs/core/1_shard-data-chains.md

阶段1的主要更新是使用 JABS 替换 proof of custody game (JABS 即 Justin's Awesom Bit Sum)。500行代码被删除了,所以,不管叫什么,这绝对是一个主要的简化。在开发者电话会议期间,Justin Drake 提到阶段1规范将被分成两个部分,其中第2部分包含对信标链的更新,以使其支持 proof-of-custody game。

应该可以在阶段0规范完成之后不久就可以完成阶段1的规范。

3. 状态执行 (阶段2)

上周,作者很高兴看到 Brooklyn Zelenka 有关 Actor Modul (参与者模式) 的文章。Brooklyn 和 Boris Mann 还召集了一个讨论小组,讨论在以太坊2.0中跨分片通信模型 (cross-shard communication model) 可能是什么样子的。作者非常喜欢以太坊领域的一个原因是,聪明、博学的人总是在正确的时间出现来解决难题。跨分片消息传递是依然处于研究阶段的关键部分之一。

相关链接:

https://medium.com/spadebuilders/actor-factor-2b0005fde786

4. 简单的序列化 (Simple Serialize )

相关链接:

https://github.com/ethereum/eth2.0-specs/blob/master/specs/simple-serialize.md

在 Peter Szilagyi 的 SOS 序列化的基础上,Piper Merriam 提出了对 SSZ 的更新,允许对序列化数据进行有效的索引。

链接:https://github.com/ethereum/eth2.0-specs/pull/787

5. 轻客户端规范

相关链接:

https://github.com/ethereum/eth2.0-specs/tree/dev/specs/light_client

进行了轻微升级

6. 联网 (Networking)

这是一个新的部分,包含了 Matthew Slipper 关于 RPC 接口的一个重要文档的开头部分:

https://github.com/ethereum/eth2.0-specs/blob/dev/specs/networking/rpc-interface.md

Matthew 还召集了一个电话来讨论线路协议 (wire protocol) 的事情。

7. 实现相关 (Implementation)

关于测试:

以太坊开发者会议期间,@protolambda 已经加入了以太坊2.0的测试和基础设施相关工作中。除此之外,他还将致力于模糊测试 (buzz testing) 和随机输入 (randomised inputs) 等工作。

Diederik Loerakker,https://github.com/protolambda

现在该规范基本上是可执行的,许多用于生成和运行测试该规范上的设备都被导入到中代码库中,甚至可以自动设置 CircleCI。

https://github.com/ethereum/eth2.0-specs/pull/800

此外,正式的测试生成库正在转移到规范库中,以使它们更好地保持一致。这将极大地帮助实现人员 (implementers) 保持测试套件与规范版本的同步。

一些实现团队最近宣布了测试网络:

  • Prysmatic 的 Gorli 测试网络即将完成:

    https://medium.com/prysmatic-labs/ethereum-2-0-serenity-testnet-update-closer-than-ever-259cace9a1b1

  • Lighthouse 计划在几天内建立一个短期的测试网:

    https://twitter.com/ethZed/status/1111499764418240512

  • Parity 的 V3 版测试网已经处于可用状态:

    https://github.com/paritytech/shasper/wiki/Shasper-Testnet-Plans

  • Nimbus 已经推出了自己的以太坊2.0公共测试网络:

    https://our.status.im/the-nimbus-mvp-testnet-is-here/

至于跨客户端测试网络,Danny Ryan 提出了一些建议。他建议的一个方法是:(1)每个团队运行自己的一个长期客户端测试网,(2)客户端通过所有的共识测试向量,(3)只有到那时,才能与另一个客户团队进行1对1的合作,以实现该规范的公共版本的兼容性。

8. 研究

对于所谓的 proof of custody game,已经做了大量的工作。这是阶段1 (即分片数据层) 的核心部分,是一种用于让验证者负责查看他们所验证的分片区块数据的机制。@dankrad 有一篇很好的文章,介绍了如何使用 PRF (伪随机函数) 以勒让德符号 (Legendre symbol) 的形式而不是当前建议的哈希函数来实现这一点。这将允许在多方计算环境中有效地计算托管证明 (proof of custody)。也正因如此,之前 RANDAO 被更改为 BLS 签名。

其他方面,Vitalik 给出了一些计算敲定区块 “安全性” 的公式。也就是说,如果一个不同的敲定区块与现有区块存在冲突,考虑到验证者集合中进入和推出的验证者数量,必须对多少验证者进行罚没 (slash)?

https://ethresear.ch/t/weak-subjectivity-under-the-exit-queue-model/5187?u=benjaminion

9. 其他项

以太坊2.0工作计划在悉尼EDCON会议之前继续进行。我们将在4月9日的 EDCON 黑客松活动期间与大家见面。PegaSys 团队的一些人也会前去参加。

信息和注册表在这里:

https://notes.ethereum.org/7w7diW1-St2_Yu-YHjg6NA#。

Artemis 团队正考虑在5月12日的纽约区块链周时期举办一个 ETH2 客户端实现者研讨会。(备注:Artemis 是信标链Java 客户端)

虽然 Hsiao-Wei Wang 的演示文档《Life of An Ethereum Beacon Chain Validator》没有包括最新的进展,但很值得一看:

https://docs.google.com/presentation/d/1JlQ8fVZUvt7ywRcI7mj1ExmPxcNII2xKT4lkgnkq7gU/edit#slide=id.g52948b393d_2_75

Vitalik 在 r/EthTrader 上做出的回复:

https://www.reddit.com/r/ethtrader/comments/b660l4/vitalik_answers_to_rethtraders_questions/

Vitalik 对 PoS 存在的一些担忧:

https://www.reddit.com/r/ethtrader/comments/b660l4/vitalik_answers_to_rethtraders_questions/ejim705/

相关文章:

https://thenextweb.com/hardfork/2019/03/28/vitalik-buterin-concerns-ethereum-proof-of-stake/

Vitalik 在 Ethhub 的采访:

https://podcast.ethhub.io/vitalik-buterin-current-and-future-state-of-ethereum

原文链接:

https://notes.ethereum.org/c/Sk8Zs--CQ/https%3A%2F%2Fbenjaminion.xyz%2Fnewineth2%2F20190329.html