; R! h: e3 B$ U. U' }- G+ b显然,案例3简直就是一场灾难。这就是为什么我们极其热衷于不让任何客户端持有超过三分之二的质押。那么任何无效的块都不能被最终确定,这永远不会发生。, \ r/ y6 G5 N" j t' ]
h$ t7 P4 v7 f' z) m
风险分析/ f' f: v$ w( Q% X! S
$ v* v7 m& F% U& N# c! a
那么,我们如何评估这些情景呢?典型的风险分析策略是评估事件发生的可能性(1-极不可能,5-非常可能)以及影响(1-非常低,5-灾难性)。需要关注的最重要风险是那些在两个指标上得分都很高的风险,以影响和可能性的乘积为代表。 % n' n( @, q7 s4 ^/ v ( \1 `! K, O% A0 i# E8 j- w 0 F: H4 i) B. A+ a" M) T' Z# [3 I . y1 G% o' A/ R/ x1 A- _考虑到这一点,到目前为止最优先的是情景3。当一个客户端处于三分之二的绝对多数时,影响是相当灾难性的,这也是一个相对可能的情景。为了强调这样的漏洞很容易发生,最近在Kiln Testnet上发生了这样的错误(参见Kiln Testnet阻止提案失败)。在这种情况下,Prysm在提出后确实检测到了积木有缺陷,并且没有证明这一点。如果Prysm认为该阻塞有效,并且这种情况发生在Mainnet上,那么我们处于场景3的情况3中描述的灾难性情况-因为Prysm目前在Mainnet拥有2/3的多数。因此,如果你目前正在运营Prysm,那么你可能会损失所有资金,这是一个非常真实的风险,你应该考虑更换客户端。 ! o2 D: O( u, S3 f p , v" Y& N. n* K情景1可能是人们最担心的,得到的评级相对较低。这样做的原因是,我认为发生这种情况的可能性相当低,因为我认为Validator客户端软件在所有客户端上都实现得很好,它不太可能生成可倾斜的证明或块。 $ }5 d J9 [% q$ q / f( Z& ^* H0 v4 G; l+ u+ ?如果我目前运行的是多个客户端,并且我担心切换,我还有什么选择?4 D) a! G% ~. R3 E# j7 }3 {9 A$ L
6 o, P" e0 o4 i2 I7 n更换客户端可能是一项重大任务,这也伴随着一些风险。如果斜切数据库未正确迁移到新设置,该怎么办?可能会有被砍掉的风险,这完全违背了目的。" N5 Y1 H, U8 q3 }" E4 l
& ^8 O6 _" o! E. i我会向任何担心这一点的人建议另一种选择。也可以让您的验证器设置保持原样(不需要取出密钥等),并且只切换信标节点。这是非常低的风险,因为只要验证器客户端按预期工作,它就永远不会重复签名,因此不能被砍掉。特别是如果您有大型操作,其中更改验证器客户端(或远程签名者)基础设施将非常昂贵,并且可能需要审核,这可能是一个很好的选择。如果设置的性能不如预期,也可以很容易地切换回原始客户端,或者尝试其他少数客户端。8 V: u6 }- P% J" T! \& g7 z
2 Z* a6 d Q, ^! s% o6 u
好消息是,在切换信标节点时,您几乎不用担心:它对您造成的最坏影响就是暂时脱机。这是因为信标节点本身永远不能自己产生可切削消息。如果您运行的是少数派客户端,则不可能最终进入场景3,因为即使您投票支持无效的区块,该区块也不会获得足够的票数来最终确定。- \) t* P* y; N) K
8 v N4 a1 A" {- F
那被惩罚客户端的呢?- K$ a; u4 ?; T* f W
`9 ?9 K$ ]2 ^7 ^1 f我在上面写的内容适用于Consensus客户端-Prysm、LighTower、Nimbus、Loestar和Teku,在撰写本文时,Prysm可能在网络上拥有三分之二的多数。 ' L/ a Z8 e/ P7 A; `( w2 T& k {+ ^* h
所有这些都以相同的方式适用于执行客户端。Go-Etherum很可能是合并后的大多数执行客户端,如果它产生无效的块,它可能会最终确定,从而导致场景3中描述的灾难性故障。 0 ^' o& o- g' ]* ]6 N9 @& K& I& S& L u * [" R3 S/ }: c5 p9 U# F8 t1 ?幸运的是,我们现在已经有另外三个执行客户端准备好投入生产--Nethermind、Besu和Erigon。如果你是一名质押者,我强烈建议你运行其中的一个。如果你经营的是少数派客户端,则风险非常低!但如果你经营多数客户端,你就面临着损失所有资金的严重风险。 * U3 y) e' S- H! u+ |6 c ' s; B! V0 f& K. s' L) r) p附录 ! S t: t" F7 T Q4 [* x6 V6 z5 F5 {( L( E8 Z6 s4 s: e9 k) E, y
附录1:为什么不对无效的区块进行大幅削减? - i3 N8 q5 h" J+ X! z6 z ' Q: C! N! E% h- O- f在场景3中,我们必须依靠二次无活动泄漏来惩罚提出和投票给无效块的验证器。这很奇怪,为什么我们不直接惩罚他们呢?这样看起来会更快,也不会那么痛苦。 / e* A7 d2 L* h! c. d' p2 P7 ^! J- h) c1 W. u
事实上,我们不这么做的原因有两个--一个是我们目前不能这么做,但即使我们可以,我们也很可能不会这么做:/ y* d0 S; f4 J! c' L
& J1 K6 }; |! [4 g, K' U
1. 目前,几乎不可能对无效数据块引入惩罚(“大幅削减”)。这是因为信标链和执行链目前都不是 “ 无状态 ” ——即为了检查区块是否有效,您需要一个大小为100s MB(信标链)或GB(执行链)的上下文(“状态”)。这意味着没有 “ 简明的证据 ” 来证明区块是无效的。我们需要这样的证据来削减验证器:“削减”验证器的块需要包括验证器已经犯法的证据。在没有无国籍共识的情况下,有一些方法可以绕过这个问题,但它将涉及更复杂的结构,如多轮欺诈证据,如Arbitrum目前用于汇总的证据。 0 ^3 v, A7 v* ~5 L+ H0 _; J8 a# l& Z/ g9 i- J9 F! [
2. 我们可能不那么急于引入这种类型的削减的第二个原因是,即使我们可以这样做,也是因为产生无效块比目前的削减条件更难防止。目前的条件非常简单,验证器客户端只需几行代码就可以轻松地进行验证。这就是为什么我认为上面的情景1不太可能--到目前为止,可删减的消息只是由运营商的失误产生的,我认为这种情况可能会继续下去。添加用于产生无效区块(或证明它们)的斜切会增加投币者的风险。现在,即使是那些经营少数派客户端的人也可能面临严重处罚。 % H% k% I5 Q! V0 V1 ~ X1 b+ m- m' q9 v3 @/ b/ S
总而言之,在接下来的几年里,我们不太可能看到对无效块和/或对它们的证明进行直接惩罚。4 K, V! d- _! R. k4 C, _