怎样在币安交易加密货币?一起入群交流,欢迎联系微信:Bmaker

以太坊合并多个客户端的后果需要自行承担运行

币圈资讯 btcwbo 73℃ 0评论

考虑到安全性和活动性,Etherum选择了多客户端结构。为鼓励质押方设置多样化,对相关失败给予更高的处罚。因此,少数客户质押方在客户端出现错误时只会损失适当的金额,但多个客户端的运行可能会导致全面损失。因此,负责任的质押方应关注客户端环境,选择不受欢迎的客户端。
为什么需要多个客户端?
为什么单个客户端系统的结构更具争议。开发多个客户端将产生相当大的成本,这就是为什么我们没有看到其他区块链网络认真追求多个客户端选项。
那么,为什么etherum的目标是成为多个客户端呢?客户端是一个非常复杂的代码片段,可能包括错误。最糟糕的是所谓的共识错误,即区块链核心状态转换逻辑中的错误。一个经常被引用的例子是所谓的无限货币供应漏洞。在这个漏洞中,有漏洞的客户接受打印任何数量的以太交易。如果有人发现这样的漏洞,但在到达出口之前没有被阻止(即通过混合器或交易所使用的资金),这将导致ether的价值急剧崩溃。
如果每个人都运行相同的客户端,停止需要人工干预,因为所有的智能合同和交易所都会像往常一样运行。即使是几分钟也足以进行成功的攻击,并完全分散资金,因此它不仅可以回到攻击者的交易中。根据打印的ETH数量,社区可以协调链回到使用漏洞(识别和修复错误后)。
现在,让我们来看看当我们有多个客户时会发生什么。有两种可能性:
1.有漏洞的客户端只占质押份额的不到50%。客户端会用错误的事务生成块,打印ETH,让我们称之为A链。
然而,由于无效(打印ETH操作无效),大多数无故障客户端的质押将被忽略。它们将构建备用链B,而不包括无效块。
由于大多数正确的客户端,B链将积累更多的证据。因此,即使是有问题的客户端也会向B链投票;因此,链B将积累100%的投票,链A将死亡。链条将继续,就像错误从未发生过一样。
2.大多数质押份额使用有问题的用户端。在这种情况下,链a将积累大部分选票。然而,由于B拥有不到50%的所有证书,非法客户端永远看不到从链a到链B的转换。因此,我们将看到链分裂。
质押
情况1是最理想的情况。因为这可能会导致一个孤立的块,大多数用户甚至不会注意到它。开发人员可以调试客户端,修复错误,一切都很好。相反,案例2显然并不那么理想。但它仍然比只有一个客户好——大多数人很快就会发现链分裂(你可以自动完成多个客户),交易所将迅速暂停存款,用户在分裂解决方案时可以小心。基本上,它仍然为我们提供了一个闪烁的红色警告灯,以避免最坏的结果。
如果错误的客户端质押超过2/3,情况会更糟。在这种情况下,它最终将确定无效链。稍后将详细介绍这一点。
有些人认为链分裂是如此的灾难性,以至于它本身就是一个关于单个客户端系统结构的论点。但请注意,链分裂只是由于客户端的错误。对于客户端来说,如果你想修复问题并恢复到原来的状态,你必须回到错误发生前的块——这和链分裂一样糟糕!因此,虽然链分裂听起来很糟糕,但它实际上是一个功能,而不是一个错误。至少你可以看到一些严重的问题。
激励客户多样性:反相关处罚。
如果质押分散在多个客户端,最好的情况是每个客户端不到总质押的三分之一,这显然有利于网络。这将使它对单个客户端的任何错误都有弹性。但质押者为什么要关心它呢?如果网络没有激励措施,他们就不太可能承担转向少数客户端的成本。
不幸的是,我们不能让奖励直接依赖于验证器运行的客户端。没有客观的方法来衡量这一点。
然而,当你的客户出错时,你无法隐藏它。这是一种反相关的惩罚:这个想法是,如果你的验证器做了一些坏事,如果更多的验证器几乎同时犯了错误,惩罚就会更高。换句话说,你会因为失败而受到惩罚。
在以太,你现在可能会因为两种行为而被砍掉:
1.在同一高度的两块上签名。
2.创建一对可删除的证书(围绕投票或双倍投票)。
当你被大幅削减时,你通常不会失去所有的钱。写这篇文章的时候,默认处罚其实很小:你只会失去0.5ETH,或者你赌以太1.5%(最终会增加到1ETH或者3%)。
然而,有一个问题:另一个额外的惩罚取决于你的验证器被切断前后4096个时期(18天)中的所有其他切断。在此期间,进一步处罚的金额与减少的总金额成正比。
这可能比最初的惩罚要大得多。目前,它的设置是,如果在此期间将所有质押余额减少一半以上,您将失去所有资金。最后,这将被设置为:如果其他验证人的三分之一被切断,您将失去所有质押。选择三分之一的原因是共识失败必须模棱两可。
另一种反相关处罚:二次无活动泄漏。
验证器失败的另一种方法是离线。同样,也有惩罚,但机制非常不同。我们不称之为减少,通常很小:在正常操作下,离线验证器的处罚与完全验证时的处罚相同。写这篇文章时,每年增长率为4.8%。如果您的验证器离线几个小时或几天,例如,由于临时互联网中断,它可能不值得出汗。
当超过三分之一的验证器离线时,情况会变得非常不同。然后,信标链无法最终确定,这威胁到协商协议的基本属性,即活动。
为了在这种情况下恢复活力,所谓的二次无活动泄漏开始发挥作用。如果验证器在链条未完成时继续脱机,总罚款将随着时间的推移呈二次曲线上升。一开始很低;大约4.5天后,离线验证器将失去1%的质押。然而,它在~10天后增加到5%,在~21天后增加到20%(这是阿拉伯的价值,未来将翻一番)。

该机制的设计是在大量的灾难性事件中完成链。随着离线验证器质押损失的增加,其在总质押中的份额将越来越小。当他们的质押降至不到三分之一时,剩余的在线验证器将获得三分之二以上,以便他们最终确定链。
然而,还有另一种情况与此有关:在某些情况下,验证器不能向有效链投票,因为它们意外地将自己锁定在无效链中。以下是更多关于此的信息。
大多数用户端运行有多糟糕?
让我们来看看三种失败类型:
1.大规模减少事件:由于错误,大多数客户端验证器都签署了大幅减少的证书。
2.大量离线事件:由于错误,大多数客户端验证器都离线了。
3.无效块事件:由于错误,大多数用户端验证器证明有无效块。
其他类型的大规模失败和杀戮也可能发生,但我仅限于与客户端错误相关的错误(在选择运行哪个客户端时应考虑)。
场景1:双签。
这可能是大多数验证器操作员最害怕的场景:导致验证器客户端签署可删除证书的错误。例如,两名证人向相同的目标期投票,但有不同的有效负荷。因为这是客户端的错误,我们不仅关注承诺人,还关注所有经营特定客户端的承诺人。一旦发现这些模糊行为,将是一场大屠杀:所有相关承诺人将损失100%的承诺资金。这是因为我们正在考虑多个客户端:如果相关客户端的承诺比例只有10%,则只有20%的承诺比例将降低(在Altair中;30%,并设置最终处罚参数)。
在这种情况下,损坏显然是极端的,但我也认为这是极不可能的。删除证书的条件非常简单,这就是为什么建立一个验证客户端(VCS)来强制执行它们。验证客户端是一个非常小的软件,经过良好的审计,这个规模的漏洞不太可能出现。
到目前为止,我们已经看到了一些减少,但据我所知,这些都是由操作员故障引起的——几乎所有这些都是由操作员在几个位置操作相同的验证器引起的。因为这些都不重要,所以金额很小。
场景2:大规模离线活动。
在这种情况下,我们假设大多数客户端都有错误,当它触发错误时,它会导致客户端崩溃。有问题的块已经集成到链中,每当客户端遇到块时,它就会离线,无法进一步参与谈判。大多数客户现在都离线了,所以非活动泄漏开始出现。
客户开发人员将争相重组一切。事实上,他们会在几个小时内发布错误的修复程序,以消除崩溃。
同时,订单供应商也可以选择简单地切换到另一个客户端。只要超过三分之二的验证器足够在线,二次活动泄漏就会停止。在错误的客户端被修复之前,这并非不可能。
这种情况并非不可能(崩溃的错误是最常见的类型之一),但总处罚可能不到质押的1%。
场景3:无效数据块。
对于这个场景,我们认为大多数客户端都有错误,会产生无效块,并接受它是有效的——也就是说,当使用同一客户端的其他验证器看到无效块时,他们会认为它是有效的,以证明它。
让我们调用包含无效区块链A的链,一旦产生无效区块,就会发生两件事:
1.所有正常工作的客户端都会忽略无效块,而是建立在生成单链B的最新有效磁头上。所有正常工作的客户端都将投票并建立在链B上。
2.故障客户认为链A和B是有效的,所以它会投票给两个最重的链中的任何一个。
质押
有三种情况需要区分:
1.有漏洞的客户持有的质押不到总质押的一半。在这种情况下,所有正确的客户都投票并建立在B链上,最终成为最重的链。在这一点上,即使是错误的客户端也会切换到链B。除了一个或几个孤立的块,没有坏事。这是令人欣慰的,也是为什么只有大多数用户是伟大的。
2.有漏洞的客户持有一半以上但不到三分之二的质押。在这种情况下,我们将看到正在构建的两个链-a是由错误的客户端构建的,B是由所有其他客户端构建的。这两条链中没有三分之二不能最终确定。当这种情况发生时,开发人员会争相理解为什么有两条链。当他们发现链a中有无效块时,他们可以继续修复错误的客户端。一旦修复,链a将被识别为无效。因此,它将开始建立在B链的基础上,这将最终确定它。这对用户来说是非常具有破坏性的。虽然我们希望链条有效性之间的混淆会很短,不到一个小时,但链条可能不会在几个小时甚至一天内最终确定。但对于制片人来说,即使是有问题的客户端,他们的处罚也相对较轻。如果他们不参与链a的建设,他们可能不会在几个小时内确定。但对于制片人来说,处罚也相对较轻。然而,我们谈论的惩罚可能不到一天。
3.有问题的客户持有超过三分之二的质押。在这种情况下,错误的客户端不仅会构建链a,还会有足够的质押来结束它。请注意,它将是唯一一个认为链a已经完成的客户端。最终确定的条件之一是链有效,链a将无效于所有其他正确操作的客户端。但是,由于casperFG协议的工作模式,当验证器最终确定链a时,除非链最终确定(对于任何对细节感兴趣的人,请参考附录2),否则永远不会参与另一个与A冲突的链而不被切断(因此,一旦链a最终确定,错误客户端的验证器将陷入可怕的困境:他们已经提交了链a,但链a无效。他们不能为B做出贡献,因为它还没有最终确定。即使他们的验证器无法修复。现在会发生什么?非常痛苦:未确定的B链将进入第二次无活动泄露。几周内,非法验证人将再次泄露其质押,直到B失去足够的质押。假设他们一开始持有70%的质押——他们将失去79%的质押,因为这是他们需要失去的金额,不到总质押的三分之一。在这一点上,链B将再次确定所有质押者都可以切换到它。链条将再次恢复健康,但中断将持续数周,数百万ETH将在此过程中被摧毁。
显然,案例3只是一场灾难。这就是为什么我们非常热衷于防止任何客户持有超过三分之二的质押。那么任何无效的块都不能最终确定,永远不会发生。

风险分析
那么,我们如何评估这些情况呢?典型的风险分析策略是评估事件的可能性(1-极不可能,5-极不可能)和影响(1-非常低,5-灾难)。最重要的风险是以影响和可能性乘积为代表的两个指标得分高的风险。
质押
考虑到这一点,到目前为止,最重要的是场景3。当一个客户端处于绝对大多数的三分之二时,影响是相当灾难性的,这也是一个相对可能的场景。为了强调这样的漏洞很容易发生,最近Kilntestnet上出现了这样的错误(见Kilntestnet防止提案失败)。在这种情况下,Prysm在提出后确实检测到了积木的缺陷,并没有证明这一点。如果Prysm认为阻塞是有效的,并且发生在Mainet上,那么我们在场景3中描述的灾难性情况——因为Prysm目前是Mainet的三分之二。因此,如果你目前正在运营Prysm,你可能会失去所有的资金。这是一个非常真实的风险,你应该考虑更换客户端。
场景1可能是最令人担忧的,评级相对较低。原因是我认为发生这种情况的可能性相当低,因为我认为Validator客户端软件在所有客户端都做得很好,不太可能产生倾斜证明或块。
如果我目前经营多个客户端,我担心切换,我还有什么选择?
更换客户端可能是一项主要任务,并伴随着一些风险。如果斜切数据库没有正确转移到新设置中,我们该怎么办?可能有被切断的风险,这完全违背了目的。
我会向任何担心这一点的人推荐另一个选择。您还可以保持验证器设置不变(无需取出密钥等),并只切换信标节点。这是一个非常低的风险,因为只要验证器客户端按预期工作,它就永远不会重复签名,因此不能切断。特别是,如果您有一个大的操作,更改验证器客户端(或远程签名)的基础设施将非常昂贵,可能需要审查,这可能是一个不错的选择。如果性能不如预期的好,您也可以很容易地切换到原始客户端或尝试其他少数客户端。
好消息是,在切换信标节点时,你几乎不必担心:它对你的最坏影响是暂时关闭。这是因为信标节点本身永远不会产生可切割的信息。如果您运行少数客户端,则不可能最终进入场景3,因为即使您投票支持无效块,块也不会得到足够的票来最终确定。
客户端怎么样?
以上内容适用于consensus客户端-prysm、lightower、nimbus、loestar和teku。写这篇文章的时候,prysm可能有三分之二的网络。
所有这些都适用于执行客户端。谷歌-etherum很可能是合并后的大多数执行客户端。如果产生无效块,最终可能会确定场景3中描述的灾难性故障。
幸运的是,我们还有另外三个执行客户端准备投入生产-nethermind、besu和erigon。如果你是质押者,我强烈建议你操作其中一个。如果你经营少数客户端,风险很低!但如果你经营大多数客户端,你将面临严重损失所有资金的风险。
附录
附录1:为什么不大幅减少无效块?
在场景3中,我们必须依靠二次无活动泄漏来惩罚无效块的验证器。奇怪的是,为什么我们不直接惩罚他们呢?它看起来更快,也不那么痛苦。
事实上,我们不这样做有两个原因——一是我们目前不能这样做,但即使我们可以,我们也可能不这样做:
1.目前,引入无效数据块的惩罚几乎是不可能的(大幅减少)。这是因为信标链和执行链目前并非无效——也就是说,为了检查块是否有效,您需要一个上下文(状态),大小为100smb(信标链)或GB(执行链)。这意味着没有简明的证据证明块无效。我们需要这样的证据来减少验证器:减少验证器块需要包括验证器已经违法的证据。没有国籍共识,有一些方法可以绕过这个问题,但它将涉及更复杂的结构,如多轮欺诈证据,如Arbitrum目前用于总结的证据。
2.我们可能不渴望引入这种削减的第二个原因是,即使我们能做到这一点,也是因为无效块比目前的削减条件更难预防。目前的条件非常简单,验证器客户端只需要几行代码就可以轻松验证。这就是为什么我认为上述情况1不太可能——到目前为止,可删除的消息只是由运营商的错误造成的,我认为这可能会继续下去。添加无效块(或证明它们)的斜切割会增加投资者的风险。现在,即使是那些经营少数客户端的人也可能面临严厉的惩罚。
总之,在接下来的几年里,我们不太可能直接看到无效块和/或证明。

附录2:为什么有缺陷的客户端在最终确定链A后不能切换到链B?
这一节是为那些想更详细地了解为什么错误的客户端不能简单地切换回来,不得不遭受可怕的活动泄漏的人设计的。为此,我们必须看看CasperFG最终决定如何工作。
每个证书都包括一个源检查点和一个目标检查点。检查站是一个时代的第一个区块。如果有从一个时代到另一个时代的链接,而且链接的投票总数超过了所有利益的三分之二(即证据太多,第一个检查点是源,第二个检查点是目标),我们称之为超级链接。
一个时代可以合理或确定,其定义如下:
1.纪元0对齐。
2.如果与一个合理的时代有绝对多数的联系,那么一个时代代理。
3.如果(1)纪元X是对齐的,(2)下一个时代也是对齐的,链接的大部分来源都是时代X,那么时代X最终会确定。
规则3略有简化(更多的条件最终可以确定一个时代,但它们对这个讨论并不重要)。现在,让我们来看看大幅减少的条件。大幅减少证明有两条规则。两者都比较了一对V和W:
1.如果V和W的目标是相同的时代(即相同的高度),但它们不投票给相同的检查点(双重投票),它们可以被切断。
2.这意味着(1)V源早于W源和(2)V目标晚于W(环绕投票)。
第一个条件是显而易见的止简单地投票给两个不同高度的链条。但是第二个条件是什么呢?
它的功能是减少所有参与并最终确定两个冲突链的验证器(这永远不会发生)。为了解原因,让我们再次查看我们的场景3。在最坏的情况下,绝对大多数错误的客户端(>2/3质押)。当它继续投票给故障链时,它最终会确定无效块的时间,如下:
质押
图中的圆角框代表时间,而不是块。绿色箭头是所有验证器创建的最后一个超大多数链接。红色箭头是超大多数链接,只有错误的客户端支持。正常工作的客户端忽略了无效块(红色)时间。第一个红色箭头将证明无效时间是正确的,第二个箭头将确定无效时间。
现在让我们假设错误已经修复,最终确定无效时间的验证器想要添加正确的链B。为了终止链,第一步是调整时间X:
质押
然而,为了参与时代X的调整(它需要一个大多数由虚线绿色箭头指示的链接),他们将不得不跳过第二个红色箭头——最终确定无效时代的箭头。投票支持这两个链接是一个可以切断的攻击。
这将继续适用于任何后来的时代。修复它的唯一方法是通过二次无活动泄漏:随着链B的增长,锁定验证器将泄露他们的资金,直到链B可以被正常工作的客户端合理证明并最终确定。
免责声明:作为区块链信息平台,本网站提供的信息并不代表任何投资暗示。

转载请注明:比特币区块链时代 » 以太坊合并多个客户端的后果需要自行承担运行

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址