当前位置:   article > 正文

双花攻击及其技术细节——哈尔滨工程大学计算机学院2024年区块链技术课程

双花攻击

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

声明:本文为哈尔滨工程大学计算机学院2024年区块链技术课程研讨部分

作者 —— Suzuya(学号2021065413)


前言

Satoshi Nakamoto于2008年发布的《比特币白皮书》,随后在2009年1月3日,Satoshi Nakamoto开采了比特币区块链的第一个区块——Genesis Block。加密货币逐渐进入公众视野,成为金融科技领域的重要创新。截止2024年6月8日,加密货币行业总市值已经达到了2.55万亿美元。

图1 加密货币总市值变化

但在加密货币发展的历程中,双花攻击(Double-Spending Attack)一直是一个核心技术挑战。对于不同的加密货币,防范双花攻击也采取了不同的策略。


一、双花问题简介

双花,即双重支付,指的是在数字货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,简单来说,同样一笔数字资产被重复支付,即同样一笔钱被花掉两次或多次。

在传统的物理现金支付方式中,由于现金的物理属性,在我们将其支付给另一个人之后,不可能二次支付给其他人,所以传统的物理现金支付方式具有天然的防止双花的功能。

对于中心化的数字货币,如由中央银行发行的数字货币,可以通过对于每个数字赋予编号,并记录该编号货币所属的持有者,在支付过程中中央银行对持有者进行更改,从而避免了双花攻击。所以中心化的数字货币,其防范双花攻击是通过发行机构的技术手段与信誉背书。

但对于去中心化的加密货币,以上两种方案显然不适合。

图2 双花过程

二、加密货币防范双花攻击

比特币中,每笔交易都包含了输入和输出两部分,输入部分要包含币的来源,输出部分要包含收款人的公钥哈希。基于此,我们可以追溯每一笔交易中币的来源,从而防止双花。

但存在一种情况,如此时我们的区块链如图所示:

存在某个矿工,在获得了记账权(矿工获得记账权的方式讲解请见本文最后部分)后,发布了另一个区块:

如果一个用户甲在区块A中将比特币转给一个用户乙,其在区块B中可以将上一笔交易支付的比特币重新转给另一个用户丙(追溯源头时,只追溯A区块之前的区块,所以该交易会被判定合法),此时也可以实现双花攻击,这种双花攻击也被称为分叉攻击(forking attack)。此时会根据最长合法链原则,会选择最长链作为最终的区块链,而较短的链会被丢弃。

区块链在正常情况下,也会出现分叉,如两个节点同时获得记账权(矿工获得记账权的方式讲解请见本文最后部分)。

此时根据最长合法链原则,抢先拓展出下一个区块的子链,将成为合法链。但是,这就引发了一个问题,很可能存在恶意矿工通过较强的算力,抢先一步挖出下一个区块,但比特币的首要目的是要让合法的交易都被写入区块,而不是比拼算力。

防范这种攻击,我们可以多等几个区块的方式,通常建议在交易被确认6次后(即6个区块之后),交易就被认为是不可逆的。平均每个区块出块时间为十分钟(对于比特币如何长期保持十分钟的出块时间,可见本文最后),则在一个小时后,可认为该区块是不可篡改的。

还存在一种情况,当一个矿工掌握了全球51%的算力后,可以发动51%攻击,使得其链的生长速度快于另一条链,实现将另外一条链的淘汰。但51%攻击并不是万能的,51%攻击可以实现双花(将自己之前的交易回滚),或是封锁交易(当发布一个包含某个账户交易的区块时,立刻发布一个不包含该交易的区块,实现对于该账户的封锁);但是51%攻击无法实现将别人账户的比特币转到自己的账户,这是因为发布交易需要该账户的私钥,而攻击方并不知道对方的私钥,无法伪造签名,所以无法盗币。

三、对于细节的解释

1. 如何获得记账权:

获得记账权的过程就是我们常说的的挖矿,本质是去寻找一个nonce,中文翻译叫做随机数,将这个nonce与区块块头其他信息结合,进行哈希计算,得到的哈希值要小于某个给定的阈值target。公式如下:

即哈希值落在某个target-space。我们的目标就是找到一个nonce,使计算所得到的值落在这个空间内。所以挖矿的过程本质是寻找nonce的过程。当矿工的算力越强,其找到nonce的可能性也就越大。

2.比特币如何在全球算力提升的情况下,保持其挖矿时间

从上面的公式我们可以看出,当target越小,说明target-space越小,取得nonce的可能性越小,挖矿的难度越大。

同时,通过难度调整公式:

使得当实际挖矿时间actualtime小于目标时间expectedtime时,减小target,实现了挖矿难度difficult的增大,进而实现了挖矿时间不随总算力Total Hashrate的提高而就降低,从而保证了该过程可以作为工作量证明。但也导致了比特币挖矿过程属于算力密集型。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/784255
推荐阅读
相关标签
  

闽ICP备14008679号