" />
比特幣粉塵交易攻擊,就是在比特幣網(wǎng)絡(luò)中有很多交易金額極少,手續(xù)費極低甚至是免費的交易,造成了比特幣網(wǎng)絡(luò)的擁堵。這也是比特幣網(wǎng)絡(luò)的威脅之一??赡艽蠹視婀郑忍貛呸D(zhuǎn)賬都是要收取手續(xù)費的呀,怎么會有免費的?其實在比特幣交易手續(xù)費的設(shè)置規(guī)則里是存在免手續(xù)費的情況,粉塵攻擊一直以來都是區(qū)塊鏈網(wǎng)絡(luò)的威脅之一,大量的粉塵交易攻擊,不僅會阻塞比特幣網(wǎng)絡(luò),同時也會對各大礦池的正常運營產(chǎn)生威脅。
為什么會影響礦池?因為錢包或者交易所等基礎(chǔ)設(shè)施,如果一不小心構(gòu)造出一個粉塵交易,是無法廣播到網(wǎng)絡(luò)被礦工打包的,這樣會嚴(yán)重影響到用戶體驗。另外一方面,粉塵交易也和區(qū)塊鏈網(wǎng)絡(luò)安全息息相關(guān),如果如果網(wǎng)絡(luò)中充斥著一些微不足道的交易,而礦工們毫無差別地打包交易,那么這些價值小,但是總體體積很大的交易,就會阻礙到其它正常交易的打包確認(rèn)。粉塵交易也可以看成是區(qū)塊鏈網(wǎng)絡(luò)上DDOS攻擊的一種,攻擊者通過發(fā)送許多這樣小金額的交易,來堵塞整個網(wǎng)絡(luò)。
試想一下,在春節(jié)做火車或者飛機的時候,我們都需要過安檢,安檢口是免費的,安檢口的數(shù)量是固定的,人流卻有很多,很多人往往因為擁堵而耽誤了行程。在這個時候如果有一群無所事事的人來來回回在安檢口排隊,這就極大的影響正常秩序。粉塵攻擊就是指“無聊在安檢口排隊的人"。
再舉個簡單的例子:
情況一:A地址轉(zhuǎn)給B地址1個btc;
情況二:A地址轉(zhuǎn)給B/C/D地址各0.0001btc;
如果按照傳統(tǒng)機構(gòu)按交易金額百分比的形式收取,情況一的手續(xù)費肯定是要高于情況二的手續(xù)費。但是在比特幣網(wǎng)絡(luò)中,情況二轉(zhuǎn)出的地址多,而每一筆交易,無論金額大小,交易的字節(jié)數(shù)都是差不多的,所以情況二交易數(shù)據(jù)的字節(jié)數(shù)要比情況一的多,所以情況二的手續(xù)費要遠(yuǎn)高于情況一。而情況二,恰恰是造成粉塵攻擊的原因。
比特幣的每筆交易手續(xù)費默認(rèn)最少是0.0001比特幣的,如果你轉(zhuǎn)賬的金額太小或者是剛剛挖出來不久的新幣(幣齡很小),那么必須要付手續(xù)費。如果你轉(zhuǎn)出的金額少于0.01比特幣,也必需付0.0001比特幣手續(xù)費。如果你需要大量的小額比特幣轉(zhuǎn)賬,又想免費轉(zhuǎn)出,這時候你可以加一個數(shù)額大的、幣齡高的比特幣金額,就會將平均優(yōu)先級提高,從而可以免費轉(zhuǎn)出比特幣。
所以,粉塵攻擊一方面是比特幣的設(shè)計規(guī)則有漏洞,導(dǎo)致有人可以利用,允許極少金額的交易。另一方面,有人頻繁惡意地進(jìn)行小額交易,才會造成比特幣網(wǎng)絡(luò)的擁堵。因為,比特幣的交易區(qū)間只有1M的大小,所以,那么多手續(xù)費極低甚至免費的小額交易,擁擠在比特幣網(wǎng)絡(luò),必然會導(dǎo)致比特幣網(wǎng)絡(luò)的擁堵,而粉塵攻擊最大的危害就是導(dǎo)致比特幣網(wǎng)絡(luò)擁堵。
北京時間2018年11月16日凌晨02:16,BCH公鏈正式分叉產(chǎn)生了ABC和SV兩條公鏈,并從556767塊開始各自獨立運行。
截止目前,ABC鏈的塊高度為:556865,SV為:556823,ABC暫時領(lǐng)先42塊。
但據(jù)區(qū)塊網(wǎng)絡(luò)監(jiān)測發(fā)現(xiàn),BCH分叉之后的兩條鏈ABC和SV上均存在一些容量為幾千筆交易的異常區(qū)塊,其中包含大量在相同地址間互轉(zhuǎn)的垃圾小額(大約0.0002BCH或更小)的交易。
例如:ABC鏈上的556846和556843塊,存在一地址qqgusvva8hnjpycgm0pfl6ywlmrcjvad5qlgqtaay5,發(fā)起了大量轉(zhuǎn)給自己的小額交易;SV鏈上的556821等塊,也有大量不同地址發(fā)起轉(zhuǎn)給自己的小額交易。
萊比特礦池CEO江卓爾今天在微博表示,由于遭受大量的粉塵交易攻擊,各BCH礦池的mempool(內(nèi)存池)都在急劇增大,已經(jīng)高達(dá)3000個交易了。
這些粉塵攻擊將會造成BCH網(wǎng)絡(luò)阻塞,進(jìn)而拉高交易費用。
既然知道了粉塵交易的定義,那么我們就可以按照定義,避免構(gòu)造出粉塵交易了。首先,可以在構(gòu)造交易的過程中,根據(jù)交易的類型,計算出交易的最低金額,同時對每個輸出進(jìn)行判斷,如果低于該金額,則不能繼續(xù)構(gòu)造該筆交易。特別的,如果這個輸出剛好發(fā)生在找零上,且金額對于你來說不太大,則可以通過舍棄該部分的粉塵輸出,以充作交易手續(xù)費來避免構(gòu)造出粉塵交易。