主页 > imtoken知乎 > 比特币有漏洞,我带你去攻击

比特币有漏洞,我带你去攻击

imtoken知乎 2023-07-06 05:11:25

对于所有支付系统,都有一种称为双花攻击的攻击。所谓双花攻击,就是一个资金被多次花费。攻击者先转账资金,获得收益后,通过攻击撤销转账,资金退回攻击者账户。那么我们可以双花比特币并从中获利吗?答案是肯定的!让我带你了解一下对比特币系统的攻击。<​​/p>

比特币系统的转账原理

在发起攻击之前,我们需要了解比特币的转移原理。这是我们攻击的准备知识。

比特币到底是什么原理

在比特币系统中,用户要发起转账,首先要组装转账信息,就像填写银行支票一样,写上付款人账户,收款人账户,转账金额,然后使用加密技术对转账信息进行签名,我们将这个签名的转账请求称为交易。交易被比特币系统处理后,付款人账户会扣除指定金额,收款人账户会增加指定金额。

用户的交易将被发送到比特币系统中的节点。节点收到交易后,会被放入一个新的区块中,然后对该区块进行哈希处理,也就是之前文章中提到的计算数学题。哪个节点首先计算出这个区块的数学问题的答案比特币到底是什么原理,将获得打包该区块的权利。这个节点打包到区块中的交易相当于一个交易,然后所有的节点都会以新的区块为基础。开始下一个块的数学问题。

了解了比特币的转账原理,我们来看看比特币的漏洞在哪里!

比特币到底是什么原理

系统漏洞:最长链原理

刚才我们说了,谁先计算出答案谁负责打包这个区块,那么如果有两个节点同时对同一个区块做出答案呢?为了解决这个问题,比特币系统设计了一种特殊的机制,称为最长链原理。

现在假设有两个节点 A 和 B 同时计算了块 N 的答案,那么他们将同时广播他们的答案。节点首先会收到A的答案,经过验证后发现A的结果是正确的,然后在A的基础上继续计算区块N+1的答案。靠近节点 B 将首先收到 B 的答案。答案,经过验证发现B的结果也是正确的,然后会在B的基础上继续计算区块N+1的答案。此时区块链有两条尾巴,即区块A打包的区域和B打包的区块,我们称这种情况为区块链分叉。但是由于块答案的计算量很大,下一个块几乎不会同时计算。此时,如果N+1区块的答案是基于A计算的,那么A的分叉会更长,而以B为基础计算N+1区块的答案的节点会停止回答,相反,在新块的基础上开始计算块 N+2 的答案。此时所有节点回到A的分叉处继续向下计算,B之前计算的块N被丢弃。

从上面的描述中,我们可以看出比特币的链可能是分叉的。分叉后,以最长的链条为准。该块被丢弃。这不是给我们带来了攻击比特币系统的可能吗!

比特币到底是什么原理

对比特币的攻击

你可能想过,既然比特币系统只识别最长的链,我们能不能这样对比特币进行双花攻击:

首先发起一个普通的比特币转账交易,用来和对方交换其他东西。交易打包在N区块之后,对方收到你的转账,然后给你东西。得到你想要的东西后,你开始购买节点创建一个新的区块N,并删除你之前发送的转账交易。此时,你成功分叉了比特币。由于比特币系统只识别最长的链,所以你购买节点继续在你的分叉上工作,直到你分叉的区块长度超过正常区块的长度,那么系统中的所有节点都会在你的分叉上。继续在前叉上工作。包含您的转账的块 N 以及最多 N+n 的后续块被您的新分叉丢弃。你的分叉成为主链,这条链上没有你的转账记录。

比特币到底是什么原理

此时,你之前转出的比特币还在你的账户里,你得到了你想要的,所以你的攻击成功了。

比特币中的博弈论

对比特币的攻击真的那么简单吗?答案当然是否定的!虽然我们说可以通过上述方式攻击比特币,但攻击是要付出代价的。

首先,无论是在主链上工作还是自己创建分叉,出块答案的计算难度都是一样的,所以还是需要计算10分钟左右才能出块。元。其次,问题的计算是随机的,只与节点的计算能力有关。算力越强,先算出答案的概率就越大,而且只是概率。

比特币到底是什么原理

所以,如果你想创建一个超过主链区块长度的新分叉比特币到底是什么原理,那么你需要加载比主链上所有节点加起来的计算速度更快的速度。要达到这样的效果,唯一的办法就是你必须购买比特币系统中超过51%的节点算力,这就是比特币51%攻击的原理。

攻击比特币系统并非不可能,但付出的代价可能远超作恶所得。在比特币系统中,节点越多,算力越强,攻击比特币系统的成本就越高,比特币系统就越安全。比特币越安全,它的价值就越高,也会吸引更多的节点来争夺比特币奖励。更多的节点进一步促进了系统的安全性,这是一个正循环。

51%攻击意味着如果你掌握了比特币系统中一半以上的算力,那么你就有能力篡改比特币数据,对比特币系统发起攻击。

后记

51% 攻击不仅针对比特币,所有使用工作量证明共识算法的区块链都面临这个问题。对于成熟的比特币系统来说,攻击比特币确实不划算,而且随着系统中的节点越来越多,攻击比特币几乎是不可能的。但是,对于一些新的链来说,刚起步的时候节点和算力并不多。这种攻击确实是真实有效的,而且这种攻击时有发生。