巨鯨數字-區塊鏈技術-區塊鏈爲什麼需要共識?
區塊鏈中節點都參與記錄數據,那麼最終以誰的記錄爲準?或者說,怎麼保證所有節點最終都記錄一份相同的正確數據,即達成共識?
在傳統的中心化系統中,因爲有權威的中心節點背書,因此可以以中心節點記錄的數據爲準,其他節點僅簡單複製中心節點的數據即可,很容易達成共識。比如現實生活中的行業老大哥和政府部門都具有權威話語權,他們的數據大家都認可,具有一言九鼎之功效。
然而在區塊鏈這樣的去中心化系統中,並不存在中心權威節點,所有節點對等地參與到共識過程之中。大家都一樣,我憑啥聽你的?有可能誰也不服誰。
由於參與的各個節點的自身狀態和所處網絡環境不盡相同,而交易信息的傳遞又需要時間,並且消息傳遞本身不可靠,因此,每個節點接收到的需要記錄的交易內容和順序也難以保持一致。
就如同大家都在一個場地開會,但大家的身份、想法、使用的手機型號都不一樣,全部達成統一的概率很小,但區塊鏈每一次記賬必須達成共識。更不用說,由於區塊鏈中參與的節點的身份難以控制,還可能會出現惡意節點故意阻礙消息傳遞或者發送不一致的信息給不同節點,以干擾整個區塊鏈系統的記賬一致性,從而從中獲利的情況。
因此,區塊鏈系統的記賬一致性問題,或者說共識問題,是一個十分關鍵的問題,它關係着整個區塊鏈系統的正確性和安全性。
既然區塊鏈需要共識算法作爲統一大家意見的靈魂歌手,那麼共識算法都有哪些呢?當前區塊鏈系統的共識算法有許多種,主要可以歸類爲如下四大類:
1.工作量證明(Proof of Work,PoW)類的共識算法;
2.Po*的憑證類共識算法;
3.拜占庭容錯(ByzantineFault Tolerance,BFT)類算法;
4.結合可信執行環境的共識算法。