读者朋友们可能听说过ETH 2.0的开发正在取得进展,但可能有所疑问:我们现在是处于开发的哪个阶段了?大多数现有的资讯不是技术性很强就是过于笼统,因此我们写了这篇文章来帮大家理清思路,解答困惑。
我们现在正处于阶段0,在这个阶段,会测试并启动信标链,而信标链是ETH 2.0中权益证明(PoS)系统的核心。这篇文章会解释信标链的作用以及为了它的正式发布我们现在正在进行的工作。
信标链的目标是什么?
ETH 2.0的一个目标是通过分片来分担处理和储存交易的工作,从而扩大交易吞吐量。分片是有价值的尝试,因为目前在ETH 1.0,每个全节点都需要验证整个以太坊网络上的交易并储存整个以太坊状态,这意味着每个全节点都在管理以太坊上所有的经济活动。
考虑到以太坊的目标是要能够承载全球范围内的全部经济活动,那么在每一个全节点上储存全球经济活动的数据无疑是困难的。随着状态在ETH 1.0上的不断增长,运行一个全节点会变得越来越不可及,这就意味着以太坊去中心化的程度会降低。况且,以太坊现在还尚未成为主流,就已经接近交易吞吐量的极限了。
在ETH 2.0中,分片通过在信标链上协调和最终确定数据来缓解这些限制带来的危机。信标链则作为真实信息的源头。
信标链借助PoS来达成共识和敲定分片上的数据
信标链将使用PoS来验证分片上的数据。在工作量证明(PoW)的区块链里,矿工如果表现得好的话会有激励,如果他们在挖矿时选择通过分叉来攻击网络,将得不到区块奖励和交易费来填补电力和挖矿设备等的沉没成本。
信标链改变了在区块链上实现安全性和数据验证的工作机制。不同于扣除矿工的经济报酬,使其无法覆盖沉没成本,从而确保区块链的安全,信标链通过削减或“烧毁”属于验证者的ETH来保证安全性。
如果想取得验证ETH 2.0的资格并由此获得收益,潜在的验证者首先需要向系统提交(即质押)至少32 ETH。如果验证者试图给网络提交错误的数据,或他们的离线时间过长,他们之前提交的部分甚至全部的ETH都会被扣除。
阶段0的发展现状
启动信标链是一项需要小心谨慎的工作。为了确保过程顺利,开发者正遵循这些信标链规范对客户端实现进行测试。
客户端是去中心化系统的核心,因为他们解决了中心点故障的问题。在ETH 1.0里,全节点通过以下三种方式排除中心点故障:
保存以太坊的整个状态(即全部的经济活动和余额等)
与对等节点(其他客户端)共享最新的区块链信息,例如新挖出来的区块和等待验证的交易,以及
接收到信息后先验证再分享给其他客户端,执行网络规则
在现阶段,ETH 2.0的开发工作主要是由多个独立团队对客户端进行开发测试。Prysm是一个由Prysmatic Labs开发和由Quanstamp审计的ETH 2.0客户端。这个客户端现在正在进行Topaz 测试网的测试,任何人都可以下载客户端并模拟运行ETH 2.0的信标链。
点击这里了解如何在Topaze ETH 2.0测试网上运行Prysm客户端!
按时间列举最近阶段0的里程碑事件
多种实现并行能保障ETH 2.0的安全性
ETH 2.0的茁壮成长需要多个客户端在信标链启动时处于活跃状态。如果我们依赖单个客户端,该客户端的一个bug就足以给网络带来毁灭性影响,包括将整个网络置于非共识状态或阻止区块的敲定。
当网络上存在多个客户端实现时,单个客户端的一个bug对网络带来毁灭性影响的可能性会大大降低。如果在一个客户端中出现了一个bug,该客户端会无法参与共识,但整个网络还能继续运行并敲定交易,因为其他的客户端不太可能会出现同样的bug。换句话说,其他的客户端会维持共识。因此,多客户端并存能提高网络安全。
创建测试网的目的是模拟将信标链放到主网的真实情况。为了测试当多个客户端共享信息(区块、交易等)时会不会出现bug,ETH 2.0的客户端实现正积极地在多客户端测试网上通信。
Schlesi是第一个多客户端测试网,于今年4月27日启动。一度有4个已同步的客户端实现在其中运行了测试网信标链,它们是:
Prysmatic Labs的Prysm
PegaSys的Teku,由ConsenSys资助
Sigma Prime的Lighthouse,以及
Status的Nimbus
5月17日,某个客户端出现了一个共识bug,并在Schlesi多客户端测试网上引起一个分叉。在找到bug后,客户端的开发者决定结束Schlesi测试网并重新创建一个从区块0开始的新多客户端测试网——Witti。值得注意的是,在测试网上发现bug是开发过程中很正常的一种情况。在ETH 1.0正式发布前的测试网中,也发现了很多诸如此类的bug。
在Witti Testnet上的验证者数和质押的ETH数。来源:beaconcha.in
信标链的启动及后续
ETH 2.0将在今年末前启动,但这并不是一个硬性期限。信标链正式面世前,需要多客户多测试网在足够长的时间内表现稳定。
一旦以太坊社区对测试网的稳定性达成了一定水平的社会共识,存款合约 (Deposite Contract) 将在ETH 1.0上发布。存款合约的用处在于收集将来ETH2.0验证者的质押金,这样他们才有资格在信标链上执行验证工作。当质押的ETH达到预定数额时,信标链将被激活,继而在该链上生成新区快。
信标链的启动将标志着阶段0的结束。此后,ETH 1.0和2.0将并行存在一段时间。ETH 1.0将最终过渡为ETH 2.0系统上的一个分片。