Bitcoin Gold 51% 攻擊簡介

Yuren Ju
Yuren Ju
Sep 1, 2018 · 4 min read

最近準備教材的時候又研究了一下在 2018 年五月針對 Bitcoin Gold (BTG) 的攻擊,用圖片輔助解釋當時發生了什麼事情。這次的攻擊 Bitcoin gold 官方有整理了一篇講解攻擊如何進行的文章 Anatomy of a Double-Spend / 51% attack 寫得非常清楚,你也可以直接看此文就可以了解發生什麼事。

因為 Medium 上面 BTC 跟 BTG 長得很像,以下我都用 比特幣比特黃金 來代稱。

前置條件

首先由於 Bitcoin Gold 的總體算力偏低,攻擊者已經先掌握了 Bitcoin Gold 51% 的算力了(不管是自建機器或是利用算力租賃服務 NiceHash),因此才能發動此次攻擊,雖然要花很多錢準備這些算力,但是獲得的回報更高,所以才會有這樣的攻擊。

另外一個關鍵就是在區塊鏈協定當中,在同時都有數條都是合法的區塊鏈時,礦工們會優先採納長度較長的那條,因為他花費的工作量較高。

手法

假設我們目前在 block 編號 200,000,攻擊者在自己的錢包 A 擁有 1,000 比特黃金 ,而被作為目標的交易所在確認 10 個區塊後將會把交易設為合法交易。

因為攻擊者擁有了 51% 算力,所以我們這邊可以看成有兩群礦工,一群是好礦工,另外一群是攻擊者擁有的壞礦工,而這兩組礦工將產生兩條不同的區塊鏈。

攻擊者在 block 200,001 把錢包 A 的 1,000 比特黃金 轉帳入交易所的錢包,並且廣播給好礦工。同時他廣播了另外一個交易:從錢包 A 將 1,000 比特黃金 轉帳給另外他自己另外一個錢包 B,此筆交易只存在於壞礦工所產生的區塊上。

此時在 block #200,001 上面收錄了兩個截然不同的交易,並且不存在於另外一邊的區塊鏈上,而且這兩筆交易都是合法的:

  • 好礦工:轉帳給交易所
  • 壞礦工:轉帳給攻擊者的錢包 B

接下來等待交易所在好礦工那邊過了 10 個區塊確認此筆交易時,同時攻擊者利用自己的 51% 算力讓壞礦工造出了比好礦工更多的區塊,而且這條區塊鏈的紀錄中從來沒有把這 1,000 比特黃金 轉給交易所,而是轉到了攻擊者的錢包 B。

等到 10 個區塊確認,交易所確認匯款已經完成後,攻擊者馬上利用這 1,000 比特黃金 去換成 比特幣,接著馬上提領到他自己的 比特幣 錢包。

此時攻擊時機已經成熟,假設這時好礦工算出了 #200,011 到 #200,012 的區塊,但是由於壞礦工的算力更強,已經算出了 #200,014 的區塊,攻擊者將自己擁有的壞礦工手上的區塊廣播到所有礦工的手上。

此時好礦工發現壞礦工的區塊鏈長度比自己手上的更長,而且是合法的區塊鏈。根據協議中礦工會採納工作量更高、區塊長度更長的區塊鏈的這個規則,此時他們就會相信壞礦工所釋出區塊鏈才是正確的區塊鏈,並且把自己手上只有到 #200,012 的區塊鏈替換成壞礦工釋出的區塊。

而這條壞礦工所提供的區塊鏈上則從來沒有將 比特黃金 轉帳給交易所,但是由 1,000 比特黃金 交易而來的 比特幣 此時已經轉帳號攻擊者的 比特幣 錢包了,因為 比特幣比特黃金 是不同的區塊鏈,所以就算 比特黃金 的區塊鏈已經重組了,仍然不會影響到 比特幣 的區塊鏈。最後 比特黃金 的網路將會認為原本壞礦工的那條區塊鏈才是正確的鏈,等於攻擊者在沒有將錢轉帳的交易所的狀況下買了 比特幣

比特幣或以太幣有沒有可能受到類似的攻擊?

不太可能,比特黃金會發生這起攻擊事件的原因在於比特黃金的總體算力太低,加上現在在 NiceHash 上面就可以租用算力,這兩個條件加在一起就導致了這起事件。

根據 crypto51 上面的數據,NiceHash 上面僅擁有比特幣 1% 的算力可供租用,所以無法透過租賃算力的方式達成。如果不是租賃算力而要自建礦機攻擊的話,根據 gobitcoin 上面的成本估算需要約花費 80 億美金建制硬體(此金額會浮動),並且每日電費 500 萬美金才可以發動此類型的攻擊。

Yuren Ju

Written by

Yuren Ju

旅行、咖啡、科技宅

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade