24

Eth2 信标链:你首先该知道的事(下)

 4 years ago
source link: https://www.jinse.com/blockchain/598472.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

信标链检查点

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

emMVb2r.jpg!web

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

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

时段边界区块(epoch boundary block)是一些文献(比如 Gasper 论文,也是上面这张示意图的来源)中用到的一个术语,可以认为是检查点的同义词。

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

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

大多数

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

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

确定性

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

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

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

RrYFbym.jpg!web

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

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

信标链的顶端

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

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

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

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

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

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

深入理解见证消息

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

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

信标链验证者奖惩措施

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

  1. 见证人奖励

  2. 见证人惩罚

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

  4. 罚没(slashing)及举报人奖励

  5. 区块提议者奖励

  6. 怠惰惩罚(inactivity penalty)

当期见证消息(包含 LMD GHOST 投票和 FFG 投票)与其它多数验证者一致时,验证者可以得到奖励。在 Eth2 Phase 1 阶段,验证者发送交联也可以得到奖励。当区块得到敲定时,验证者奖励也就确定下来了。

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

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

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

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

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

罚没条件

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

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

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

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

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

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

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

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

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

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

为得到更好的运行体验、更值得信任的信息来源,乃至更好的 DoS 保护,验证者客户端可能会同时使用多个信标链节点。在这种模式中,包括使用备份的验证者客户端的时候,需要小心不要让验证者签署相互冲突的消息。

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

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

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

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

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

aUruEnA.jpg!web

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

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

总结

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

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

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

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

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

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

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

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

(完)(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)原文链接:https://ethos.dev/beacon-chain/作者: ethos.dev翻译: 阿剑你可能还喜欢:

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK