十二年前,比特币(BTC)白皮书引入了一种新颖的共识协议,开启了无许可区块链时代。在描述该协议时,中本聪断言只要大多数矿工都是诚实的,该系统就是安全的。为了鼓励诚实的参与,比特币以新铸造的比特币以及交易费的形式提供经济奖励。中本聪认为,这些激励措施将比违反协议更为有利可图。等同于该协议的激励相容性主张,这些主张被广泛采用并成为民间定理,甚至从形式化建模中获得了正当理由。
但是,这些断言被证明是错误的。在与直觉相反的结果中,Eyal和Sirer表明存在另一种策略,称为自私挖矿,其财务动机超过了诚实采矿的动机。自私挖矿涉及保留挖掘的区块并仅在诚实的矿工浪费资源挖掘替代区块之后才释放它们。在调整困难之前,浪费竞争对手的区块不会给自私的矿工(SM,selfifish miner)带来任何好处。
但是,在进行了难度调整之后,自私的矿工可以获得的收益远远超过其公平的区块奖励份额,具体取决于其在网络总算力(α)中的百分比以及诚实矿工在网络分叉期间在SM区块上挖矿的比例(γ)。
违背直觉的是,即使假设没有诚实的矿工在分叉中的自私区块上挖矿,自私的挖矿策略也会为任何拥有超过全球算力的1/3的矿工或矿池返回超额利润(α> 33%)。当α→50%时,自私的矿工将在网络中收集接近100%的奖励,这是其诚实收入的两倍。
自引入以来,自私挖矿的论文就引起了人们对否定主义的崇拜。除去声称比特币协议和池如何工作的模型不准确以外,得出的论点围绕在困难调整问题上面。
首先,批评者断言,自私挖矿是无利可图的,因为花费时间进行分叉只会减少主链的增长速度。因此论点认为,相对收入的增加意义不大,因为每单位时间的利润减少了。其次批评者声称,自私挖矿必须涉及长期的攻击,这种攻击必须持续进行困难调整,才能实现盈利。
在本文中将证明这两种说法都是错误的。举例说明了一个令人惊讶的自私挖矿变体,其中攻击者在调整难度后立即停止自私行动,然而它仍然比诚实的矿工赚得更多。称这种策略为间歇性自私采矿。然后研究了在不同难度调整算法下自私采矿的盈利能力。特别是,量化了Bitcoin Cash,Bitcoin SV,以太坊和门罗币上自私采矿的收益,并显示了每单位时间利润超过诚实采矿的条件。
这项工作描述了一个在工作量证明加密货币中采用自私挖矿的敌手。在本节中,首先描述PoW挖矿过程,然后概述自私的挖矿算法。
A. PoW加密货币中的挖掘
加密货币的核心是允许客户发布由矿工整理并放入区块的交易。在PoW加密货币中,通过使用随机数对块数据进行哈希处理来挖掘这些块,直到所得哈希值低于目标值为止。目标值由硬币的难度调整算法(DAA)确定。
难度描述生成低于此目标值的哈希值有多困难。矿工获得有效哈希后,将广播该区块以接收新铸造的硬币并收取交易费。一旦一个块驻留在最长的链上,就被认为是可接受的。孤块是不在最长链上的块。然后,必须将接受的区块连接在区块链足够长的后缀下,以使交易最终完成。
B.自私的采矿策略
在自私挖矿中,算力为α的自私挖矿者会保留新开采的区块,而不是立即发布它们。结果,诚实的矿工没有意识到这些区块,并且在不知不觉中被迫浪费了可能在链中被替换的算力挖掘区块。这样,自私的矿工比诚实的矿工有可能获得更多的区块奖励。
自私的矿工在三种情况下发布区块。首先,如果SM具有长度为2的私有链,而诚实的矿工发现了下一个区块,则新链的高度差为1。此时,SM会发布其整个私有链以确保分叉获胜。
其次,如果SM的私有链长度大于2,而一个诚实的矿工发现了下一个区块,则SM仅发布一个区块,这是其私有链中最旧的区块,同时将其余的私有链隐藏起来。
第三,如果SM找到了一个区块,而诚实矿工找到了下一个区块,则SM将立即发布其区块。此时,网络处于分支状态。SM将尝试在自己的区块上进行挖掘,而诚实的矿工则选择在诚实还是自私的区块上进行挖掘。在自私区块开采的诚实矿工的比例称为γ。零表示最悲观的γ值;它不能为负。
现在,介绍间歇性的自私挖矿策略。间歇性自私挖矿是对自私挖矿的一种修改,其中,矿工在比特币的每一次难度调整中都在自私挖矿和诚实挖矿之间进行转换。比特币DAA的目标是十分钟的封锁时间,并在主链上每隔2016个块后进行调整。假设攻击者是最坏的情况,并分析中忽略交易费用和采矿成本。
间歇性的自私挖矿包括两个阶段。在第一阶段,间歇性自私挖矿者(ISM)进行自私挖矿。第一阶段的目标是消除诚实矿工的区块,并设置攻击者在攻击后立即从中获利。正如自私采矿的批评者所指出的那样,尽管相对于诚实采矿者而言,这导致赢得的区块数量增加了,但这本身并没有导致自私采矿者的利润增加,没有考虑交易费用。
第一阶段只是延长了主链达到2016个区块所需的时间;它不会增加自私的矿工每分钟产生的块数。实际上,在此阶段,攻击者的利润会略有下降,因为如果诚实的矿工能够在自私的矿工扩展其链之前在诚实的矿块上进行开采,那么在每个等高的叉子处,自私的矿工就有失去其分叉块的风险,但是,当γ<1时,它将迫使网络降低挖掘难度,以弥补较慢的块时间以及它认为较低的哈希率。
在第二阶段,在难度调整之后,ISM切换到诚实挖矿。有了新的较低的难度,诚实采矿的采矿速度比所有矿工都快。尽管在第二阶段中,这种增加的铸币速度使所有矿工平均获利,但在两个阶段中,ISM相对于诚实矿工和按时间单位获利更多。令人惊讶的是,这足以使攻击者获得比诚实矿工更高的优势。
这就推翻了必须发动自私的挖矿攻击并在经过困难调整后保持活跃的说法。即使在进行了难度调整后没有进行任何自私的挖矿活动,攻击者仍然获得了经济利益。此外,这种策略上的改变还降低了诚实社区发现自私挖矿的可能性。ISM可以在多个时期内重复执行此策略,并且比每次迭代中的诚实挖矿更多。
上图显示了在单次迭代期间进行间歇性自私挖矿的示例。该示例涉及一个具有约30%哈希功率的ISM。在图中,按字母顺序挖掘块。白色方块代表非ISM,诚实方块和黑色方块代表ISM开采的方块。自私挖矿仅在第一阶段进行。ISM开采B区块,保留该区块,然后将其发布以与诚实区块C竞争。
诚实矿工开采D区块的速度比在B后开采任何区块的速度都要快,因此B被孤立。后来,ISM通过保留其F,G和H区块的私有链,直到最后一次可能的胜利来成功淘汰I和J区块。
一旦达到难度调整,自私挖矿将导致较低的难度,以弥补公共链的缓慢。进行此调整后,在第二阶段,ISM会诚实地进行挖掘。尽管它以预期的速度赢得了区块,但较低的难度导致每个时间单位有更多的区块。
间歇性自私挖矿消除了对自私挖矿获利能力的误解。人们经常认为自私挖矿是不切实际的,因为错误地声称必须将攻击维持几个困难时期才能使攻击者获得利润。该论点的症结在于,由于自私的矿工由于其孤块率提高而在第一个困难周期内每单位时间赚取的收入较少,因此它必须在另外几个困难周期内维持攻击以进行补偿。
Grunspan&Perez-Marco正式采用了这种基于时间的收益模型进行自私挖矿,并计算出攻击者具有10%的网络哈希率且γ参数为0.9,必须将攻击维持约10周。他们的计算是不正确的,因为他们没有考虑到攻击者在攻击后的困难时期所获得的利润。当自私的采矿结束时,他们的收入计算过早地结束了一个困难周期。发起攻击会导致在第一个困难周期内单位时间收益减少,但是这应该被认为是投资而不是损失:攻击者在攻击结束时会获得回报。
可以很容易地证明,即使仅在一个2016个块的困难周期内进行攻击,然后切换到诚实采矿,上一个示例中的自私的矿工(α= 10%,γ= 0.9)也会获得利润。就像一个间歇性的自私矿工一样。ISM在第一阶段的存在将诚实矿工的孤块率提高到8.61%,将其自身的孤块率提高到6.74%。可以使用等式:
来计算预期的非孤区块获胜率,其中i和h分别是ISM和诚实区块率,n是完成困难期所需的块数。可以预期的是,ISM将赢得205个区块,比使用诚实采矿的赢利多3个区块,诚实矿工将赢得1811个区块。难度调整之前的预期时间从14天延长至15.29天。尽管ISM的收入超过了其公平的区块奖励份额,但在第一阶段,每天的收入却从14.40区块/天下降到了13.43区块/天。接下来的困难周期弥补了这一暂时的下降。
为了弥补最后一组2016个区块花费15.29天而不是14天这一事实,比特币网络向下调整了难度参数,从而使下一个2016个区块变得更快。此时,间歇性自私的矿工将在第二阶段诚实地进行采矿,从而将网络孤块率降低到正常水平。由于难度较低,接下来的2016个区块预计需要12.82天。尽管现在正在诚实地进行开采的间歇性自私矿工的预期收入仅为202个区块,但在第二阶段,其每天的预期收入增加到了15.72个区块/天。
在这两个阶段,相当于两个困难周期,在15.29+12.82=28.11天的时间里,中间自私的矿工在预期205+202=407个区块中获胜,平均收益率为14.47个区块/天。由于其每单位时间的预期收入要比诚实地进行开采时要高(每天14.40个区块),因此间歇性自私挖掘对于攻击持续时间明显短于70天是有利的。
A.间歇性自私采矿评估
使用蒙特卡洛模拟检查间歇性自私挖矿策略,以生成8064个块链(不包括孤立块),相当于两个间歇性自私迭代。在每个模拟的秒,每个矿工都有一个随机的机会找到一个区块,将其设置为矿工的哈希率除以最近区块的难度。
设计实验以回答以下问题:
(1)间歇性的自私采矿如何影响难度?
(2)ISM的区块获胜率(区块/分钟)是多少?在间歇性自私采矿的每个阶段中,其波动如何?
(3)在存在ISM的情况下,总体链增长速度(即每分钟添加到最长链上的块数)是否发生变化?
为了回答这些问题分析了难度,区块获胜率和链增长率,因为每个区块是在给定的运行中在各种α和γ水平下生成的。将参数的每种组合模拟100次,然后计算数据点的平均值和标准偏差。
B.结果
首先,上图显示了γ= 0的ISM如何在两个周期内影响难度。只显示了α= 10%,33%和49%的数据,在原始的自私挖矿论文中,这是分别导致亏损,收支平衡和获利的少数比率。随着α的增加,达到两次迭代结束所需的块数增加。
另外,当α= 49%时,ISM的影响更为明显。第一阶段的自私采矿需要将2016个区块几乎增加一倍,才能进行难度调整。一旦难度降低,第二阶段就进行了约2016个区块的诚实采矿,然后该阶段结束。
接下来,上图显示了三个γ级别(0、0.5和1)的间歇性自私采矿者的获胜率。与原始的自私采矿策略相比,间歇性自私采矿的潜在回报更为适中。但是,根据γ值,ISM的预期利润超过某些哈希率以上的诚实采矿的利润。即使在最保守的估计中,当γ= 0时,如果其哈希率高于37%,ISM也会获利。当α达到50%时,每个γ级别的获胜率收敛在0.06左右,超过了其预期的0.05获胜率。
ISM对应的累积成功率(块/分钟)如上图所示。由于ISM替代策略的方式,胜率在各个阶段之间波动。在第一阶段(其中包括针对α= 49%的时间步长0到大约4000),自私采矿的获胜率约为0.047,低于预期的0.049获胜率。在第二阶段,在下一个相移之前,获胜率在其峰值处增加到大约0.057。
当然,难度调整又回到较高的水平,再加上恢复自私的挖矿,将累积的区块获胜率提高到0.053。获胜率将继续波动,但将收敛到大约0.0568。上图显示,与诚实采矿相比,矿工只需在一个困难时期内进行一次间歇性的自私采矿,即可立即赢得每分钟更多的区块。
最后,上图显示了存在ISM时的链增长速率。在BTC中,预期的链增长速度为0.1个块/分钟。最初,人们可能会预测,间歇性的自私采矿会通过使用困难来提高通货膨胀率并因此增加比特币的供应,从而导致通缩。但是,该图表明,提高ISM的α速率会降低链增长速率。
令人惊讶的是,间歇性的自私开采降低了铸币造币速度。每个慢的第一阶段都比快速的第二阶段大,尽管这给ISM带来了收益,但作为意外的副作用却导致总体链增长速度降低。
本文引入了间歇性自私挖矿,并研究了几种在进行自私挖矿时的难度调整算法。通过间歇性的自私挖矿,表明在比特币DAA下进行自私挖矿就可以获利,而无需将攻击扩展到难度调整之上。
在下一篇文章中,将介绍研究了在流行的加密货币中使用的几种困难调整算法(DAA)下自私挖矿的盈利能力。提出一个流行的难度调整算法分类,量化了算法选择对哈希波动的影响,并展示了不同的DAA家族对自私挖矿的抵抗力。
- 结尾 - 精彩推荐 【技术分享】针对CMS的网络攻击中的快照回滚研究(三) 【技术分享】针对CMS的网络攻击中的快照回滚研究(二) 【技术分享】针对CMS的网络攻击中的快照回滚研究(一) 戳“阅读原文”查看更多内容 原文始发于微信公众号(安全客):【技术分享】针对自私挖矿的重新审查(上)