Hi 游客

更多精彩,请登录!

比特池塘 区块链茶馆 正文
自私挖矿是一种针对比特币等工作量证明(PoW)机制区块链的挖矿策略,简单说就是挖到区块先不公布,而是继续挖矿,然后根据策略择机公布。而这种策略,根据研究者们的探讨,实际上会降低网络验证区块的速度,同时会削弱诚实矿工的盈利能力,而在难度调整之前,这也会对自私矿工本身带来不利影响。可以说,在这种情况下,自私挖矿相当于是“杀敌一千自损八百”的“七伤拳”。而只有在难度调整之后,自私挖矿才可能是有利可图的。由此,我们认为自私挖矿是针对比特币协议的一种攻击方式,这种攻击利用了比特币难度调整公式的缺陷。它在实际情况下虽然难以实现,但较51%攻击而言却是更可行的。对此,研究者CYRILGRUNSPAN和RICARDOPEREZ-MARCO’提出了一种新的难度调整公式,它虽然无法消除自私挖矿的可能性,但即使是在发生难度调整的情况下,自私挖矿较诚实挖矿也不会具有优势。论文标题:关于自私挖矿的盈利能力论文作者:CYRILGRUNSPAN和RICARDOPEREZ-MARCO’摘要:我们探讨了比特币网络当中可能存在的自私挖矿策略,并正确评估其攻击成本及盈利能力。预期的攻击持续时间,在很多相关文献中被忽略掉了,但这是关键的。我们证明了,这种策略只有在网络调整难度后才能够盈利。因此,这是一种针对难度调整算法的攻击。我们提出了一种改进协议,可使比特币网络免受自私挖矿攻击的可能。一、简介比特币协议[7]的稳定性,依赖于其规则符合网络参与者的自身利益。它的基本规则之一是,区块一旦得到验证,矿工们就会选择公布它们。而“自私挖矿”则是一种异常的挖矿策略[5],其中主要的矿工运营者选择扣留挖矿区块,并采取定时策略将其公布,以使网络其余矿工开采的最大数量区块无效。文献[5]的作者毫无根据地称自私挖矿策略会破坏比特币协议[4],但在实践当中,我们并没有观察到这种现象。其他研究人员则提出了其它被认为是“最佳的”自私挖矿策略[9]。自私挖矿策略以课程和教科书的形式,呈现在比特币书籍当中,例如[1](该书籍的第5章内容,被称为“临时扣块攻击”)或者[10]。然而,这些文献都没有对自私挖矿攻击的成本进行适当的分析,并且,更重要的是,它们忽略了时间考虑。更确切地说,这些论文中使用的马尔可夫模型,从一开始就是存在缺陷的,因为它没有纳入攻击持续时间分析。而本文的主要目标,是实现分析自私挖矿的盈利能力,这是在文献当中没有的。事实证明,在没有难度调整的情况下,这种自私挖矿策略是靠不住的。二、自私挖矿策略我们描述了文献[5]中提出的自私挖矿策略。自私矿工通过验证和不广播区块实施攻击,然后继续在这个区块的顶部秘密地进行挖矿。然后这名矿工会如下进行操作:(1)如果自私矿工的优势是1个区块,当诚实的矿工发现了一个区块,然后自私矿工立即偷偷地广播他已秘密挖到的区块。然后接下来就是一场竞赛,自私矿工在他公布的区块上进行挖矿任务。自私矿工与网络的其它参与者是有充分联系的,因此,诚实网络的0≤γ≤1占比部分会接受他的区块提议,并开始在他的区块上进行挖矿任务。(2)如果自私矿工的优势是2个区块,当诚实矿工发现了一个区块,然后自私矿工立即偷偷地广播他已秘密挖到的区块。然后,整个网络就会切换到他所在的分叉链。(3)如果自私矿工的优势大于2个区块,当诚实矿工发现一个区块时,则自私矿工可公布区块,以释放一条子链,与新的诚实区块进行竞争。而自私矿工可在他的秘密链上继续挖矿。(4)除了(1)之外,自私矿工都可以在他的分叉链上偷偷地进行挖矿。请注意,如果自私矿工的优势区块大于2,那么在某个时刻,他的优势将等于2个区块(因为我们假设他的算力小于50%,或者其它更有效的攻击是可能的),然后,根据第2点,整个网络最终采用自私矿工提出的分叉链。因此,当他的优势区块总是大于2时,自私矿工所公布的区块,总是会被网络所接受。而第3点则是有些无关的,因为当自私矿工占据优势时,重要的是强迫他验证的区块被纳入到区块链当中。他可以忽略掉诚实矿工的区块验证,除非当区块优势只有2时,然后自私矿工只能释放整个秘密分叉链。在文献[5]中,作者们假设了γ占比始终保持不变。这是不准确的,因为γ取决于网络新区块被挖掘的时间,因此它是无法保持不变的。但在[5]中所运用的马尔可夫链模型,就需要假设γ是不变的,因此,这些作者提出了这种假设。这种分析是不准确的。但是,更重要的是,他们没有核算这种攻击的成本。对于这样的流氓策略而言,计算盈利能力是十分重要的。时间分析对于估计盈利能力而言,也是至关重要的,但这些作者也都选择了忽略。三、自私挖矿vs诚实挖矿的盈利能力3.1.文献中的盈利能力。大多数关于自私挖矿策略的文章,都没有考虑挖矿成本因素,或只是含蓄地进行了表达。在文献[5]中,这个因素干脆被忽略掉了。而在文献[3]等文章当中,我们可以看到令人惊讶的陈述:成本。每个矿工m都有可配置的参数Cm,即表示矿工m进行挖矿任务的成本(即电力)。对于我们的模拟结果而言,我们总是设置Cm=0,因为我们不会看挖矿的这方面。显然,如果挖区块没有任何能源成本的话,任何人都可尝试逆转比特币交易的历史,并尝试双花攻击,也不会有尊重比特币协议的经济激励。能源成本使得伪造区块链是昂贵的,这是比特币安全的基础!其他作者,如[2],则以以下方式来描述自私挖矿:“自私挖矿确实在短期内会减少攻击者的收入,但它确实会大大减少其他人的收入,因此中立节点就有动力加入攻击者的联盟,以增加自己的收入。最终,攻击者的联盟将扩大到50%以上的规模,可能会使攻击者对网络造成很大的控制影响力。”换句话说,根据这种解释,一个损失钱的矿工会被攻击吸引,然后加入到另一个损失钱矿工的队伍当中。而这仅仅是因为攻击者矿工损失的钱更少,所以攻击者能够说服那些诚实矿工!撇开诚实矿工无法确切知道双方盈利能力差异这一事实不谈,这种天真的情景,可以说是令人难以置信的。从这个角度来看,自私挖矿仅仅是作为控制网络的51%攻击的一种预备行为。实际更可能的结果是,诚实矿池会注意到某些矿工在做自私挖矿,他们将采用明显的防御策略,并开始自己的自私挖矿,这会使网络停滞不前。这个结果对于所有人而言都会是不利的。纳什均衡的一种形式正在发挥作用,这避免了上述描述的场景。除了这些创造性的解释之外,文献中的真正缺乏的,是对自私挖矿攻击成本的正确核算和理解,以及适当的时间分析。3.2挖矿成本。为了正确评估自私挖矿盈利能力的关键思路,是将其与诚实挖矿的盈利能力进行对比。我们假设矿工从事挖矿业务,是因为运营成本(设备和能源),是可由新生成的比特币区块奖励+交易费用得到补偿的。因此,如果算力是以满负载运行的,单位时间的挖矿成本与策略是无关的。所以我们就有了CS=CH,其中CS和CH是自私挖矿以及诚实挖矿策略每单位时间的挖矿成本。我们表示C0=CS=CH.请注意,此成本不仅独立于策略,但也表示挖到的区块,会还是不会被网络所接受。3.3收益和损失。我们的目标是评估损益情况(PnL),并对比自私挖矿和诚实挖矿的PnL。损益(PnL)的算法是收入R减去成本C:PnL=R−C.我们采取一种保守,但足够的设置,其中区块奖励被减少到(b>0)新生成的比特币(因此,我们不考虑交易费用)。除非另有说明,我们假设我们没有接近奖励减半,所以奖励b是保持不变的。对于任何业务而言,重要的是每单位时间的PnL,而不是每区块解决或被网络接受的PnL。值得注意的是,每区块或每单位时间的PnL是不相等的,这是由于采用的自私挖矿策略,延迟了网络中区块的验证速度。3.4每单位时间的损益。一种不间断的攻击策略,如自私挖矿,包括了一系列连续的“攻击周期”。在自私挖矿的情况下,它是当自私矿工和诚实矿工都在同一区块链上进行工作时发生的。自私矿工的目标是利用他们秘密挖取的区块链。如果,一开始,诚实矿工找到了新区块,则进入一个新的周期。如果自私矿工成功建立了优势,然后周期会持续至诚实矿工追赶上进度,并强迫自私矿工释放他们秘密挖取到的区块。然后开始新的循环。对于这种具有重复效应的策略游戏,每单位时间的渐进PnL,PnLt∞,是可以进行评估的。而这是下列定理当中的内容。六、阻止自私挖矿的提案6.1.问题的根源。基本上,这种攻击利用了难度调整规则。当前的比特币协议低估了网络中的实际算力,由于其仅考虑了被纳入(官方)区块链的区块。在存在自私矿工的情况下,孤块会不断增长,大量诚实算力会丢失。网络用于验证的平均时间会增加。在2016个区块之后,自动完成的难度调整会无视孤块的生产。尽管网络总算力是保持不变的,但新的难度会低于应有的水平,并且区块验证时间会减少。所以,单位时间的自私挖矿收入会增加,并使得攻击变得有利可图。6.2.一个新的难度调整公式。为了减轻这种攻击,一种想法是在难度调整公式中加入孤块数量的因素。这可通过矿工们来实现,即指示他们挖到的区块中存在“uncle”(通过包含它们的区块头,及对等节点中继这些数据)只要诚实矿工发出信号就足够了。节点就不需要广播整个孤块,而只是广播它们的区块头。这有可能会激励矿工在他们的区块中纳入uncle存在证明(通过一个规则,在两个具有相同高度区块之间竞争的情况下,节点应该始终广播拥有最多工作量证明的区块,即包含最多uncle存在证明的区块)。根据[11],这一规则在诚实矿工与自私矿工发生竞争时,它也是对诚实矿工有利的。在n0=2016区块验证周期结束后,难度调整的新公式将会是其中n’是在这段时间内挖到的孤块总数,而Sn0是网络用于验证n0区块的时间(并使用公式Sn0=Tn0-T1,其中Ti表示区块i区块头的时间戳。)6.3.分析公式.设ω是在τ0=600秒时间段内被观察到的孤块平均数。所以,平均而言,每τ0时间,都会有ω孤块和(1–ω)非孤块。只有最后一个会被添加到官方区块链。网络用于增加区块链的时间为七、结论自私挖矿是一种减慢网络并减少挖矿难度的一种技巧。这种攻击会削弱诚实矿工的盈利能力,而在难度调整之前,这也会对自私矿工本身带来不利影响。而只有在难度调整之后,自私挖矿才会变得有利可图。自私挖矿是针对比特币协议的一种攻击,但很多相关文献中的论点没有正确地证明这种攻击的合理性。他们缺乏对攻击成本和每单位时间的损益进行适当的分析。为了比较不同挖矿策略的盈利能力,我们就需要计算它们的周期平均长度和收入比率,这是本文中提到的新概念。这种攻击利用了难度调整公式的缺陷。用于更新挖矿难度的参数,应该是衡量网络的实际算力。而当前的参数,在存在自私矿工的情况下,是不再适用的。我们提出了一个公式,通过考虑这一点来纠正这种生产孤块的异常现象。我们建议,协议应指定官方区块链包含的是最多工作量证明(带有最多uncle存在证明)的区块。如果这一拟议公式得到采用,虽然它不会消除自私挖矿的可能性,但即使是在发生难度调整的情况下,自私挖矿较诚实挖矿也不会具有优势。因此,这会使得个人激励措施与协议规则保持一致,而这符合比特币最初成立时的意图
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

垂耳兔23 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    5