定量分析双花(双重支付)问题

引自 Analysis of hashrate-based double-spending,Meni Rosenfeld

1.问题描述

假设:

    1.诚实节点和攻击节点的算力总和为常数,p为诚实节点记录下一区块的概率,q为攻击节点记录下一区块的概率。

    2.生成区块的难度(需要用的工作量)是常数,产生一个区块的平均时间是T0。

    3.诚实链的长度为n,攻击节点生成的虚假链的长度为m,两者的差z = n-m.

求解:

    攻击节点生成的虚假链长度超过诚实链长度的概率。

2.定性分析

    上述问题描述了双花(双重支付)的过程,可看成是一个连续时间马尔可夫过程,当 z = -1时攻击者攻击成功。由于我们只关心攻击者成功的概率,并不关心何时攻击成功,因此上述问题等价为一个离散马尔可夫链。

     设为当攻击者生成的虚假链落后诚实链z个区块时,攻击成功的概率。则有如下关系成立:

可推导出:

即:

    当q>p时,攻击者的虚假链无论落后诚实链多少个区块,均可攻击成功,最终生成比诚实链长的链。

    当q<p时,攻击者成功的概率随着落后的区块个数而呈现指数型衰减。

    攻击者成功的概率与落后区块个数有关,跟生成区块的时间长短无关。

    基于这个结论,交易信息的真实性,往往需要等待若干个区块确认被写入最长链后才得到保障。

3.定量分析

下面定量分析。依旧是上述假设:

    1.诚实节点和攻击节点的算力总和为常数,p为诚实节点记录下一区块的概率,q为攻击节点记录下一区块的概率。

    2.生成区块的难度(需要用的工作量)是常数,产生一个区块的平均时间是T0。

    3.诚实链的长度为n,攻击节点生成的虚假链的长度为m,两者的差z = n-m.

    新产生的区块由攻击者产生的概率为q,由诚实节点产生的概率为p。每次产生的区块或者由攻击者生成,或者由诚实节点生成。m个区块由攻击者产生,n个区块由诚实节点产生。这个过程描述了一个N重伯努利试验。

    在总共m+n次试验中,攻击者成功产生新区块个数m是一个随机变量,服从负二项分布,其概率密度函数为:

其中

现在假设攻击者已经新计算出一个区块,即攻击者产生了m+1个区块,则在此情况下攻击者成功进行双花的累积分布函数r为:

观察在确认区块数量为n,攻击者占全网算力比重为q的情况下,双花成功的概率r的曲线。取n=2,4,6,8,10,用Matlab做图如下:

    当攻击者占全网算力小于50%时,更多的区块确认数量可以显著降低攻击者双花成功的概率;当攻击者占全网算力超过50%时,必然导致双花成功,这种现象被称为“51%算力攻击”。在此先讨论q<50%的情况,“51%算力攻击”将在之后讨论。

    由图可以看出:当攻击者算力占全网10%时,2个区块确认可以保证攻击者双花成功的概率小于10%,4个区块确认可以保证攻击者双花成功的概率小于1%,6个区块确认可以保证攻击者双花成功概率小于0.1%。随着确认数的增加,攻击者双花成功的概率呈指数下降。

    通常的比特币区块链中,除了巨额交易之外,一般交易经过6个区块的确认即可保证安全。这需要结合攻击者完成双花所需要的经济成本来说明,下表展示了计算了双花的经济成本后,在攻击者拥有占全网q算力下,进行n次区块确认可以安全交易的最大数量的价值(单位:BTC,比特币)。(引自 Analysis of hashrate-based double-spending,Meni Rosenfeld)。等待更多的区块确认将显著增加攻击者的双花成本。(犯罪成本远远高于收益,在拥有一定理性的情况下不去犯罪)

猜你喜欢

转载自blog.csdn.net/wofreeo/article/details/80657964