主页 > imtokenapp专业版下载 > 什么是比特币 51% 攻击? 你如何在比特币中获得 6 个确认?

什么是比特币 51% 攻击? 你如何在比特币中获得 6 个确认?

imtokenapp专业版下载 2023-09-30 05:10:23

1. 51%攻击

51%攻击是指拥有全网一半以上算力的人可以对抗全网其他算力,改变区块链记录。 最根本的原因是比特币区块链采用最长链原则,即当前最长的链被认为是主链,是正确的链。 51%到底能做什么?

1、假设51%的算力仍然遵循比特币的规则

这时候还是需要签名才能进行转账交易等。 那么51%攻击中,你不能修改别人账户下的金额比特币算力分布,你也不能从别人账户里转账到自己账户里。 只能对自己的账户进行操作,比如双收。 (双花可以通过两种方式完成:要么在交易确认之前,要么攻击者通过区块链分叉完成),防止其他交易被确认。

比特币矿池算力排名_莱特币算力分布_比特币算力分布

2.假设51%的算力不遵循比特币的规则

此时51%的算力可以修改区块链规则。 比如放弃非对称加密的签名机制比特币算力分布,转账可以不用签名,51%的算力可以把其他账户下的金额转到自己名下。 因为他拥有一半以上的算力,所有的规则都可以在没有其他算力参与的情况下进行修改(因为从长远来看,他总能胜过其他算力)。

2. 6个确认号码

莱特币算力分布_比特币矿池算力排名_比特币算力分布

为什么掌握51%的算力就能摧毁比特币网络? 直觉上,确实是这样。 将攻击节点的算力和诚实节点的算力看成两个人,挖矿行为就像一场赛跑。 当然,最快的人会赢得比赛。 事实上,中本聪在论文中做了数学分析。 此外,建议等待 6 次确认后,资金才被认为可以安全地进行比特币转账,这在他的论文中也有解释。

首先,所有的推导都有一个前提,即随着时间的推移,区块的生成速度大致恒定,即每间隔T0(10分钟)只生成一个区块。

假设当前网络算力为H,诚实节点算力为pH,攻击节点算力为qH,p + q = 1。因为算力本身是指在每个固定时间内可以计算Hash的次数interval,在比特币中,每10分钟出一个块,我们可以把10分钟作为一个最小的时间间隔,那么诚实节点算力和攻击节点算力就是:每10分钟发起一次算力竞赛。 在这10分钟内,诚实节点可以计算k * p次,而攻击节点可以计算k * q次(k只是一个系数,不重要,重要的是比例),可以看出前提:平均来说,诚实节点和攻击节点都没有挖出区块(如果某10分钟存在这种情况,那么接下来的10分钟会降低挖矿难度),也没有诚实节点和攻击节点都挖出区块挖出区块(如果某10分钟出现这种情况,那么接下来的10分钟挖矿难度会增加)。 所以可以认为:诚实节点有概率p挖出一个块(此时攻击节点还没有挖出块),攻击节点有概率q挖出一个块(此时这一次,诚实节点还没有挖到区块)! 即使诚实节点和攻击节点分别在两条分叉链上独立挖矿,整个区块链网络也符合这个速度的特点,这是理解下面公式的关键。

比特币算力分布_莱特币算力分布_比特币矿池算力排名

关于一笔交易收到多少次确认后资金才安全的问题,在中本聪的论文中,这个问题分为两步(假设是n次确认后):

1)n表示交易完成后,诚实节点已经挖出n个区块,即诚实节点已经确认了n次交易,因为攻击节点的目的是破坏交易,不会浪费自己的任何一个自己的计算能力对此交易进行任何确认。 此时,攻击节点挖出了多少区块? (可以理解为交易完成后,攻击节点秘密分叉区块链,并没有将分叉后的工作放到区块上,而是一直在自己的链上独立挖矿,等到时机成熟的时候,我会公开我的工作)

2)假设此时攻击节点挖出了m个区块,攻击节点与诚实节点之间的差距为z=n-m,攻击节点弥补这个差距的可能性有多大,赶上诚实节点?

莱特币算力分布_比特币算力分布_比特币矿池算力排名

我们先来看第一个问题。 从固定的时间间隔来看,中本聪认为在诚实节点T0挖到一个区块的概率是p,所以平均来说,T0/p的时间间隔肯定能挖出一个块,那么诚实节点挖出 n 个区块,总共消耗 To * n / p 的时间间隔。 攻击节点T0挖出一个块的概率为q,则在T0*n/p的时间间隔内,平均下来肯定能挖出q*n/p个块,T0*n的每个时间间隔/p ,挖出的方块数量差不多。 以T0 * n / p为单位时间间隔,那么要解决的问题就是:单位时间内随机事件发生次数的概率分布。 泊松分布是描述这种概率的工具。 另请参阅:维基百科 - 泊松分布。 λ表示单位时间间隔内出现的次数,即q * n / p。

Analysis of hashrate based double-spending paper认为不应该从固定时间间隔的角度来估计,中本聪的计算只是一个简化的模型。 论文认为,从区块数出发相当于:攻击节点在经历了至少n次失败(诚实节点已经挖出n个区块)后能够挖出的区块数,负二项分布为工具来描述这个问题。 另请参阅:维基百科 - 负二项分布。 这个概率公式很简单,不做解释,请参考论文。 论文最终得到的概率值与中本聪模型的概率值大致相同,仅略有差异。

接下来看第二个问题。 这里再说一下推导的前提,即随着时间的推移,区块以大致恒定的速度产生,即每间隔T0(10分钟)只产生一个区块。 弄清楚这个前提后,我们可以发现,诚实节点和攻击节点是互斥的,每 10 分钟只有其中一个能发现一个区块,即使它们可能在两个分叉上。 那么这个问题,正如中本聪在论文中所说,可以等同于赌徒破产问题,参见:维基百科-赌徒破产问题或赌徒破产问题。里面的递归公式

莱特币算力分布_比特币算力分布_比特币矿池算力排名

Pa= pPa+1+q Pa-1,a=1,2,…,N-1

也就是说,假设一开始有a个金币,如果你得到一个金币的概率为p,相当于一开始有a+1个金币,如果你失去一个金币的概率为q ,相当于最初只有a-1金币。 应用到比特币上,可以从诚实节点的角度来理解,最初诚实节点有z个金币,怎么赌输掉所有z个金币或者财富不断增加。 详情请参考中本聪的论文。

下面列出了基于算力的双花分析,在不同的攻击节点q概率和等待确认数n下,攻击节点追上的概率(因为论文提出的模型和中本聪提出的模型)结果相差不大,提供的数据也比较完整,所以用这个表)

比特币算力分布_比特币矿池算力排名_莱特币算力分布

你是怎么得到这6个确认码的? 假设攻击节点的算力在10%左右,攻击成功的概率小于0.1%。 从上表可以看出是6。