第三章 區塊鏈技術原理
第四節 工作量證明與誘因
第一節所討論)、前一個區塊的哈希值(previous hash)與 Nonce,此區塊的哈 希值必須小於某個設定的門檻(target)(例如:哈希值的前 10 個位數為零)。
由於交易的內容與前一個區塊的哈希值都是固定的,只有不斷的改變 Nonce 並 找出滿足上述條件的哈希值,才算完成工作量證明。而當一個節點 A 向網絡廣 播自己完成工作量證明之後,其他節點認同這個區塊的合法性(透過重新運算哈
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
希函數得知,哈希函數易於檢驗的性質使得驗證很容易),承認節點 A 所做的 工作量證明,會將節點 A 所廣播的區塊當作前一個,並接在這個區塊之後計算,
也就是計算上式的時候將節點 A 所廣播的區塊哈希值當作 previous hash 代入。
因此區塊鏈中的每個內容透過哈希值與工作量證明的機制環環相扣,如果有 惡意的節點想要竄改區塊鏈中的內容,則必須重新計算所有的工作量證明,使得 每個區塊的哈希值符合小於某個門檻,當區塊鏈的長度愈大的時候,要成功竄改 資料的可能性會愈小,與其竄改交易紀錄將比特幣轉入自己的錢包,並重新計算 所有的工作量證明,不如直接計算工作量證明並獲得應有的報酬,任何人權衡後 都不會有誘因去竄改資料,所以區塊鏈才能產生無法任意篡改的特性。
二、誘因
節點為什麼要花費自己的電腦運算資源來計算工作量證明呢?在完成工作 量證明之後,節點還需要驗證區塊之中的所有交易,確認交易無誤之後,才能將 這個區塊是為合法的,所以節點在區塊鏈中是負責維護運行的角色。每次完成工 作量證明的節點都會得到一筆報酬,是節點願意犧牲電腦運算資源,並維護區塊 鏈運行的誘因。提供誘因是目前比特幣能夠成功運行的關鍵,除了節點間相互競 爭能夠確保系統的穩定之外,也有效遏止惡意節點篡改區塊鏈內而從中竊取比特 幣的企圖,與其消耗資源竄改內容全部重新計算工作量證明,還不如當個老實的 節點,正當的獲取維護區塊鏈的報酬。
‧
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 八 區塊鏈分岔示意圖
上一章所提到的雙重花費問題在這裡獲得解決。區塊鏈上的每個參與者都只 認同最長的那條鏈,這就是區塊鏈的「共識」。以下有兩種雙重花費的情境:
1. 不同時間點重複使用同一筆比特幣
這是相對單純的情況,如果有人想要重複使用比特幣的話,節點在驗證 交易時馬上就能知道這些比特幣已經被花費掉,是已花費的交易輸出(spent transaction output)。
2. 相同時間使用同一筆比特幣
如果幾乎在相同時間花費同一筆比特幣,而且又剛好被不同的節點在相 同的時間點放上區塊鏈,如上一段所描述的情況,區塊鏈會產生分岔,但最 終只有其中一筆比特幣交易會被保留在最長的主鏈上,另一筆交易會回到交 易暫存池中,等待成為下一個區塊內的交易。如此一來,當雙重花費的另一 筆交易再度被放上區塊鏈時,就與第一個情境相同,節點能立即發現這筆比 特幣已經被花費過了。
因此,使用比特幣交易的時候,為了避免雙重花費的情況,在接收比特幣的 時候最好等待六個確認(confirmations),也就是在自己的交易被放上區塊鏈之
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
後,後面還有接續的六個區塊產生,這樣幾乎可以保證交易永遠被保留在區塊鏈 上,不會再回到交易暫存池中。
圖 九 區塊鏈分岔及確認(confirmations)示意圖
點對點網絡與交易驗證的方式,做到了完全去中心的目的,在這個價值交換 的網絡當中,利用節點之間的共識與數位簽章的驗證機制,取代傳統授權中心機 構的功能,交易雙方不需要信任的第三方便可達到轉帳目的,只要信任這個區塊 鏈系統,信任這個機制能夠很安全的幫助他們達到價值交換的目的即可,因此區 塊鏈又被經濟學人雜誌稱為「信任機器(The Trust Machine)」。
過去,網路之中的虛擬化商品所面臨的問題是,數位化的任何東西都很容易 被複製,以虛擬貨幣為例,在比特幣出現之前,虛擬貨幣之所以無法順利運行的 主因就是容易被複製,沒有一套有效的機制能夠遏止複製虛擬貨幣,任何人都有 辦法做到這件事,在這樣的情況下,導致虛擬貨幣無法產生其應有的價值,而以 區塊鏈為基礎的價值交換系統能夠保持數位化物品的唯一性,確保每個數位化的 物品在網路之中都是獨一無二的,如此一來價值就會存在,參與這個價值交換系 統的人們也會產生信任。