文章內容

article_man_pic

工作量證明(POW:Proof of Work)

Hightech   2017-05-09    A20170509002
點閱 3699
評論 6
進階
article_pic

 

❒ 節點資料同步

另外一個麻煩的問題是比特幣的節點(Node)是散佈在整個網路的世界裡,當使用者進行交易改變了某一個節點的比特幣帳本,必須把這個改變通知散佈在世界各地的節點,要如何把這個改變通知散佈在世界各地的節點呢?知識力www.ansforce.com。


假設網路上所有的節點(Node)都已經存在區塊0/1/2/3(Block 0/1/2/3),這個時候節點(Node R)的礦工採出新礦區塊(Block R),同時節點(Node G)採出新礦區塊(Block G),如<圖一>所示,則新區塊的資料溢散傳遞(Propagating)的流程如下:
1.節點(Node R):已儲存區塊(Block 0/1/2/3),採出新礦區塊(Block R)。
2.節點(Node G):已儲存區塊(Block 0/1/2/3),採出新礦區塊(Block G)。
3.區塊(Block R與Block G)分別經由「溢散傳遞(Propagating)」給所有節點,其中節點(Node B)同時收到區塊(Block R與Block G)。
4.節點(Node B)不知道該鏈結那個區塊,因此同時將區塊(Block R與Block G)鏈結到區塊(Block 3)後面,形成「分岔(Fork)」。知識力www.ansforce.com。

 


圖一 溢散傳遞示意圖。
資料來源:杜宏毅博士,Block Chain的前世今生與未來,台灣網路認證公司。

 

工作量證明(POW:Proof of Work)

過了一會兒,節點(Node P)採出新礦區塊(Block P),如<圖二>所示,則新區塊的資料溢散傳遞(Propagating)的流程如下:
1.節點(Node P):已儲存區塊(Block 0/1/2/3/G),採出新礦區塊(Block P)。
2.節點(Node B):計算區塊(Block R與Block G)兩個分支的「總困難指數(Difficulty)」,保留總困難指數高的分支,刪除困難指數低的分支。
3.假設區塊(Block G)的分支總困難指數高,因此將區塊(Block P)鏈結上去,同時刪除區塊(Block R),稱為「工作量證明(POW:Proof of Work)」。
4.如果被刪除區塊(Block R)內的「交易(Transaction)」已經包含在區塊(Block G與Block P)內則不做任可變動,直接刪除區塊(Block R)的分支即可。
5.如果被刪除區塊(Block R)內的「交易(Transaction)」沒有包含在其他區塊內,節點(Node B)將這些交易傳遞出去讓其他區塊將這些交易包含進去。
6.重複上面步驟,使所有節點的資料收斂(Convergence)達到同步而一致。

 

圖二 工作量證明示意圖。
資料來源:杜宏毅博士,Block Chain的前世今生與未來,台灣網路認證公司。

 

 

❒ 軟分叉(Soft fork)與硬分叉(Hard fork)

➤軟分叉(Soft fork):當新共識規則發布後,未升級的節點會因為不知道新共識規則,而產生不合法的區塊,通常就會產生的臨時分叉。區塊鏈的資料結構發生改變時,未升級的節點可以驗證已升級的節點採出的區塊,而且已升級的節點也可以驗證未升級的節點採出的區塊。
➤硬分叉(Hard fork):區塊鏈發生永久性分叉,在新的共識規則發布後,部分沒有升級的節點無法驗證已經升級的節點所產生的區塊,通常就會發生硬分叉。區塊鏈的區塊格式或交易格式發生改變時,未升級的節點拒絕驗證已升級的節點採出的區塊,但是已升級的節點可以驗證未升級的節點採出的區塊,然後大家各自延續自己認為正確的鏈,所以分成兩條鏈。

 

【實例】比特幣(BTC:Bitcoin)與比特幣現金(BCH:Bitcoin cash)
發行了八年的比特幣(BTC:Bitcoin)在設計上有許多限制,例如:區塊大約1MB,一筆交易大約256B,一個區塊大約儲存4096筆交易,平均每秒最多只能處理7筆交易(4096筆交易/600秒=6.82),也就是「全世界平均每秒最多只能處理7筆交易」,這樣的限制根本無法取代傳統貨幣扮演貨幣支付的角色,許多人不了解這些細節,被電視上的新聞誤導,看到日本某某商店可以使用比特幣付款,就以為這是未來的趨勢,其實不然,為了解決比特幣的這些限制,2017年8月1日出現「比特幣現金(BCH:Bitcoin Cash)」,就是因為修改了區塊鏈的規則所產生的一個「硬分叉(Hard fork)」,改善了原來比特幣的一些限制,但這並不代表它就解決了所有問題唷!

 

比特幣(Bitcoin)的限制

前面介紹的方法,包括使用公開金鑰驗證來進行交易識別確認,使用區塊鏈確保交易資料無法篡改,使用工作量證明達成節點資料同步,已經解決了比特幣大部分的問題,但是仍然有一些限制存在:

比特幣大約每10分鐘採出一個區塊,可儲存1MB的資訊,由於每一個區塊容量是有限制的,隨著交易量愈來愈多,容量的限制會使處理速度受到影響,這個問題可以經由變更比特幣的設計來解決,但是目前比特幣社群尚無共識。
由於區塊容量的限制,再加上工作量證明也需要時間處理,因此比特幣無法處理超過每秒7次的交易,和目前廣泛使用的VISA這樣能夠每秒處理數萬次交易的支付系統相差很多,因此比特幣不適合即時大量的小額交易。知識力www.ansforce.com。
使用「可驗證的匿名制」,可驗證代表可以確認這筆交易的真實性,匿名制代表並不知道發動這筆交易的人是誰,因此容易造成交易追蹤斷線變成不法人士的洗錢管道,例如日前的勒索病毒「WannaCry」肆虐全球,怪客向受害者勒索價值300美元的比特幣,使用比特幣就是因為不容易追蹤。
分散式拓樸沒有中央控管機制會造成交易不確定性、究責與賠償困難,而且服務提供者(節點或電子錢包)的技術可能會有落差,那一天真的發現自己的比特幣不見了!或是已經完成的交易卻無效,基本上很難找到負責的人。知識力www.ansforce.com。
比特幣在法規上存有疑義難以被主管機關接受,因此有人將比特幣的部分技術抽離出來尋找新的應用,並且取了新名字:區塊鏈(Block chain)。但是區塊鏈落實困難,無法直接套用到現用的其他應用上,因此開始演化並且出現新名字,例如:分散式帳本(Distributed ledger)、分享式帳本(Shared ledger)、超級帳本(Hyper ledger)等。

比特幣(Bitcoin)的目標明確,就是要取代傳統貨幣扮演貨幣支付的角色,但是仍然有許多困難必須克服,包括:重複支付、結算確認、交易同步等。
 

【請注意】上述內容經過適當簡化以適合大眾閱讀,與產業現狀可能會有差異,若您是這個領域的專家想要提供意見,請自行聯絡作者;若有產業與技術問題請參與社群討論。

 

【資料來源】杜宏毅博士,Block Chain的前世今生與未來,台灣網路認證公司。