数字货币 区块链 双花攻击 Double Spend Attack 简介

前段时间,比特黄金BTG遭受双花攻击,一名恶意矿工临时控制了BTG区块链,在向交易所充值后迅速提币,再逆转区块,成功实施双花攻击。

比特黄金BTG创始人廖翔回应说:“已与各交易所紧密合作,通过暂时确认次数到20次以上,已经让攻击失效,并且正在收集证据向FBI(美国联邦调查局)报案。”然而,此次攻击,攻击者可能从交易所窃取超过388200个BTG,价值高达1860万美元。

然而什么叫双花攻击呢?通俗的讲,“双花攻击”(double spend attack)又叫“双重消费攻击”。就是一笔资金,攻击者通过不停发起和撤销交易,将一定数额的代币反复在账号之间转账实现获利。

能完成双花攻击的有五种方式:51%攻击(Majority attack)芬妮攻击(Finney attack)、种族攻击(Race attack)、Vector76攻击、替代历史攻击(Alternative history attack),比特黄金就遭受了51%攻击实现双花,下面就详细介绍51%攻击的原理。

对于双花问题,区块链网络是这么应对的:

1.每笔交易都需要先确认对应比特币之前的状态,如果它之前已经被标记为花掉,那么新的交易会被拒绝。

2.如果先发起一笔交易,在它被确认前,也就是这个时间段的交易还未被记账成区块block时,进行矛盾的第二笔交易,那么在记账时,这些交易会被拒绝。

如果诈骗者刻意把第一笔交易向一半网络进行广播,把第二笔交易向另一半网络广播,然后两边正好有两个矿工几乎同时取得记账权,把各自记的block发布给大家的话(这个概率很低),网络是不是会混乱呢。

区块链的规则是这样的:先选择任意一个账本都可以,这时候原来统一的账本出现了分叉:

但是在两个账本中各只有一笔交易,诈骗者不会有好处。接下来,下一个矿工选择在A基础上继续记账的话,A分支就会比B分支更长,根据区块链的规则,最长的分支会被认可,短的分支会被放弃,账本还是会回归为一个,交易也只有一笔有效:

那么这个诈骗犯会这么做:如果是A分支被认可(B也一样),相应交易确认,拿到商品之后,立刻自己变身矿工,争取到连续两次记账权,然后在B分支上连加两个block:

于是B分支成为认可的分支,A被舍弃,A分支中的交易不再成立,但他已经拿到商品,诈骗成功。

在B分支落后的情况下要强行让它超过A分支,其实是挺难的,假设诈骗者掌握了全网1%的计算能力,那么他争取到记账权的概率就是1%,两次就是10的负4次方。但这个概率还没有太低。

如果诈骗者算力占据绝对优势,那么,即使落后很多,他追上也只是时间问题,这就是比特币的“51%攻击”,也就能实现双花攻击了。

区块链网络是一个分布式系统,没有一个绝对的控制中心能够监控整个系统,自然很难发现哪个节点可能会控制超过51%算力。而当某个节点掌控超过51%算力,并且对区块链网络系统进行双花攻击时,人们能够做的仅是让合作的交易所暂时提升交易确认次数。但这并不能从根本上阻止攻击者,只不过提升了其攻击成本。

这次BTG攻击是第一个成功的51%攻击。凸显去中心化矿工对生态的重要性。只有从技术上杜绝作恶的可能性,才可能彻底打击犯罪。


 

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...