苑守慈專欄》共識決的信任機器 區塊鏈有如拜占庭帝國將軍

區塊鏈的概念,能將互聯網引領至更高層次的價值互聯網境界。(示意圖/達志影像 shutterstock)

全球區塊鏈的技術與應用正如火如荼地發展,各科技大廠甚至其他產業正以各式的樣貌進行區塊鏈技術的創新與應用。Linux Foundation於 2015年12月成立的區塊鏈Hyperledger專案,正扮演未來區塊鏈技術發展的關鍵主導角色,加速推動區塊鏈發展與應用。

2016年Hyperledger專案已匯聚全球超過80家金融、科技及區塊鏈技術與應用團隊,陣容龐大,包含各國銀行所組成區塊鏈聯盟R3、全球最大衍生品交易所CME Group、德國證券交易所Deutsche Börse、美國證券集中保管結算公司DTCC、全球最大管理諮詢公司Accenture、及IBM、Intel、Cisco、Fujitsu、Hitachi、Redhat、NEC、VMWare、Thomson Reuters等成員。

Hyperledger專案的目的爲共同建立並維持一個跨產業且開放的區塊鏈分散式分類帳技術平臺,並建立跨產業的開放標準,讓任何智慧資產的價值交換,皆可藉由最具經濟成本效益且安全的方式進行交易與追蹤。圖1顯示Hyperledger之開放技術參考架構設計具有即時部署的彈性與支援跨產業應用需求的特質,因此需有模組化與允許抽換技術元件的可擴展開放架構。

圖1:Hyperledger可擴展的開放式技術配置參考架構 (Source: Linux Foundation)

我們已知區塊鏈能將互聯網引領至更高層次的價值互聯網境界。各種形式有價值的智慧資產(如數字資產、其他有形或無形的有價值資產)透過去中心化的區塊鏈來決定資產的所有權。而資產所有權的管理藉由嵌入資產中的區塊鏈智慧合約演算法來自動執行。

筆者先前專欄已概述區塊鏈對於創新經濟多元產業的影響、區塊鏈智慧資產的發展趨勢、區塊鏈智慧合約對於價值互聯網的實踐、區塊鏈爲基礎的數字身份、本次將進一步闡述「區塊鏈共識管理」的概念與應用。

區塊鏈經常被視爲一個信任機器(trust machine),而其中的信任是由分佈在網絡各處的節點透過無法篡改的運算證明所達成的共識(consensus),意即在區塊鏈上的即時動態投票機制。然而建立共識是需要成本的,就像民主投票一樣,如何用最少的溝通成本來達成共識,則是主要的追求目標。這同時也是決定區塊鏈信任機器是否有效率運作的重要因素。因此共識管理可謂爲驅動區塊鏈信任機器運轉引擎

然而,不同類型的民主投票,所能承擔的民主成本不盡相同。以國家重大決策的公投爲例,則需保證有足夠的投票率,以此爲基礎的投票結果,才具有合法性。但某些民主投票情況則需要權衡,門檻太高未必爲好事,相反地可能會造成少數人綁架多數人的情況。對於一個極度分散的羣體同樣也不適用門檻高的標準,因爲即便是一個簡單問題的投票,都不易讓所有人達成高比例的一致性。因此,Hyperledger開放式參考架構中的共識管理(consensus manager)是能模組化地配置如PoW, PoS和 PBFT等各種不同類型的共識機制(圖2)。

圖2:各種不同類型的共識機制 (Source: KPMG)

拜占庭將軍問題」(Byzantine Generals Problem)則是一個建立於共識機制解決的實例。拜占庭爲過去東羅馬帝國的首都,現在位於土耳其的伊斯坦堡。由於當時拜占庭羅馬帝國的國土遼闊,基於防禦目的,每個軍隊都分隔遙遠,因此將軍間只能靠信差傳遞消息。於戰爭時,拜占庭帝國軍隊的將軍們必須全體一致的決定是否攻擊某一支敵軍,因爲唯有達成一致的行動才能獲致勝利。將軍中若存在叛徒,叛徒可以採取行動以欺騙某些將軍進行進攻行動,或致使他們無法做出決定,缺乏一致行動的結果則將註定戰事的失利。

共識機制解決案例-拜占庭將軍問題(圖/作者提供)

類比於區塊鏈上的共識機制,拜占庭消息誤傳係指區塊鏈上分散式網絡中節點所出現的任何錯誤(如,僞造簽名、惡意破壞系統的一致性、超時、重複發送消息等)。共識機制通常具有容錯的設計,即使某些節點失敗或是緩慢的,分散式網絡中節點的獨立處理器仍能達成某種精確的相互一致性。但是共識機制具多樣種類且其各自特性,並由圖3所顯示的共識機制基本參數來決定。

圖3:共識機制的基本參數 (Source: KPMG)

工作量證明演算法(Proof of Work - PoW)是比特幣使用的共識機制。係爲可讓每個參與的節點共同參與交易驗證,也是一個能多方共同維護並共享同一份交易記錄的帳本。PoW演算法中,記帳節點需使用一定的運算資源處理同一條件的Hashcash計算,哪個節點先計算出來,區塊就屬於該節點的,接着被算出來的數值則可向網路其他節點提交計算的工作量證明。

雖然Hashcash函數具難破解性,但容易被驗證,因此只要數值被計算出來,其他參與節點便能容易地去驗證這個值是否有效。由於工作量證明運算具相當高的計算成本,因此無誘因去僞造,只有遵守協議約定,才能夠回收成本並獲得收益

然而,工作量證明的結果於區塊鏈交易紀錄上並不具最終性 (finality)。對於分散式網絡中的任何一個區塊而言,總是存在無限延伸的可能性,可能出現始於它的父區塊但又不包含它的分叉結果,因而難以決定誰得到有最多驗證。

股權證明演算法(Proof of Stake-PoS) 則是另一種共識機制。其採用類似股權證明與投票的機制,選出記帳人,由它來創建區塊。持有股權(coin)愈多則具較大的特權,且需負擔更多的責任來產生區塊,同時也獲得更多收益的權力。PoS希望實現一個減少運算資源消耗的共識機制。

除了PoS之外,DPoS(Delegate Proof of Stake) 採用類似股權授權證明,如PoS是一幣一票的直選制度,DPoS則是間接民主的代議制。若以比特幣共識機制吞吐量的性能(transaction per second - tps)爲例, PoW的tps只能達到7/s,而DPoS的tps最高性能則能達到10w/s (BitShares官方數據)。Ethereum(以太坊:一個具有智慧合約功能的公共區塊鏈平臺)未來將採用類似PoS的機制替代現有其使用的PoW共識機制。

實用拜占庭容錯演算法(Practical Byzantine Fault Tolerance - PBFT)的共識運作爲訊息在分散式網絡中節點間互相交換後,由各節點列出所有得到的信息,以大多數的結果作爲解決辦法。而在PBFT演算法中,主要依據法定多數(quorum)的決定,一個節點代表一票,以少數服從多數的方式實現了拜占庭的容錯演算。至多容錯量以不超過全部節點數的1/3,意即如果有超過2/3的正常節點,整個系統就便可正常運作(R ≥ 3F + 1; R:節點總數,F:有問題節點總數)。

PBFT演算法的運作步驟爲:(1)取一個副本作爲主節點,其他的副本作爲備份;(2)用戶端向主節點發送使用服務操作的請求;(3)主節點通過廣播將請求發送給其他副本;(4)所有副本執行請求並將結果發回用戶端;(5) 用戶端需要等待F+1個不同副本節點發回相同的結果,作爲整個操作的最終結果。因此,PBFT演算法對所有非有問題之副本節點的請求執行總順序可達成一致,據以保證安全性。所有用戶端最終都會收到針對他們請求的回覆,據以確保活躍度(liveness)。圖4顯示在沒有發生主節點有問題的情況下演算法的正常執行流程(副本0是主節點、副本3是有問題的節點、C是用戶端)。

圖4:實用拜占庭容錯演算法保證安全性與活躍度示意圖 Source: (Li, 2016)

總言之,區塊鏈中共識機制的選擇會直接影響商業活動實際落地應用的效果,因此,在即將孕育而生的各領域區塊鏈多元服務的設計上,應慎選適當的搭載共識管理引擎,以有效驅動區塊鏈信任機器的運轉,並達成以區塊鏈爲基礎的創新經濟發展境界。(本文作者爲政大公企中心主任 苑守慈教授)