0前言
在區塊鏈漫談(1)中我們提到,區塊鏈是一個通過多種方法建立共識并解決多方互信問題的系統,該系統需要解決拜占庭將軍問題:網絡中存在惡意節點(叛徒將軍)的情況下如何對某一提案和請求達成一致(不同將軍發出的進攻撤退指令不同,以誰為準?)。對拜占庭將軍不熟悉的讀者可以移步到上一篇內容
?傳統情況下,解決這一問題的辦法是設立一個中心化節點或者第三方裁決組織,來對網絡中的提案進行判斷從而達成一致。但該方法與區塊鏈非中心化(慎用去中心)的設計理念相違背。那么,區塊鏈是通過什么方法解決拜占庭將軍問題的呢?
本篇我們追本溯源,不從技術視角入手,而是從經濟視角出發,以比特幣這個最初也是最成功的區塊鏈應用來說明其解決拜占庭將軍問題的方式
1.提高提案成本——比特幣系統中解決拜占庭將軍問題的思路
拜占庭將軍問題中,各將軍發出攻打或撤退的指令幾乎沒有成本,只需要傳令即可。在這種情況下,系統內就會存在多個不同的提案。在沒有強中心決策的分布式系統中,系統各方對于提案的確認就變得十分麻煩,因為發聲的成本過低,識別和確認的成本隨著節點數量增多顯著高企。
比特幣所提供的解決思路是:提高系統中節點提案的成本,限制一段時間內整個系統中提案出現的數量。這個思路最終落地實施就是PoW(工作量證明共識算法)。
通俗來說,比特幣區塊鏈是記錄比特幣交易的賬本,現在當你閱讀這篇文章的10分鐘時間里,假設系統中發生了20筆交易,但這10分鐘里賬本只能記錄10筆交易的話,那么對于區塊鏈系統來說,它在接下來的時間里要做的事情有:
(1)確定這20筆里的哪10筆能夠被記進賬本;———(保存提案)
(2)確定誰來記這10筆帳;? ? ? ? ? ? ? ? ? ? ? ? ? ? ———(確定提案權)
(3)確定某人記的這10筆帳整個系統中的其他人都同意? ———(確定提案合法)
對于環節1和2來說,如果提案成本很低,則整個系統可能會有多種提案:A選出20筆中的10筆,B也選出了20筆中的10筆,C…..但他們選擇的方法不同。于是系統當中缺乏一種規則,來確認提案權。
比特幣PoW算法實際上就是通過以增加提案成本的方法來確定提案權。解決的方法是給每一個節點出一道難于計算但易于驗證的數學題,在現今的技術手段下只能通過窮舉的方式找到符合這個問題的解。通過這種方法,同一時間內算出這道題的節點相對而言必然不會很多,因為這需要大量的算力和投入;此外,幸運節點再算出該題后將結果廣播,比特幣區塊鏈系統會對幸運兒算出的題加蓋全網統一的時間戳,其他節點收到消息驗證之后即可發現該幸運兒先于他們算出這道題,且結果正確(難于計算易于驗證)。?
2.眾包—-經濟激勵作為制度設計
“我們每天所需要的食物和飲料,不是出自屠夫、釀酒師和面包師的恩惠,而是出于他們自利的打算”—-《國富論》,亞當斯密
上一節中關于提案權的確認實際上會引出很多問題,其中一個關鍵問題就是:
其他節點跟你我互不相識,憑什么要為你和我之間發生的交易做記賬并提案到區塊鏈中?
比特幣區塊鏈,或者其他很多公有鏈實際上都采取了我認為是“眾包”的制度設計,即讓別人幫你記賬,并給記賬者獎勵。下述幾個小標題闡述了這個邏輯:
(1)提案者和提案內容本身并無聯系(AB的交易C來作證)
(2)提出提案付出成本(C需要進行挖礦/計算難題)
(3)為沒有聯系的他人提案并付出成本不理性
(4)為報酬(比特幣)付出成本則可行?
對于一個公有鏈,面向世界上所有人開放,因此你并不知道所有的節點是誰,實際上是一個陌生人網絡。鼓勵陌生人之間彼此協作通過單純的技術設計難以實現,因為協作動機的本身實際上涉及到經濟利益。
比特幣將陌生人作為記賬員,本質上是將記賬(提案)的工作眾包給了所有愿意參與該系統的人。記賬行為本身就是在維護系統的正常運轉(比特幣區塊鏈是一個記錄比特幣交易賬目的系統),記賬的動機就是爭奪比特幣。有些讀者看到這里肯定會問,比特幣本身就是個數字,沒有什么價值,這些人為什么要爭奪呢?關于這個問題實際上涉及到了經濟學中稀缺性和物品價值的討論,筆者在此不做贅述,這實際上是在討論激勵本身有沒有價值。我們本篇所討論的是,給他人一些激勵,讓他人能夠有動機維護區塊鏈系統,進而保證其他參與者交易有效的制度設計。以結果來說,比特幣區塊鏈這一套眾包—-利己——利他的自恰邏輯運行進十年而不倒,其中的精巧也自然有過人之處。
3.博弈——作惡還是行善
“蜂群被稱為分布式系統,是以生物邏輯建立的群集模型。它有四個突出特點:沒有強中心控制,次級單位具有自治特性,次級單位之間彼此高度鏈接,點對點影響通過網絡形成非線性因果關系”——《失控》,凱文凱利
從比特幣的區塊鏈系統來看,其正如一個蜂群沒有領導,但仍能協作并容忍錯誤和惡意節點,并保持著一種自治性。一個經常被問到的問題是,如果該系統的提案權歸屬很大程度上依賴于算力的多寡,那么當某幾個節點的算力大到一定程度的時(如51%),其是否可以破壞整個系統的穩定從而自由的作惡?進而顛覆掉整個自治系統?
從理論上來說,這個可能是存在的。但是從經濟視角來看,這樣做并不理智:
(1)擁有大算力意味著能夠更大概率的找到數學難題的解,此時如果按系統規則辦事選擇誠實,則能夠獲得更多的獎勵;破壞該系統得不到任何獎勵。
(2)擁有大算力到一定程度必然會造成其他人的忌憚和憂慮,其他人在比不過的情況下會離開這個系統,因為每一輪的難題競爭幾乎都沒有勝算。多數人離開之后該系統則變成寡頭維護,其他人并不會認可激勵的比特幣價值(獎勵全歸你,沒人跟你玩,你把獎勵賣給誰?)因此大算力節點出于博弈的考慮,會有意識的壓制自己的算力在51%以下,因為他知道壟斷對自己沒有任何好處,會破壞系統生態。
由此觀之,以比特幣為代表的公有區塊鏈系統在解決拜占庭將軍的同時,還規劃了激勵和算力制度使得系統參與者的利益息息相關,通過制度設計來限制作惡行為。系統并沒有反對作惡,只是作惡得不償失。當然以目前的情況來看,雖然比特幣系統沒有節點會把自己的算力提高到51%以上,但是少數大算力節點還是壟斷了出塊權,并相互制衡。這離最初的去中心化其實有一定距離,逐利和競爭思維驅使下,記賬權和維護系統權的“多中心化”趨勢在所難免。
本篇僅從經濟視角上探討了公有鏈情況下拜占庭將軍問題的解決,實際上較為通俗的闡述了PoW共識算法的原理以及它對系統和生態產生的影響。后續會討論聯盟鏈場景下解決拜占庭將軍問題的方法。