首页 资讯 正文

关于以太坊2.0 你不知道的9件事

Unitimes 2019年07月19日 12:13

作者 | Bruno Škvorc

编译 | Jhonny

是的,这是一篇清单体文章 ?

以下是一些你可能不知道的关于以太坊2.0的事情,排序不分先后。

01

以太坊2.0需要质押200万枚 ETH 才能启动

我们知道,验证者需要往抵押合约 (deposit contract) 中发送32 ETH 才能参与到以太坊2.0系统中来。不太为人所知的是,我们需要 65,536 个验证者来启动以太坊2.0新链,这相当于需要质押大约200万枚 ETH。在以太坊2.0系统中,这正好相当于每条分片链中具有64名验证者 (共计1024条分片链)。

抵押合约 (deposit contract) 计划将于今年10月在大阪举行的 Devcon 5 会议期间启动,但这并不意味着200万枚 ETH 将立即被发送至该抵押合约中。启动仪式只是个开始,我们将在之后的3-4个月的时间内等待足够多的 ETH 被质押到该合约之中。

考虑到不推荐非开发人员和普通用户加入这个质押系统,因为他们的 ETH 会被锁定在一个存在风险且无用的系统中 (因为新系统中暂时不存在交易!),因此可能需要一段时间才能累计质押到足够多的 ETH。

抵押合约中累计了的200万枚 ETH 之后,以太坊2.0系统将会在第二天的午夜 (UTC时间) 才会正式启动,而不是立即在200万枚ETH的质押数量达到之后就启动。这是因为,针对参与者往抵押合约中发送的 ETH,我们需要等待多次确认。

还有一些有趣的数字:

  • 每个委员会的目标是拥有 128 名验证者 (每个委员会负责对某个特定分片进行验证),这意味着在1024条分片链中,需要大约 131,000 名验证者来实现网络的最优安全性。每个委员会的最低验证者数量是111名,而128是我们需要实现的目标数量。

  • 如果整个网络中的验证者数量低于这个数,那网络将通过时不时地跳过一些分片并将速度稍微减慢,从而确保每个委员会拥有128名验证者的数量保持不变。

  • 在信标链启动阶段,这并不是个问题,因为一开始网络中并没有分片;当网络中启动分片时,我们认为验证者的数量将会超过 131,000;

  • 从技术角度来说,即便只有64名验证者,网络依旧可以继续运行,但网络会非常不安全,也会很慢,且分片也无法按预期运行。

02

验证者的私钥将处于在线状态,但你的资金不会被盗

为了对证明 (attestations) 进行签名和生成区块,验证者必须连接互联网并将账户的私钥载入系统中。人们普遍担心,这会导致验证者账户被攻击并损失所有质押的 32 ETH。不是这样的!

当你抵押 32 ETH 并成为验证者的同时,你也发送了有关退出账户和退出分片的信息。这意味着不管发生了什么事情,即不管你是自愿退出系统,还是被驱逐出系统,属于你的资金都将被发送至被指定为取款地址的特定账户中

03

以太坊2.0系统中的 slot 时长为6秒,但也有例外情况

在以太坊2.0系统中,slot 是形成一个区块所需的时间,即区块被提议及证明其正确性所需的时间。由于以太坊2.0的启动时间和之后的时间通常都以 unix 时间戳表示,而 unix 时间戳很容易受到闰秒的影响,因此有些 slot 的时长可能是5秒,有些则可能是7秒,尽管硬编码的时长是6秒。

04

针对验证者将存在两类惩罚

Inactivity leaks:当验证者节点离线的时间达18天,且信标链停止了“finalizing”进程时,你质押的金额将会“在 18 天内减少 60.8%”;

Slashing:如果验证者的行为被证明是恶意行为,那该验证者将被罚没 (slashing),也即其质押的 ETH 将被减少。罚没的最低惩罚是 1 ETH,但这种惩罚会随着与你在同一时间一起被罚没的验证者的数量的增长而增加。

Justin Drake 推文大意:澄清一下,在以太坊2.0中,“penalty”和“slashing”不是同一回事。Penalty 是一种负奖励 (比如因为离线的原因);而 slashing 是一种较大的惩罚 (从质押的32ETH中罚没至少1ETH),是当验证者被证明进行了恶意行为 (比如重复投票) 时强制该验证者退出系统的方式。

需要注意的是,这是分布式信标链节点的一种机制,因为如果很多验证者依赖于同一个信标链节点,那该信标链节点出故障也会顺带着这些验证者下线,因此这些验证者受到的惩罚会比他们运行自己的信标链节点要严重得多。

也就是说,离线并不会像你想象的那样受到严重惩罚。正如 Vitalik 所说:

当你处于离线状态时,只有当超过 1/3 的其他验证者也同时处于离线状态,此时你受到的惩罚才会很大。除此之外,离线的惩罚是非常小的,只要你的在线时长超过了 50-67%,那你就会处于净盈利状态 (不包含电脑成本等)。这种激励机制的很宽松的,目标是为了鼓励业余参与者加入进来,促进去中心化。”

05

你不需要通过一台超级电脑就可以运行验证者客户端

在 NanoPC 这样的简单设备上就可以运行1-2个验证者客户端,虽然你可能无法在上面运行信标链节点。信标链节点与验证者之间的区别,请参阅:

https://our.status.im/two-point-oh-the-beacon-chain/

你将可以通过移动设备进行质押 (staking),但由于移动设备在睡眠状态下会关闭连接,因此这可能会终端验证者客户端与以太坊网络的连接,并影响你的 staking 奖励。因此,我们不推荐使用移动设备来参与 staking,除非你能保持提供设备一直接通电源并保持开机状态。

不管是通过 NanoPC 这样的简单设备还是通过移动设备参与验证,你都需要将验证者客户端与一个外部的信标链节点相连接。几乎可以肯定的是,诸如 Infura 等实体都会提供验证者可以连接的信标链节点,但如果你在家里就有一个稳定的连接,那建议你运行自己的信标链节点,或者连接到某个托管但没那么受欢迎的信标链节点上

尽管如此,一台标准的台式电脑就应该可以运行多大10个验证者客户端

06

我听说将会有针对以太坊2.0的 ASIC 挖矿设备。以太坊2.0根本没有挖矿一说,如何会需要 ASIC?

你所听到的可能是 VDF ASIC 设备,这是目前正在研究的一种设备,目的是增强以太坊 2.0中的随机性。有关以太坊2.0的随机性,请参阅本文:

https://our.status.im/two-point-oh-randomness/

有关 VDF (可验证延迟函数) 的更多信息,请参阅 VDF 研究相关的文章:

http://vdfresearch.org/

07

并不是每个 slot 期间都会产生区块

因为 slot 是离散的时间单位 (每个 slot 时长约6秒),很可能在某些 slot 期间不会产生区块。比如,当验证者之间产生分歧,负责创建爱你和证明该新区块的委员会出现延迟问题,或者当某个验证者本应该提议区块,但该验证者却并没有处于运行中,亦或者其他一些无法预计的异常情况,都可能会导致在某个 slot 期间不会产生新区块。

因此,虽然你可能已经习惯了当前以太坊1.0链上的出块时间为15秒,但以太坊2.0的出块时间可能就是在6-18秒之间,也就是说,连续两个以上的 slot 期间不产生新区块也是有可能的

08

信标链状态会存储过去13小时的状态根和区块根,当然也有意外情况

在以太坊2.0系统中,最后的 2^13 (即 8192) 个状态根和最后的 2^13 个区块根会存储在每个信标链状态中,参见:

https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#time-parameters

这大约相当月13.65小时的时间 (8192*2/3600)。但由于并不是每个 slot 期间都会产生新区块 (如上方第7点所述),但每个 slot 期间都会包含之前的 8192 个区块根,使得在信标链状态中存储区块根的时间很容易就会超过存储状态根的时间。这是因为,每个 slot 都会存储状态根,即便状态根没有变化,而区块根只会存储单独的区块根。下图就是一个例子:

上图中,如果某个信标链状态存储了3个状态根和3个区块根,那该信标状态将在区块根中包含了 Block 4、Block 3、Block 2 和 Block 1 的区块根,并在状态根中包含 State 7、State 6、State 5 和 State 4,尽管 State 6 和 State 5 都与 State 4 一样。

09

针对验证者从系统中退出,系统有一个排队机制

排队机制能够确保当存在大量验证者退出时,他们退出的速度将减慢

这意味着系统不允许很多验证者同时立刻退出系统,不管是验证者自愿退出,还是因惩罚而被驱逐出去。这能保证系统中的验证者数量尽可能保持稳定。排队机制使得当系统检测到有很多等待退出 (取款) 的验证者时,系统有时间通过自动增加参与 staking 的收益率来使得 staking 更具吸引力,从而吸引更多的验证者参与到系统中来,这就像是 PoW 系统中对挖矿难度的调整。

排队机制也用于抵制中心化的基础设施,即当很多验证者同时离开系统时 (比如,因为他们都通过 Infura 连接了同一个信标链节点,该信标链节点由 AWS 托管,且该节点出故障了),那这些验证者都将受到惩罚,要么因为 inactivity 受到惩罚,要么需要等待很长的时间才能从系统中退出。