區塊鏈淺談3 - 礦工

比特幣網路礦工流程圖

  • 礦工會盡可能接收交易資訊,因為如果他是第一個成功解答並生成區塊,則可以拿到所有它接收交易的手續費。
  • 礦工還未解完但已經接收到其他區塊生成,則會停下解答去驗證新生成區塊,因為比特幣網路是以最長的區塊鏈為準

兩個礦工同時解答怎麼辦?

一樣按照流程圖,創建並廣播給區塊鏈網路,但因為有網路傳輸先後,會形成兩條不一樣的區塊鏈,也就是「分叉」。離A礦工網路近的礦工接收A礦工的區塊,離B礦工網路近的接收B礦工的區塊,這兩派礦工再去算下一個區塊的題目,一旦其中一邊先解答,則另一邊在接收到後就會抹掉之前的區塊,以最長的區塊鏈為準。因為有「分叉」的存在,所以為了確保新生成的比特幣區塊穩定,通常都會等這新生成的區塊之後再接六個區塊後,就可以保證他不會再被抹除而跑到另一派分叉去。以數學角度看,連續六個區塊皆被兩邊同時生成的機率趨近於零,所以一旦有一邊先解答區塊,就會把兩派統一移到最長鏈。

雙花

雙花就是同一筆錢花兩次,這在現在金融制度下是由銀行去控管,一旦錢可能被使用,就圈起來,使錢無法再被使用。在比特幣中,是利用所有礦工皆維持最長鏈去解決。一旦記錄在區塊鏈最長鏈,則這筆錢就視為已交易成功,之後原交易者無法再去使用。

51%攻擊

51%攻擊是比特幣工作證明演算法會發生的一種可能的攻擊。這裡先說明一點,攻擊區塊鏈從來都不是改寫已經紀錄在區塊裡面的資料,因為每個區塊都會有區塊Hash值去加密裡面資料,又因為是一個Hash對應下一個,一旦修改則要改變全網路。

區塊鏈的攻擊是利用「分叉」去做攻擊,試想假如有一個礦工掌握了絕大部分的運算能力,其他人解完一題的時間它可以解兩題,則他就可以對區塊鍊網路作攻擊。具體作法是這礦工在第一個解完題的區塊,假如是第191個區塊,包含他想要攻擊的交易,像是他把所有比特幣給B,這時因為他解題最快,所以這區塊會是最長鏈,B也會確定這筆交易有記錄到最長鏈,認為交易成功而去給予回饋。這時這礦工「重新」去解剛剛那個191區塊的題目,在其他人還沒在最長鏈,也就是B認為他交易成功的那條鏈,解出下一個區塊192前,這惡意礦工連續從原來的區塊又解出了191並也解出了192,且廣播給區塊鍊網路。這時,其他還沒解完題的礦工就發現最長鏈變了,變成了192塊,且驗證也沒有問題,於是就紛紛轉移,原本B的交易所在的那個191區塊就被分叉抹除,交易當然也不見,但回饋卻給了。

這就是51%攻擊,利用運算力強行分叉抹除。所以這解釋了之前所說,為什麼要確定接了六個新區塊,因為越後面的區塊越容易被分叉抹除,不在最長鏈則就不是成功的交易。


以上大致介紹完礦工的工作,下篇介紹比特幣交易






Search

    Post Directory