区块链双花攻击 区块链双花的解决办法

发布时间:2025-12-17 16:56:02 浏览:4 分类:比特币资讯
大小:509.7 MB 版本:v6.141.0
欧易官网正版APP,返佣推荐码:61662149

一、‘双花’攻击

什么是双花?

“双花”,即一笔钱被花了两次或者两次以上,也叫“双重支付”。通俗的理解,“双花攻击”(double spend attack)又叫“双重消费攻击”,即同一笔资金,通过某种方式被花费了两次,取得了超过该笔资金的服务。

在数字货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况。

双花是如何发生的?

众所周知,区块链节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。等到下一个工作量证明被发现,其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营。

双花简单说就是花两次。双花是如何实现的呢?分为两种情况:

(1)在确认前的双花。零确认的交易本来就可能最后没有写入区块链。除非小额,最好至少等确认即可规避此类双花。

(2)在确认后的双花。这就要控制超50%算力才能实施。即类似于一个小分叉,将给一个商店的交易放入孤立区块中。这种确认后双花,很难实施,只是理论上可行。

双花攻击案例

2018年曾经发生了比特币黄金(BTG)的双花攻击。BTG当时是全球第27大加密货币,流通市值为50亿人民币。2018年5月16日以来,攻击者对BTG网络成功实施了双花攻击,谋取了超过38.8万的BTG的暴利。

攻击者控制BTG网络上51%以上的算力,控制算力期间,把一定数量的BTG发给自己在交易所的钱包,这条分支我们命名为分支A。同时,又把这些BTG发给另一个自己控制的钱包,这条分支我们命名为分支B。分支A上的交易被确认后,攻击者立马卖掉BTG,拿到现金。随后,攻击者在分支B上进行挖矿,由于其控制了51%以上的算力,很快分支B的长度就超过了分支A的长度,分支B就会成为主链,分支A上的交易就会被回滚恢复到上一次的状态。攻击者之前换成现金的那些BTG又回到了自己手里,这些BTG就是交易所的损失。这样,攻击者就凭借50%以上的算力控制,实现了同一笔加密货币的“双花”。

二、什么是双花攻击

双花攻击是指在区块链系统中,一个用户试图将同一笔资金同时花费在两个不同的交易上,导致这笔资金被重复使用的情况。以下是关于双花攻击的详细解释:

定义与背景:在传统的中心化货币交易和支付系统中,交易一旦完成,资金就不能被重复使用,因此很少遇到双花问题。然而,在区块链技术中,特别是使用工作量证明机制的系统中,双花攻击成为了可能。

工作原理:假设用户拥有一定数量的加密货币,并发起了一笔交易。在交易被最终确认之前,用户可以在自己的区块链记录中再发起一笔相同的交易,试图重复使用这笔资金。如果用户掌握了超过51%的网络算力,那么他们有可能在交易被最终确认之前,将第二笔交易广播出去,导致第一笔交易被视为无效,从而实现双花攻击。

实现难度:虽然在理论上,双花攻击通过51%攻击可以实现,但在实际操作中要达到51%的网络算力是非常困难的。因此,双花攻击的成功率相对较低。然而,随着加密货币的广泛应用,对网络安全和防攻击技术的持续改进显得尤为重要。

综上所述,双花攻击是区块链系统中一种潜在的安全威胁,需要采取有效的措施来防范和应对。

三、入门科普:什么是双花

入门科普:什么是双花?

01“双花”是什么?

双重支付,通常称为“双花”,指的是一种攻击手段,攻击者试图在一次交易中将同一笔数字货币用于两个不同的目的。这相当于在传统货币系统中,一个人试图用同一张钞票同时购买两件商品。

02双花问题是如何发生的?

双花问题可能发生在区块链系统中,尤其是在共识机制导致交易确认时间较长的情况下。攻击者可以利用这个时间差,尝试进行两次交易。另一种情况是,攻击者通过控制网络算力,创建一个更长的区块链,从而使之前的交易链变得无效,进而实现双花。

03比特币如何避免双花问题?

比特币作为一种去中心化的数字货币,采用了多种技术手段来防止双花问题的发生。每笔交易都需要验证之前的交易记录,确保UTXO(未花费的交易输出)的有效性。如果两笔交易同时发生,节点会选择先接收的那笔交易进行确认。此外,比特币网络会在发生分叉时,选择最长链上的交易进行确认,确保交易的最终一致性。一旦一笔交易被6个区块确认,它就得到了网络的最终认可。

四、区块链鼻祖比特币之8:分叉带来的双花支付、51%攻击与解决办法

分叉

前面讲到了比特币通过区块链+工作量证明的独特设计来解决了时间顺序,但是不能保证在同一时刻有两个节点算出了正确的解,虽然这种可能性很低很低。这就带来了区块的分叉。

虽然说几乎同时有两个节点计算出这一数学问题的可能性微乎其微,但是仍然存在这样的可能性,所以分叉就以为着同一个区块的后面可能会跟上两个不同的区块。

规则的打破一直要到下一个区块被人解开。则会立即转向最长的区块,而那些短的区块则会被抛弃。数学问题使得区块很难被同时拆解。要连续发生多次更是困难。最终区块链会稳定下来。也就是说所有人对最后几个区块顺序达成共识。分叉意味着,譬如,若你的交易出现在较短的支链,它就会失去进入区块链的位置。一般而言,只代表他会回到未确认交易池。然后被纳入到下一个区块。

比特币网络如何解决分叉带来的双花支付

可惜,交易失去区块位置的潜在可能,给了本来定序系统防范的重复支付攻击机会。考虑下面的一个攻击者A,其首先用自己的比特币交换B节点的货物,其立即又支付给自己。然后其通过努力的制造更长的链条来让自己的支付替代掉B节点的支付,从而实现了双重支付,B节点既得不到钱,还失去了货物。

这时交易会退回到未确认池中,因为A节点已经利用参照同样的input交易取而代之。节点就会认为Bob的交易无效。因为已使用掉。

你可能会猜测A节点会预先的计算出一支区块链,然后抓住时机发布到网络。但是每个区块的数学谜题阻挡了这个可能性。如前面所诉,解开区块是猜测出一个随机数的过程。一旦得出答案,解出的哈希值就会成为指纹一样的区块识别。只要区块内容有一丁点变化,下一个区块的参考值就会完全不同。此机制的结果就是无法在区块链中置换区块。在得到前一个区块之前,下位区块无法被解开。前一个区块的指纹也是杂凑函数的引数之一。

同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。如果决定大多数的方式是基于IP地址的,一IP地址一票,那么如果有人拥有分配大量IP地址的权力,则该机制就被破坏了。而工作量证明机制的本质则是一CPU一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。我们将证明,设想一个较慢的攻击者试图赶上随后的区块,那么其成功概率将呈指数化递减。另一个问题是,硬件的运算速度在高速增长,而节点参与网络的程度则会有所起伏。为了解决这个问题,工作量证明的难度(the proof-of-work difficulty)将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一个预定的平均数。如果区块生成的速度过快,那么难度就会提高。

如果有一台超级电脑,能够在区块解题中获胜?

即便是一台超级电脑,或者时几百上千台电脑也很难赢得解一个区块的胜利,因为竞争对手不是任一台电脑,而是整个比特币网络。你可以用买彩票来比拟。操作千百台电脑,如同买了千百张彩票一样。

51%攻击是指的什么

根据前面的例子,我们知道,要想有50%的概率领先其他人解题得到胜利,就需要掌握全网50%以上的算力。要连续领先他人解出区块,掌握的运算能力还需要高得多。所以区块链中的交易是受到数学竞赛所保护。恶意用户必须和整个网络较量。区块连接建立的结果,使得在支链越前方的交易越安全。恶意的用户必须在更长的时间赢过全网络,来达成重复支付,替换前面的区块链。所以,系统只有支端末尾易受到重复支付攻击。这也是为什么系统建议多等几个区块,才能确认收款成功。

个人博客: