但是,这为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,从而击败攻击。
更多内容:
https://github.com/ethereum/eth2.0-specs/pull/2197
修复分叉选择余额攻击在分叉选择中存在一种“余额攻击”,拥有2%验证者的攻击者会在一个slot结束之前的正确时间发布少量证明,说服网络中超过49%的人认为某个区块A获胜,而超过49%的网络则认为B区块获胜。如果他们正确地安排了广播的时间,则每一组验证者都会按时看到针对他们的消息,但是没有时间在这个slot结束之前将消息重新广播到另一组验证者。如果网络环境对于攻击者而言是最佳的,则它们可以无限期地重复。
提议的解决方案是通过授权下一个slot的提议者对分叉选择产生暂时但重大的影响,从而将所有验证者的支持方向决定性地转移到一侧或另一侧,从而“打破了对称性”。
更多内容:
https://notes.ethereum.org/@vbuterin/lmd_ghost_mitigation

