双花攻击是一个最为常见,并且能够威胁系统运转的攻击。比如,之前比特币黄金曾遭受此攻击,大约有388000左右的BTG被双花。公众号关注:博森科技小蝶。
那么,我们该如何理解这个双花攻击呢?举个简单例子来讲,比特币在进行转账交易的时候,用户与商户之间建立了连接,将钱转给了商户,在进行转账的这个过程中,钱仍然归属用户,利用这段时间,这钱是不是可以转账给其他人?
一、如何正确看待双花?
圈内人最喜欢这种有话题感的内容,“双花”的出现,让一些人找到了数字资产交易的漏洞,开始想着心思如何利用漏洞?还有一部分人想看看存有漏洞的系统,是否还能安全进行数字资产交易?
所谓的“双花”攻击,其实就是指将用户所持有的数字资产中的余额,进行多次的交易行为。
它在数字资产交易过程中是如何做到的呢?
假设第一条交易已经生成,攻击者在交易成功前,再次生成一个新的区块,让新的区块比交易的那个区块速度更快,这样就能获得两次的交易过程,等同于这份交易中的数字资产被合理运用了两次。
我们去追寻导致这个问题所发生的原因,才发现,在区块链系统中,最长的那条链就是最有效的链。
在我们现实生活中就不会出现这种情况,这还是与数字资产的虚拟性相关的,毕竟每一次交易过程,都是生成一串特定的字符。而在数字资产交易过程中,用户所支付的数字资产从转账开始到确认成功,还需要一段时间来进行确认,这才让攻击者有机可乘。
这也是“去中心化”系统所带来的一系列问题。
二、如何解决双花问题?
双花问题最需要解决的问题,其实就是时间的问题。如何在用户发起交易的过程中,去记录第一笔交易的时间和攻击者发出交易的时间,来选择最长链,这是解决该问题的关键。
在区块链系统中,我们会经常听到一个词——时间戳。我们就以它为代表,举例说明如何解决双花问题?
首先,我们要了解时间戳的概念。用最简单的方式来讲,就是对每一笔交易进行了盖章确认,并记录了交易发起的时间。类似于生活中,最为常见的买卖双方签订合同,有双方的签名以及合同生效的时间。
也就是说,通过时间戳,用户发起的每一笔交易都能有时间记录,当攻击者在交易过程中发起交易时,系统能够分辨出交易发起的时间,根据时间顺序来看,就能够迅速确认第一笔交易时间。
这样一来,就不会存在最长链就是最有效链的情况。交流请加笔者!