此外,我们对不活跃惩罚的工作方式进行了两项更改:
更多的讨论可以参考此处:https://github.com/ethereum/eth2.0-specs/issues/2098?
具体参考:https://github.com/ethereum/eth2.0-specs/pull/2192? https://github.com/ethereum/eth2.0-specs/pull/2194? 值得庆祝的一点是,通过削弱验证者罚款,我们可能稍微(尽管尚未完全)走出困境。 我们将对常数进行更改:
(区块,slot)对(pair)的分叉选择 当前,如果在最近的slot中没有发布任何块,则出于该slot期间的LMD GHOST证明的目的,视为证明者正在支持的链中的最新区块。 例如,在下面的这张图中,BLANK上的证明算作A上的证明: 但是,这为34%攻击打开了大门。 假设为每个slot分配了m个验证者,其中恶意攻击者控制了0.34 * m。 攻击者也有权为slot n + 1发布区块B。 攻击进行如下:攻击者不发布B,也不发布其任何证明。 所有诚实的证明人都会投票支持声称他们在第n个slot中看到区块A而在第n + 1个slot中什么都没有看到的说法,当前该计数被视为对A的投票。在第n + 2个slot中,一个诚实的提议者会在A上面构建一个区块C, 此时,恶意提议者会向slot n + 1和n + 2公布B及其对B的证明。 上面的分叉有0.68 * m个验证者支持它,但顶部分叉只有0.66 * m的支持,因此下面的分叉获胜。 这种攻击在该论文的 3.1章节中进行了更加详细的描述:https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf? 拟议的解决方案是更改分叉选择的工作方式,从而使其对(区块,slot)对的树进行操作,而不是对区块树进行操作。 因此,在上图中,slot n + 1中的诚实投票将计为对(BLANK,n + 1)的投票,因此它们将正确地计为支持上面的分叉,因此上面的分叉获得的支持为1.32 * m,从而击败攻击。 (责任编辑:admin) |