加密貨幣的“雙花攻擊”

買賣虛擬貨幣

提到比特幣或其他加密貨幣可能遇到的威脅時,我們常常會聽到一個詞“雙花攻擊”。雙花攻擊是怎麼回事呢?有怎樣的影響呢?又該如何防範雙花攻擊呢?

“雙花”,顧名思義,就是指同一筆錢花了兩次。在區塊鏈領域,雙花就好比把一筆加密貨幣支付給了兩個商家,獲得了兩家的服務,卻只花了一筆錢。正常情況下,雙花是不會被接受的,因為花掉的幣會按時間順序記錄在區塊鏈上,花過了就沒有了,礦工不會打包記錄一筆已經花掉了的錢。

但是,在某些特殊情況下,比如,商家接受零確認支付,雙花者用加密貨幣買了商品後,馬上又用這筆錢繼續買東西,支付更高的手續費,這兩筆交易會被不同礦工接受,這筆錢就相當於用了兩次,當然最後只會確認一筆交易,打包進區塊鏈,另外一筆交易會被拒絕,接受另一筆交易的商家沒收到錢,白白損失了商品。

還有一種情況,雙花者發起了一筆交易,這筆交易已經寫入了一個區塊,但雙花者又用這筆錢發起了另一筆交易,記入另一個區塊中,把該區塊接在此前交易的區塊之前,這樣區塊鏈就分叉出了兩條。接著,雙花者運氣爆棚,連續挖出了多個塊,取代了原鏈,使自己的鏈成為最長鏈,而大家都以最長鏈為準,這樣也相當於把錢花了兩次。

最極端的一種情況是,雙花者掌握了全網50%以上的算力,這樣他憑一己之力就能製造出最長的鏈,不需任何幸運值加成,他完全可以在花了一筆錢後,重新制造出一條不含該交易的最長鏈,將花出去的錢撤掉。這種行為也被稱為51%攻擊。

雙花攻擊的影響

雙花本身就是一種作惡行為,但它最大的影響並不是把錢花了兩次,而是動搖了大家對加密貨幣的信心。試想,如果你收到的貨幣過了一陣就莫名其妙地沒了,你還會用這種貨幣做交易嗎?為了維護區塊鏈的不可篡改性,儘管比特幣曾多次發生駭客大額盜幣的現象,但還是沒誰曾透過雙花找回盜幣。比特幣的自由精神,就是平等對待任何一枚幣或任何一個地址,美國曾要求封禁兩個伊朗人的比特幣地址,但也未能做到。

一旦發生嚴重的雙花攻擊,比特幣無法保障收款安全,人們對比特幣的信心就會大打折扣,而比特幣的價值就在於人們的信任,這種情況下,比特幣幣值大跌就幾乎是不可避免的了。

如何防範雙花攻擊?

聽著似乎很可怕,但實際上,雙花攻擊並不是不可防範的,在一定情況下,雙花甚至是不合情理的。

對於零確認狀態下的雙花問題,礦工之間可以形成一個預共識,先打包最先收到的交易資訊,其後的雙花交易會被拒絕,而不是誰手續費高就先打包誰,這樣只需等上幾秒,讓交易資訊為廣大礦工接受,後面的雙花交易就很難得逞了。比特幣現金(bch)就是這樣做的。

對於動用算力製造出更長鏈進行雙花的行為,就必然會涉及到一個劃不划算的經濟問題:算力可以用來挖礦,賺取合法收入,但要是搞雙花的話,是放著這段時間的鉅額收益不要,卻要甘當一個小偷,偷一點小錢,這明顯不合情理。為保障安全,比特幣大額交易一般要多等幾個區塊確認,這讓發起雙花攻擊的成本遠超收益,從博弈的角度阻止了雙花攻擊。此外,有能力進行雙花攻擊的大礦工,掌握了巨大的算力,往往也挖出了大量的幣,發生雙花攻擊會導致幣價大跌,讓自己損失慘重,所以他們其實比別人更害怕雙花攻擊,這樣也就從正面瓦解了敵人。

如若真有某些人或機構,既跟錢過不去,又不要臉,非要雙花攻擊比特幣,大家也可以一致拒絕作惡者挖出的區塊,不承認他的賬本。畢竟,決定比特幣價值的人最終還是使用者,使用者為什麼要接受一個壞蛋的賬本呢?作惡者的行為無非是殺敵一人,自損一千罷了。比特幣現金還引入了一個滾動檢查點機制,不接受10個區塊前的分叉,即使作惡者算力再大也無法在10個區塊後進行雙花。

綜上看來,雙花並不是什麼大敵,也是可防可控的,比特幣仍將具有強大的生命力。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;