科普 | Eth2 信标链:你首先该知道的事(下)_GHOST:ONG

作者:ethos.dev

翻译:?阿剑

来源:以太坊爱好者

信标链检查点

检查点就是位于一个时段的第一个时隙内产生的区块。如果某个时段的第一个时隙内没有产生区块,则将最近的一个符合要求的区块认定为检查点区块。每个时段都会有一个检查点区块;一个区块有可能同时是多个时段的检查点。

-单时段包含64个时隙时的检查点示意图-

注意,从时隙65到时隙128之间都是空块。时段2的检查点本来应该是时隙128处产生的区块,但因为该时隙被跳过了,所以时段2的检查点仍然是时隙64处产生的区块。时段3也类似,时隙192被跳过了,因此将时隙180处产生的区块认作时段3的检查点。

时段边界区块是一些文献中用到的一个术语,可以认为是检查点的同义词。

在发起一次LMDGHOST投票时,验证者也要为最近时段的检查点投票,投票者希望确立的新检查点叫做“目标检查点”。这种投票叫做?CasperFFG投票,而且投票中也会包含投票者认定的上一个检查点,叫做“来源检查点”。在上图中,时段1中的一个验证者的投票将创世块作为来源检查点,然后推举时隙64处产生的区块为目标检查点。在时段2,同一个验证者又为相同的检查点投票了。

只有被分配到某个时隙的验证者才需要为该时隙的区块投票,但是,所有验证者都要为每一个时段的检查点发起FFG投票。

大多数

由所有活跃验证者总余额的2/3?所支持的投票内容就是多数票。

我们举简单一点的例子来说明一下,假设有3个活跃验证者,两个的余额是8ETH,另一个的验证者余额为32ETH。那么,只有包含了那个最大验证者的投票才可能是多数票;虽然另外两个验证者可能都投了另一个检查点,但是他们的余额总和只占50%,形成不了多数。

确定性

一个时段结束的时候,如果其检查点得到了2/3的总余额支持,那么该检查点就被合理化了。

如果一个检查点B已经得到合理化,其下一个时段的检查点也被合理化了,那么B就被敲定了。一般来说,一个检查点会在两个时段内得到敲定,大概就是12.8分钟。

从平均的角度来看,用户的交易总是打包在一个时段的中间部分;那么距下一个检查点就还有半个时段的时间,因此,一笔交易经过2.5个时段就可以得到确定性。理想化情况下,超过2/3的见证消息会在一个时段的前22个时隙内完成打包。因此,交易敲定的平均时长是14分钟。区块确认则从区块见证消息,一步步升级到合理化,再到确定性。用户自己可以觉得他们要不要等到交易确定,还是更低一点的安全性就足够了。

-时隙64处的检查点被合理化,同时敲定时隙32处产生的上一个区块-

为简化叙述难度,下文假设所有验证者的余额都相同。

信标链的顶端

时隙96处产生了一个时段边界区块,而且包含了对时段2检查点的见证消息。见证消息的数量达到了2/3的多数要求。然后时段2的检查点就得到了合理化,同时,上一个合理化的检查点,也就是时段1的检查点,就被敲定了。时隙32处的区块得到确定性,会使得之前所有区块都得到确定性。在敲定检查点的时候,并没有对同时得到敲定的区块在数量上的限制。所以,虽然确定性仅在时段边界的时候产生,见证消息是逐个逐个区块累加的,下文的“从创世块到区块链顶端的历程”部分提供了另一种描述。

从时隙1到时隙32的信标链区块所包含的所有交联,也会使分片链产生确定性。换句话来说,当一个信标链区块得到确定性时,该块所包含的交联所对应的分片链区块也得到敲定。交联本身不足以使一个分片区块得到敲定,只是对分片链的分叉选择有所帮助。

从创世块到信标链顶端的历程

用同样的办法,可以观察到从创世块开始的一条故事线。所有的提议者,从时隙1到时隙36,一一提议了一个区块,而且这些区块都显现在链上。对于时段1的所有区块来说,其检查点累积获得了55%的验证者的见证。在验证者提议时隙64处的区块时,它也纳入了对时段1检查点的见证消息。现在,有70%的验证者都见证了时段1的检查点,因此时段1检查点得到了合理化。完成时段2时,时段2的检查点累积的见证消息还达不到2/3的多数要求。时隙96处的区块在提议时,也纳入了对区块2检查点的见证消息,所以,这时候,时段2的检查点也达到2/3的多数要求,被合理化了。合理化时段2的检查点同时也会敲定时段1的检查点及所有此前的区块。

有时,合理化一个区块会敲定两个甚至多个时段以前的区块。Gasper论文讨论了这种情况,预计只有网络高延迟、网络隔离、遭遇强大攻击者的极端情况下,才会出现这种事。

确定性对于分片及以太坊区块的用户来说是重中之重,因为确定性使他们能够确定,交易已经永远写在链上,不可更改了。确定性也降低了跨分片通信的复杂性。没有确定性,分片内部和分片之间交易的回滚会具有破坏性,甚至让分片的好处荡然无存。

深入理解见证消息

一条见证消息里面包括了一个LMDGHOST投票和一个FFG投票。理想情况下,所有的验证者每个时段都会发出一条见证消息。一笔见证消息有32个时隙的机会被打包到链上。这就意味着,一个验证者可能在单个时段内有两笔见证消息被打包上链。见证消息打包上链的时间也决定了验证者可得的奖励幅度:在自己所在的时隙就打包上链可以得到最多的奖励;要是等到后续时隙才打包上链,验证者得到的奖励就会下降。为了给验证者足够的时间来准备见证消息,他们会在一个时段以前就预先知道自己所在的委员会。区块提议者则仅在时段开始之时分配一次。此外,隐蔽领袖选举研究还致力于减轻对区块提议者的攻击和贿赂。

委员会机制使得汇总所有的见证人签名、变成单个聚合签名在技术上的优化成为可能。如果同一委员会中的所有验证者都作了同样的LMDGHOST和FFG投票,则他们的签名可以聚合起来。

信标链验证者奖惩措施

为避免过度深入,我们仅讨论验证者激励相关的6种措施:

见证人奖励

见证人惩罚

对质押者来说典型的贬值风险

罚没及举报人奖励

区块提议者奖励

怠惰惩罚

当期见证消息与其它多数验证者一致时,验证者可以得到奖励。在Eth2Phase1阶段,验证者发送交联也可以得到奖励。当区块得到敲定时,验证者奖励也就确定下来了。

另一方面,如果验证者没有提交见证消息,或者投票支持了一个最终不能得到敲定的区块,他们也会受到惩罚。

在列举不太常见的惩罚和奖励之前,你可能还想知道,成为质押者会面临怎样的贬值风险。答案是,你可能失去的ETH,恰好跟你能赚取的ETH数量对称。如果一个验证者一年的奖励回报率是10%,则作恶验证者在最坏情况下可能会失去10%。举个例子,如果一个验证者总是离线,或者总是给那些不能得到敲定的区块投票,则其损失的ETH数量,恰与一位总是及时提交见证消息,且所支持的区块总是得到敲定的验证者所得的奖励,在数额上相等。

罚没的力度下至0.5ETH,上至一位验证者的全部权益。如果一位验证者所提交的见证消息触犯了协议所定义的罚没条件,则TA会损失自身权益的至少1/32,并被驱逐出验证者队伍。惩罚的力度就像该验证者离线了8192个时段一样。协议还会根据相近时间内被罚没的验证者数量施加一个额外的惩罚。此种额外惩罚的计算公式是:验证者余额×3×被罚没的验证者占比。那么,如果占全体验证者1/3数量的验证者都触犯了罚没条件,则他们会失去全部余额。相应地,检举这些不轨行为的验证者将会得到检举人奖励。

区块提议者在所提议区块得到敲定之后,也会得到一个成比例奖励。总是在线,并且提议工作做得很好的验证者,其总奖励可增加约1/8。出现罚没事件的时候,提议者也会因为打包罚没证据而得到一小笔奖励。在Eth2Phase0中,所有的检举人奖励都会给予区块提议者。

以太坊2.0系统中机制众多,对这些机制的评价应从所有机制的整体效果出发。最末一种奖惩措施是所谓的“怠惰惩罚”。基本上,如果距上一次敲定区块已过去了4个时段,所有验证者都会遭受怠惰惩罚,而且惩罚力度会呈平方级上升,直至新的检查点得到敲定。怠惰惩罚保证了:即使50%的验证者都离线了,系统也会在21天后重新开始敲定区块。

罚没条件

罚没条件主要有三个,分别是:双重提议、FFG双重投票,FFG环绕投票。LMDGHOST投票是不会招致罚没的。

双重提议是指区块提议者于所在时隙提议了多于一个区块。

双重投票是指验证者在提交FFG投票时,多个投票指向同一个目标检查点,但引用的来源检查点却各不相同。

环绕投票指的是验证者在提交FFG投票时,多个投票所指向的检查点?恰成环绕形状。举个例子,假定一位验证者在时段5投票时,以时隙32的区块为来源检查点,以时隙128的区块为目标检查点:

如果该验证者在时段6的投票以时隙64的区块为来源检查点,以时隙96的区块为目标检查点,那么该票就被TA自己在时段5的投票给包围起来了。

如果该验证者在时段6的投票以时隙0的区块为来源检查点,以时隙160的区块为目标检查点,则该投票把TA自己在时段5的投票给包围起来了。

如果这位验证者在时段6又给时隙128的区块投票,除非其来源检查点仍是时隙32的区块,否则就成了双重投票,也会被罚没。相同的FFG投票倒是不会被罚没的。

拥有相同来源检查点的FFG投票也不会招致罚没。这是维持网络活性的重要条件。举个例子,如果两条分叉链各自都有50%的验证者余额支持,协议应该鼓励验证者通过投票给相同来源检查点、不同目标检查点,在分叉间切换。能够安全地在分叉间切换,验证者们就能打破僵局,尝试形成2/3的多数。

检举他人的验证者需要在见证消息中纳入相互冲突的投票,以证明另一个验证者应该受到惩罚。要高效地从一长段历史中找出相互冲突的投票,在算法和数据结构上也是一种挑战。因此,开放工程挑战·罚没探测器也在寻找贡献者。

得到良好控制的验证者一般是可以避免被罚没的:只需记得自己曾经签名过哪些见证消息就好。诚实的验证者也不会因为其它验证者的行为而受到波及。只要验证者不签名相互冲突的见证消息,不作出双重提议,就不会被罚没。

为得到更好的运行体验、更值得信任的信息来源,乃至更好的DoS保护,验证者客户端可能会同时使用多个信标链节点。

在这种模式中,包括使用备份的验证者客户端的时候,需要小心不要让验证者签署相互冲突的消息。

信标链验证者激活及生命周期

每一个想成为验证者的用户都要先有32ETH才能获得验证者资格。用户质押32ETH到以太坊主网上的保证金合约中,就能获得一个验证者资格。

另一方面,信标链也会劝退所有余额降低到16ETH的验证者;质押用户可以取出剩余的验证者余额,不过在Eth2Phase0还做不到。

验证者在服务2048个时段之后也可以主动退出。退出时要先走完4个时段,质押用户才能取出自己的权益。在这4个时段内,该验证者的余额仍然是可以被罚没的。因此,诚实验证者的余额可以在约27小时之后取出。但是,如果验证者在此时被罚没,就只有再等8192个时段之后才能取出剩余款项。

更多技术细节可看《以太坊2.0Phase0验证者生命周期》。下图亦来自这份资料:

为避免验证者集合在短时间内出现大规模的变动,单个时段内能激活和退出的验证者数量是有一个机制限制的。这样可以让激活许多验证者、快速攻击系统的攻击更难发动。

信标链还使用了一个叫做“有效余额”的概念,这个有效余额回避验证者余额的变化更小,使得技术上的最优化成为可能。

总结

在每一个时段,验证者都被均匀分配到不同时隙中,并进一步划分成相同规模的委员会。验证者只有1个应召的时隙,也只会存在于1个委员会中。因此:

一个时段中的所有验证者,通过集体决策尝试敲定某个检查点;方法是FFG投票;

各时隙中的所有验证者,通过集体决策尝试选出信标链的顶端区块:方法是LMDGHOST投票;

一个委员会中的所有验证者,通过集体投票尝试将某个分片交联到信标链上。

最符合协议的行为可以得到最多的奖励。

信标链的启动需要至少16484名验证者。验证者的数量会因为罚没及资源退出而减少,也会因为质押用户的投入增加而增加。而且,随着Eth2Pahse1及后续阶段的升级,预计会有更多验证者参与进来。信标链需要至少262144名验证者才能使得单个信标链区块能包含64个交联。

我们还从未拥有过一个?去中心化?系统和应用的可扩展平台。如果你想更深入地研究以太坊2.0,权威的参考来源是Ethereum2.0Specifications。该技术规范包含了信标链技术规范,还提供了其它关键信息源,而且提交issue可以获得奖金。当前,最紧迫的?工程需要是点对点网络的组网功能。

自己动手,或者推荐朋友参加挑战、参与ethresear.ch论坛或者EthereumMagician论坛,创造历史吧!

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-7:164ms