这是Hans的“终极共识”系列文章的最后一篇,在本文中,主要分析了可能的攻击向量和应对措施。
自从我发布了这篇博文的第四部分以来,关于这个新提议有很多讨论。我多少预料到了类似的事情会发生,这就是为什么我计划使用一个单独的部分来处理权衡和攻击向量。
由于所有的投票都是公开的,并且是Tangle的一部分,所以攻击者没有太多的选项来破坏系统(至少在每个人都知道的情况下没有)。
攻击向量
攻击者有以下三种攻击思路:
不遵循“权重最大的世界”的规则
一旦冲突的一个结果受到青睐,并且比其他竞争选项的权重更大,节点就应该转换它们的观点,并通过将它们的下一个交易附加到相应的FLC上来跟随大多数节点。这种机制使网络中的意见开始倾斜,最终使节点达成共识。
攻击者节点想不遵守这个规则,即使他在投票中看到不同的“赢家”,也不会帮助网络进一步倾斜,但也不会真正伤害网络。如果其中一个观点已经很重了,那么这意味着网络已经开始倾斜了,这意味着其他诚实的节点无论如何都会遵循这个更重的观点,攻击者已经失去了它的影响。
一段时间内不发表意见,然后突然增加权重
攻击者也可以保持一段时间的沉默,然后在先前看起来是一种观点占上风的时候,再进来把被支持的观点转向另一个方向。
这可能是最危险的攻击之一,因为它允许攻击者双花。然而,这只有在攻击者控制相当大的Mana值时才有效。
但是,他等待的时间越长,第一次交易的法力值就会越高。如果我们使用“协作交易发布”(我们总是在交易中包含另一个大型法力持有者的声明),那么攻击者在几秒钟后就会失去控制。
特别是对于大额支付,商家应该等待几秒钟,直到“认同”某笔交易的Mana值大到不可能逆转为止(每个接受者可以自己决定在“接受支付”之前他想要多少“信心”)。
注:如果我们假设大部分法力是由1000个顶级法力持有者持有,而我们拥有500个TPS,那么大多数大型法力持有者在几秒钟后就会做出选择声明。
通过保持意见的平衡,导致冲突无法裁定
这一点目前引起了最大的争议和讨论(主要是在我和Serguei Popov之间) , 因为它相当于“分裂攻击”,这是对Tangle的原始“白皮书版本”最具破坏性的攻击之一,一旦冲突最终解决,可能会迫使大量交易重新连接。
与“原始”的“分裂攻击”不同,“分裂攻击”阻止决策的做出,会影响附加到冲突交易的所有交易,但在这里,它只会影响冲突交易本身,因为冲突背后的诚实交易能够独立地发展它们自己的FLC(通过不同意节点设置相应的分支,如flag)。
我不得不承认,即使有了法力,理论上仍然有可能让一场冲突在很长一段时间内悬而未决,但这肯定比Tangle的“工作证明”版本要困难得多。由于法力是有限的,攻击者必须非常小心地处理这种平衡。一旦网络的倾斜度超过攻击者控制的法力值,他就会失去控制,无法再倾斜回来。
因为他不知道所有其他节点的本地感知。 对于他来说,很难“预测”他应该在什么时候发布下一个将再次把网络推向相反方向的交易。 (系统中存在大量的“自然随机性”:随机网络时延、随机固化时间、交易发行者选择的随机合作者、秘密网络拓扑等)。
此外,为了在两个冲突之间达到某种形式的平衡,攻击者将不得不或多或少地同时发出两个冲突交易。如果他等了太长时间才释放第二个花费,他也会失去影响力,因为太多的诚实的法力将已经认可了第一笔交易(类似于之前讨论的攻击)。
尤其是最后一个方面让我觉得,这个“攻击向量”并不是真正的“攻击向量”,因为如果一个商人看到一个客户试图在头2-3秒内双花,那么他就可以一直等待,直到网络“真的”出现倾向性选择。如果他发现这两种选择都无法获得绝对多数的选票,那么他就可以等着不发货。
我想对我的观点做一个简短的总结:一个冲突只有有能力将前面一个已经确认的花费给返转了,那么这个冲突才可以被视为一个双花。如果每个人都能在开始的两秒钟内看到双花的尝试,那么保持冲突不确定甚至都没有坏处,我们甚至不能称之为“双花”。毕竟,冲突无法裁定的唯一影响是,攻击者的资金基本上被冻结,直到做出决定。
这与发送手续费过低的比特币交易非常相似,交易可以在“mempool”中停留一段时间,但时间未知。如果一个商人没有等待必要的“确认”,那是他自己的错误,而不是协议的问题。
这种“分裂攻击”的可能的解决方案:我已经想到了打破这种平衡的方法。例如,一种选择是使用“二进制指数回退算法”来局部延迟节点的消息,如果这些节点过于频繁地转换它们的观点。这将使攻击者更难预测其他节点何时会看到它的交易,而这些交易可能会“破坏它对投票的影响”。
展望和开放式提问
我确信,提议的投票机制接近绝对最优(不仅仅是关于消息开销,还是现有的攻击向量的数量及其无需对一个固定大小的委员会的依赖),但我不确定Mana机制是否有足够强的激励能让节点保持诚实。
由于所有的投票都是公开的,所以可以设计一种“不同类型的Mana”来衡量与节点实际行为紧密相关的投票。我对此有一些想法,但还没有具体到可以给出规格说明的地步。我真的很想看到一些关于这方面的讨论和意见——也许我们可以设计一些东西使这个方法更好。
原文来源
https://medium.com/@hans_94488/a-new-consensus-the-tangle-multiverse-part-5-f51e4afbcc42
本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:https://www.iota.love/201911/a-new-consensus-the-tangle-multiverse-part-5/