Conflux的致命漏洞(此贴存在标题党的行为,括号内容为管理员手动加入)

既然比特币都有N多攻击方法,那你吐槽C链而不提供解决办法意义和目的何在?

我估摸着,C链的问题不是打补丁能够解决的。引进权重为0的区块本身就是一个错误。要解决这个问题需要设计一个新的共识机制。

或者干脆放弃PoW共识机制转为PoS或PoA共识机制。在有大量代币或现实世界的声誉作质押的情况下,会部分符合诚实人假设。

我把我对这个问题最主要的 comment 再 highlight 一下吧。如果你只是表达自己的观点,或者重复已经发过的论证内容的话,我就不再多回复什么了。

我不太懂,我的意见:不管别的公链是不是也存在这个问题,还是这个漏洞是普遍存在的,我们都应该想办法解决,不能让我们的公链存在致命的漏洞,离岸人民币如果上了有没有对国家安全造成影响,不能因为是个普遍问题不去解决啊,关键是漏洞不能致命啊。我不太懂区块链,但态度要有,国家安全高于一切。

有没有动机破坏和有没有能力破坏要分开讨论。任何链上都有矿工有动机去搞破坏,比如比特币,但是他们有能力吗?比如,比特币上的自私挖矿有25%的算力阈值。而GHAST的自私挖矿算力阈值接近于0。这能相提并论吗?无论何种形式的攻击,算力阈值接近于0都是不可接受的,无论您强调正常情况下这个概率有多么小。
更致命的是这种算力阈值接近于0的攻击会产生更加严重的后果:破坏区块最终性!

A very good conversation, thank you…and keep it up…

Also a great grad student or computer science project for Conflux to sponsor, if as a group we have consensus approval for spending the time and effort on the perceived problem…

请conflux官方团队高度重视这个问题,多方论证,到底是不是致命漏洞,我们不怕有问题,我们刚起步,我们要正视问题,但方向很重要,如果方向错了,那么建立在上面的一切都很有问题。全中国这么多能人,一定会有解决的办法。中国公链一定会崛起的一天,加油!!!

2 Likes

你仔细想想,你为 Conflux 设定的攻击场景,和为比特币设定的攻击场景,是同一个假设吗?

在你为 Conflux 设计的攻击场景中,攻击者有极大的链外利益驱动,所谓的“时间就是金钱”的应用。而在比特币的自私挖矿的模型中,甚至来自交易费的利益都没有,所有利益全部来自于区块基本奖励。

我在我的结论中说,共识协议之外的巨额利益会破坏任何一个共识协议。您却以自私挖矿举例反驳我,您是不是不知道自私挖矿的模型中根本没有共识协议之外的利益?

我举了一个比特币在链外利益驱动下共识被破坏的例子,你在最后一次发言中直接无视了。这个例子中,攻击阈值难道不是0吗?

再次重申我的结论。

================================分隔线==================================

关于这位朋友的关切,我认为这只是一个学术探讨,和真实世界关系不大,“致命”只是楼主个人的用词。

原因是因为,它只假设了攻击者有巨大的链外利益(即共识协议之外的利益),而诚实矿工完全没有链外利益。攻击方与防守方在这个理论模型中处于不对等的地位。

如果 Conflux 有一天真的上升到国家安全的程度了,诚实矿工将会有巨大的链外利益(国家利益)。我不能保证那个场景下博弈的均衡是一个安全的结果。因为一个公链一旦上升到国家安全程度,守护它与破坏它的链外利益都是复杂且当下不可预知的。这已经超出这里讨论的问题了。

抱歉来晚了,因为我叕被限言了。

不存在的,自私挖矿的模型同样考虑到了交易费收益,只不过它假设每个区块的期望收益是相同的。

这个观点我不太认同。如果有挑战者能够从破坏协议中获得共识协议之外的利益,那么同样有既得利益者能够从执行协议中获得共识协议之外的利益。只要双方地位是对等,没有理由认为既得利益者会明显地落地下风,至少不会出现算力阈值为0的情况。除非这个共识协议之外的巨额利益是以破坏协议为前提的。如果真的存在这种异常强大且纯粹恶意的力量,那么没有任何方法可以抵御。这已经超出了机制设计的范畴,也不是我们应该讨论的问题。而GHAST的问题是:权重为0的区块使双方的地位完全不对等,使得算力阈值接近于0的情况出现了。你敢说这不是GHAST引入的问题吗?

我只能呵呵了。在比特币生态中除了矿工还有钱包用户。钱包用户在利益上是完全中立的,并且会忠实地执行最长链原则。无论矿工怎么争抢这笔交易,最终钱包用户只会承认最长的那条链。最终最长链达到一定长度之后,其他没有实力的矿工只能放弃。而且这种情况不可能作为一种攻击方式,因为成本太过高昂!
================================分隔线==================================
“致命”一词毫不夸张。GHAST的卖点就是解决了GHOST的区块最终性问题。我现在提出它实际上不成立。能说不致命吗?区块最终性不成立就意味着Conflux的共识机制与市面上的其它高性能公链相比根本就没有亮点。
“国家安全”之类的我只能呵呵了。这位韭菜too simple,too naive。镰刀换一身体面的马甲你就不认识了?

第一,你举的“时间就是金钱”的例子并不是来自交易费的收益,比如 Fomo 3D,我不让你上链我就有收益。你曾经明确表示,你的假设里是考虑了链外收益了。

第二,对于我说的攻击场景,如果矿工都在争相打包这笔交易,拒绝在其他打包这笔交易区块后面挖,整个链就不会增长,哪里来的最长链?而且这个阈值同样是0.

第三,我再次强调,你一直在使用双重标准去对比 Conflux 和比特币的共识。例如,你在分析 Conflux 时,并没有考虑诚实矿工的链外利益,而在分析比特币共识时,却又引入了诚实矿工的链外利益。(即你所谓的既得利益者。)

你为了反驳我“链外利益普遍会破坏共识”的观点,证明你是对的,我是错的。你多次修改你在分析 Conflux 问题时的假设。对于在攻击者的利益来自哪里,矿工的利益来自哪里等问题上反复横跳,在分析 GHAST 协议与比特币协议时使用不同的标准与假设。GHAST 不可能在你的双重标准下打败任何其他共识的。

对你的说法,我很无语。
第一,我明确表示我考虑了链外收益。OK?
第二,看来你并不了解比特币的“三权分立”。开发人员掌握立法权,矿工掌握行政权,钱包用户掌握司法权,三方相互制约。矿工只能决定打包哪条链,而钱包用户可以决定哪条链才是合法的,矿工并不能为所欲为。如果矿工打包的链不是最长的,那就意味着那条链不是合法的,不会被承认!所以,无论矿工怎样争抢,为了使自己打包的链被钱包用户承认,就必须使自己的这条链比其它链更长。所以,根本不存在链不会增长的问题。
第三、我没有使用双重标准。问题的关键在于守法者与挑战者双方地位是否对等。GHAST的问题就在于权重为0的区块使守法者处于压倒性的不利地位。

如果你认为我多次修改假设以及双重标准,那么说明你的阅读理解水平有很大的问题。
================================分隔线==================================
对第三点我再补充一下。所谓链外收益最终要通过打包来实现,关键就是交易的确认顺序。如果挑战者可以通过推翻原有的交易顺序使自己的交易排在前面而获利。那么守法者也可以通过维护原有的顺序使原有的交易(极有可能就是守法者自己的交易)排在面前而获利。从这一点上讲,没有理由认为守法者会比挑战者缺乏动机。

第一条是我的理解问题,我收回。但自私挖矿攻击确实没有考虑链外收益,你在用有链外收益的攻击(你构造的工具)对比没有链外收益的攻击(自私挖矿)。

第二,你对你的双重标准毫无察觉。既然比特币的矿工要考虑区块被钱包承认,那 GHAST 矿工要不要考虑区块被钱包承认?平衡攻击持续的状态下,任何一笔交易都是不会被承认的。平衡攻击解决以后,区块可能因为 anti-cone penalty 没有区块和交易费收益,交易也可能因为 target epoch 超时而不被打包。这和非法区块有什么区别?为什么 GHAST 的攻击者就不想想自己的区块会不会被承认呢?

第三,在我构造的攻击场景中。如果有守法者的话,守法者是不会拿到这笔高价值的交易费,这是不是使守法者(在利益分配上)处于压倒性的不利地位?

对于你分割的补充,你又添加了一个假设,守法者等同于攻击者的链外利益。那是不是意味着,除了有动机保护自己交易的人,其他人都会变成攻击者?为什么你在攻击 GHAST 时,强调的是吃瓜群众有动机攻击。在分析我的攻击场景时,强调守法者可能有利益需要保护呢?那我的攻击场景下,吃瓜群众有没有动机攻击呢?

=====

我再补充一下,为什么我认为我构造的比特币的攻击与你构造的 GHAST 攻击是同样的问题,包括

  • 如果网络中有一些诚实的矿工(保护者),或者有一些矿工有动力保护共识协议,攻击的状态最终会结束。
  • 在攻击的状态结束前,任何算力的矿工,都可以通过违背协议而影响交易打包顺序,进而谋取利益。
  • 在攻击的状态结束后,矿工不再有攻击的动机。

还是很无语。
第二、请不要混淆“没有区块和交易费收益”和“非法”。仅仅“没有区块和交易费收益”意味着区块内打包的交易仍然是被承认的。只要交易被承认就存在链外收益。而且“没有区块和交易费收益”真的好吗?我可以再找出新的攻击手法。希望您慎重考虑!至于“交易也可能因为 target epoch 超时而不被打包”就有点扯蛋了,我不知道你在说什么。
第三、您构造的场景根本不可能重复攻击,我不相信有人会采用这种愚蠢方式去作攻击。如果他有这种实力,为什么不去搞51%算力攻击+空块攻击?即使遇到这种情况,经过短暂的混乱之后,一切都会恢复正常。您还想说什么?
第四、我没有添加任何假设。你敢说维护原有交易顺序不会使任何人获得链外收益吗?这些人就有足够的动机成为守法者。

这是一个好问题。成为攻击者的前提是他有足够的实力发起攻击。如果他没有足够的实力发起攻击,那么维护原有的秩序就是一个纳什博弈均衡点。因此,有足够高的算力阈值至关重要。而GHAST的问题是在这种情况下,算力阈值接近于0!还需要我多说吗?

我已经在总结中提到了这一点,我不再重复。

这是 Conflux 系统设计之一,我可以理解你并不熟悉它,但请不要骂人。

或者说,如果在这种情况下,我们引入一些机制使交易不被执行,这个问题还存在吗?(但也可能引入别的问题,我需要仔细想想。)

真的需要很强的实力吗?我看见了一个特别值钱的交易,一笔顶 1000 个区块的交易费。我决定去打包这笔交易。即使有其他人打包了,我也无视掉,并尝试分叉,直到有分叉胜出。因为我觉得这会吸引一群吃瓜群众来跟我一样,所以遵守协议也未必能拿到钱。

你构造的 GHAST 攻击,难道不是这样吗?你攻击的点,难道不在于攻击持续的过程中,会吸引每一个吃瓜群众参与吗?况且,你构造的攻击情形,得先有 >20% 的算力进来持续几个小时,把网络搞到 conservative setting 才行。

怎么吸引吃瓜群众?除非你不打包这笔交易,并把这笔交易当作诱饵持续吸引吃瓜群众,并把所有打包了这笔交易的吃瓜群众都屏蔽掉。只要你打包了这笔交易,就不可能吸引吃瓜群众。
另外,您有必要了解一下“囚徒困境“。我发现跟您谈论这个问题就好像鸡同鸭讲。

争论的焦点在于区块最终性。您提出的这种攻击方法无法如何都无法破坏区块最终性。请您抓住重点。

我的意思是吸引吃瓜群众分叉,不是吸引吃瓜群众 follow 我的区块。

正是因为有一群吃瓜群众分叉,我遵守协议也未必能拿到奖励,因为不知道哪个分叉赢,不如赌一把。至于 follow 我的区块,得指望一些始终忠实者。(即我假设网络中有一定比例的始终忠实者,我认为这是合理的。如果你不认同这个假设,可以再讨论。)

看来我一直误解了你攻击的点。如果 GHAST 共识失去了最终性,那么所有交易都不会被确认和执行。那你构造的来攻击的吃瓜群众,图什么?你刚刚不是还强调钱包用户认可的重要性吗?

不过既然争论的焦点是这个,也没必要纠结比特币的例子了。因为你一直在强调阈值为 0,所以我以为你的重点是会吸引一群吃瓜群众搞事。我主要想论述,在吸引吃瓜群众搞事这件事上,只要链外利益足够大,都会出现的。

我认可我给出的攻击情形,在比特币网络存在算力集中,且其他算力不联合的情况下,是会出现一个胜出者,然后网络继续运行的。

这种情形实际上可以归结为自私挖矿,顶多就是自私挖矿的一个修订版,没有什么新鲜的。这方面已经有充分的研究。您到底想说什么?

当然是希望从抢先确认交易中获得利益,一旦区块最终性确立,他们的利益就得到确认了。当吃瓜群众纷纷搞自私挖矿的时候,诚实挖矿者就显得很“傻”了,因为他并不能为自己获得额外的利益。

这一点可以用“公地悲剧”来解释。

我主要想论述,在吸引低算力吃瓜群众搞事这件事上,只要链外利益足够大,都会出现的。

所以你的攻击重点究竟是什么?是这一攻击会导致 Conflux 失去最终性,还是这一攻击导致对诚实者不公平?

失去最终性是目的,对诚实者不公平是手段。