鏈世界|雙花攻擊是什麼?才不是Double Flower!

雙花攻擊,哪兩種花?

它不是花朵的花,是有錢花的花!


鏈世界|雙花攻擊是什麼?才不是Double Flower!

hello!大家看這裡,國慶假期前的最後一期「鏈世界」開課了,今天我們來講一講雙花攻擊。好了,開始上課!

什麼是雙花攻擊?

鏈世界|雙花攻擊是什麼?才不是Double Flower!

雙花攻擊(double spend attack),光看中文名很可能會因為漢語的多重含義而理解錯,但英文名就很明顯的表達出意思了,不是兩種花,而是雙重花費的意思。雙花攻擊就是一筆錢花了兩次,也可以稱之為雙重支付攻擊。

其實,雙花攻擊並不是多麼複雜的攻擊行為,只是一筆錢花兩次,但這種簡單的攻擊行為,卻會給數字貨幣網絡造成非常巨大的傷害。

我們知道,對於一個去中心化的數字貨幣,如果沒有一箇中間媒介,那麼就很難確定一筆錢是不是已經被花掉。因此就可能出現同一筆錢既轉給了A,也轉給了B的情況。中本聰在設計比特幣的時候,通過使用區塊鏈蓋時間戳併發布全網的方式,保證每筆幣被支付後,不能再用於其他支付。也就是區塊鏈只承認第一筆交易是有效的,第二筆交易會被忽略。

但是,在之前的文章中我們已經瞭解到,比特幣採用了工作量證明的共識機制,所以雙花攻擊依然可能發生。比如說:如果Gus我要發動雙花攻擊,進行交易1後併發送廣播,網上其他節點都會記錄這筆交易,但要生成6個區塊後才能真正確定這筆交易已經成功。在交易1廣播之後,我卻在自己的區塊鏈記錄了交易2,重複利用交易1的幣。那麼如果我掌握超過51%的算力,就可以很大幾率的挖出之後的6個區塊之後,然後再次廣播,此時交易2會被判定為成功,而交易1則失敗。也就是一筆錢花2次,但是交易1的收錢者最終並沒有收到錢,蒙受損失,這就是所謂的雙花攻擊。當然,如果算力不夠51%,也可以發動雙花攻擊,也有成功的可能。只是算力越低,發動雙花攻擊成功的幾率會越小。

雙花攻擊的幾種方式

鏈世界|雙花攻擊是什麼?才不是Double Flower!

上面說的51%攻擊就是雙花攻擊的一種,51%攻擊,又被稱為 Majority attack。攻擊者佔有超過全網50%的算力,所以他可以創造一條高度大於原來鏈的新鏈。那麼舊鏈中的交易會被回滾。攻擊者可以發送一筆新的交易到新鏈上。

鏈世界|雙花攻擊是什麼?才不是Double Flower!

除了51%攻擊,還有其他幾種雙花攻擊方式,比如種族攻擊(Race attack)。這種方式主要是通過控制礦工費來實現雙花。

比如,攻擊者把一定數量的數字貨幣發給一個商家,並命名為分支A。如果商家接受確認,那麼攻擊者就會再把這筆token發給自己的一個錢包,命名為分支B。

攻擊者會在發給自己的這筆交易中,加入較高的礦工費,從而提高被礦工打包的概率。如果攻擊者發給自己的這筆交易被提前打包,這時候這筆交易就先於發給商家的交易,也就是分支B的長度超過分支A的長度,分支A上的交易就會被回滾。對於攻擊者來說,通過控制礦工費,就實現了同一筆token的“雙花”。

鏈世界|雙花攻擊是什麼?才不是Double Flower!

還有一種雙花攻擊:芬尼攻擊(Finney attack)。這種攻擊主要通過控制區塊的廣播時間來實現雙花。

比如說:Gus我挖到了一個區塊,這個區塊中包含一個交易(A向B轉10BTC,其中A和B都是自己的地址),我不急著廣播這個區塊,先找一個願意接受未確認交易的商家向他購買一個物品,向商家發一筆交易:A向C轉10BTC,付款後向網絡中廣播剛剛挖到的區塊,由於區塊中包含一個向自己付款的交易,所以我實現了一次雙花。

一般來說,為了節省時間而接受0確認,特別是對於大額交易而言,是非常不安全的,而且對於大額交易而言,多幾次確認,將會降低交易被回滾的風險。


雖然雙花不會產生新的貨幣,只能把自己花出去的錢重新拿回來,對整個幣圈生態造成的影響是不大的。但是對於被攻擊者,多少會造成不必要的損失。

所以,什麼是雙花攻擊,同學們瞭解了嗎?下一節課,我們說分叉!提前祝大家國慶快樂呀~下課!


分享到:


相關文章: