區塊鏈知識進階|雙花問題和51%攻擊

近年來,數字貨幣被炒得熱火朝天,很多人都開始密切關注數字貨幣,身邊也總能聽到有人談起關於數字貨幣的林林總總。

既然有人在參與,那麼,自然也有人在觀望,也有人在避而遠之,畢竟像這種無實物交易,交易安全還是最重要的。

如果說數字貨幣交易安全問題中可能存在bug,那這些bug中最讓人在意的當是“雙花問題”了,這也是交易安全中需要特別注意的問題。

區塊鏈知識進階|雙花問題和51%攻擊

到底什麼是“雙花問題”呢?

雙花問題,又稱雙重支付問題,即利用貨幣的數字特性兩次或多次使用“同一筆錢”完成支付。

區塊鏈知識進階|雙花問題和51%攻擊

比如在比特幣系統中,每十分鐘出一個區塊,也就意味著,你在這十分鐘內,轉出去的比特幣是沒有被區塊鏈確認的,那麼在理論上,你就可以把這個比特幣同時轉給很多人。

“雙花問題”要如何解決呢?

現實中,信用問題的根源也在於,我到底該怎麼確認你跟我交換的價值沒有同時跟別人交換呢?

如果張三有一棟房子,你應該如何確認這棟房子只和你交易,而不是張三同時也在跟王五用這棟房子進行交易呢?

如果王五最終獲得房子的產權,而你跟張三也作了交易,卻不能得到補償,這樣對你就是不可彌補的損失。

區塊鏈知識進階|雙花問題和51%攻擊

為了解決這一問題,中本聰曾在《比特幣白皮書》中寫到:

1.新的交易向全網進行廣播;

2.每一個節點都將受到的交易信息納入一個區塊中;

3.每個節點都嘗試在自己的區塊中找到一個具有足夠難度的工作量證明;

4.當一個節點找到了工作量證明,它就向全網進行廣播;

5.當且僅當包含在該區塊中的所有交易都是有效的且之前未存在過的,其它節點才認同該區塊的有效性;

6.其它節點表示接受,而接受的方法則是跟隨在該區塊的末尾,製造新的區塊以延長該鏈條。

也就是說,在交易發生的那一刻,比特幣的交易數據被蓋上了時間戳,而當這筆交易數據被打包到區塊中,就完成了一次確認,連續進行確認6次後,這筆交易就不可逆轉了。

區塊鏈知識進階|雙花問題和51%攻擊

在這種情況下,如果一個人想針對同一筆資金進行兩次交易,由於確認時間較長,兩筆交易同時確認幾乎是不可能的。

而一旦前一筆交易確認後,後一筆交易就無法得到確認。雙花問題就得到了解決。從本質上,每一份價值只能進行一次價值轉移。

不過也有例外,那就是51%攻擊。

所謂51%攻擊,簡單理解就是攻擊者利用超過全網 51% 的強大算力優勢實施對區塊鏈共識的攻擊,以實現雙重支付或阻止特定交易。最終結果會使區塊鏈的共識崩塌,失去區塊鏈存在的意義。

區塊鏈知識進階|雙花問題和51%攻擊

攻擊者是如何發動51%攻擊的呢?

發動攻擊首選要具有兩個條件(這裡以比特幣為例),那就是必須掌握全網51%算力,即使不到也可以發起攻擊,但是一旦到達數值,發起的攻擊幾乎肯定會成功;還有就是手裡要持有大量比特幣。

具備以上兩個條件,攻擊者發動攻擊:

1、把比特幣轉到交易所或某個機構或個人,賣出所有比特幣,並且收到錢、把錢提現到銀行帳號(提現目的是為確保收益,也可不用提現)。這個時間越短越好,能大大節省攻擊時間。

2、用51%算力從還沒向交易所轉幣的區塊開始重新生成區塊。比如:向交易所轉幣的區塊為第30萬個區塊,攻擊者就在第29萬9999個區塊開始重新生成區塊。

區塊鏈知識進階|雙花問題和51%攻擊

3、因為攻擊者有51%算力,而且假設他能在攻擊過程中保證一直51%算力,所以他的攻擊一定成功,也就是說他生成的攻擊塊鏈一定能追上原塊鏈。

4、當攻擊塊鏈的長度超過原塊鏈2個區塊,所有的客戶端將丟棄原塊鏈,接受攻擊塊鏈。至此,51%攻擊成功。

51%算力攻擊可以避免嗎?

如果說有的話,作為交易接收方,那就是等到交易被確認,一般認為進行6次確認後,被攻擊的可能性就越小。

但是如果發動51%攻擊的人是為了利益,要擊潰像比特幣那樣算力極大的系統,需要掌握全網的51%算力,而用這些算力來挖礦的收益要遠高於攻擊帶來的收益。

因此可以認為,其實有理性的人,為了獲得更大收益而攻擊的人,實際上是不會發動這樣的攻擊的。


分享到:


相關文章: