工作量證明方案解了一個比拜占庭將軍問題更難更挑戰的問題,就是在參與者集合未知的情況下,實現共識的一致性。
原文標題:《簡版 區塊鏈本質論 (2): 共識本質》
作者:王嘉平,中科院計算所博士,曾帶領團隊在 NSDI 2019 發表高性能並行分片區塊鏈系統的論文
區塊鏈被大家關注是件好事情,但非常不希望看到各種區塊鏈項目盲目上馬,造成各種社會資源的浪費。區塊鏈技術本身尚在發展階段,還有很多核心技術問題有待突破,對區塊鏈技術本質還充斥著各種不同的理解。後面幾天我們將就區塊鏈的計算本質,技術難點,業務調整,社會影響等方面和大家分享。
(2) 共識機制
提到區塊鏈,Consensus 是其中最為大家關注的一個新概念,被翻譯成共識機制,或共識演算法,或共識協議。這個東西到底是幹嘛的呢?共識機制本質是一個解決方案,當一個分散式系統裡面出現不一致的情況時,我們如何最終裁定一個唯一的大家公認的結果,消解這個不一致性。注意了,這裡共識僅僅指分散式系統裡面的一個演算法方案,和我們通常意義上的輿論呀,社會認同呀,組織關係呀什麼的,毫無關係,就像是雷鋒和雷鋒塔一樣。別被忽悠了 ...
為什麼區塊鏈會需要共識機制呢,究其根本,源自於 上一篇 講到的區塊鏈的計算本質。
因為在區塊鏈系統中,計算是通過全網各方接力完成的,在去中心化的區塊鏈網路中,並沒有一個總指揮來分派這個接力過程,那麼即使沒有惡意攻擊,也難免會發生己方爭搶接力的情況,從而導致整個系統中出現多個不一致的接力結果。而共識機制所起得作用,就是在這個時候最終認定,哪個結果該留下來,後面按這個接著走;哪個結果會被拋棄。
對於這個問題,很早在分散式系統領域,為了解決容錯問題,早有答案,並被歸納為一個叫做拜占庭將軍問題 (The Byzantine Generals Problem),其對應的有效解決方案成為拜占庭容錯 (Byzantine Fault Tolerance),就是經常聽到的 BFT。早在 2007 年,這個問題就有了高效的演算法 (PBFT),但是為什麼 2008 年末,中本聰發表的比特幣系統設計方案中卻採用了完全不同的設計,而沒有採用 BFT 類的演算法呢?
我們先看看容錯是什麼?假設有 100 個感測器,在觀測比如機器是否正常運轉。那麼如果有一部分的感測器壞了,給出了不正確的觀測值,我們該如何最終推斷正確的觀測結果呢?這個就是容錯。當然,邏輯上的解法正如你現在直接想到的,少數服從多數,事實上也確實如此簡單。當然實際的演算法中要互相傳遞和迭代最終認定的結果 (基於數字簽名),要限制結果認定的時間期限 (所謂的 epoch),要處理多數不夠多的情況等。
從上面的例子可以看到,在 BFT 中,少數服從多數的這個數,來自於多少個共識的參與者。這個參與者的總是必須是預先設定好的。這意味著誰是參與者,得有個預先協商和設定的過程,在區塊鏈系統中,有個叫法,叫做聯盟鏈或者許可鏈 (permissioning blockchain system)。這就是為什麼叫做拜占庭將軍問題,因為你得先是一個將軍,那麼問題來了,誰來批准你成為一個將軍呢?
這就是比特幣系統一開始不採用 BFT 演算法的本質原因。在比特幣系統中,並沒有一個參與者的批准過程,任何人都可以直接參与這個共識過程,即所謂的公鏈或者叫無需許可鏈 (permissionless blockchain system)。這是,我們如何利用少數服從多數呢?我們連總共有多少個參與者都不知道。這個部分就是比特幣系統設計最耀眼的部分。很多人不明白這件事情,就覺得比特幣系統好像就是一堆現有技術的堆砌,沒什麼技術含量。
在比特幣系統中,少數服從多數的這個數,不再是多少個共識的參與者,而是一次次的哈希部分碰撞的計算結果。然後結合最長鏈規則來形成共識,即所謂的工作量證明 (Proof-of-Work)。從這裡大家可以看到,工作量證明方案解了一個比拜占庭將軍問題更難更挑戰的問題,就是在參與者集合未知的情況下,實現共識的一致性。當然演算法具體實現還有不少細節,工作量證明的難度調整呀,一致性後置的最長鏈原則,以及後面被改進的最重子樹的原則等。
接著有了所謂的資產證明 (Proof-of-Stake) 共識系統,利用資產的數量來定義這個少數服從多數的這個數。利用資產的數量先行定義 BFT 共識演算法中所需要的這個預設的參與者集合。這樣,也可以實現無需許可鏈。也是一個不錯的辦法,只是,一開始初始的資產從何而來呢?
最後提一句性能,也就是吞吐量的事兒。很長一段時間大家以為吞吐量由共識演算法決定,然後事實上並不是這樣。上面提到的集中共識演算法,都可以設定任意的塊大小和出塊間隔,來現實需要的吞吐量和塊確認延遲。只要,整個底層網路有足夠的帶寬。下一篇,我們會著重聊聊這個事情。
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2019/10/31/%e7%8e%8b%e5%98%89%e5%b9%b3%ef%bc%9apow-%e8%a7%a3%e5%86%b3%e4%ba%86%e6%af%94%e6%8b%9c%e5%8d%a0%e5%ba%ad%e5%b0%86%e5%86%9b%e6%9b%b4%e5%9b%b0%e9%9a%be%e7%9a%84%e9%97%ae%e9%a2%98/?variant=zh-tw
文章評論