九、分片的難題 —— 最終性 VS 活性
finalize 就是使區塊具有最終性,我翻譯成敲定。要使區塊具有最終性。簡潔的方法就是出塊即敲定。Cosmos 的 Tentermint 共識就是這樣。但是這個做法在特殊情況會出問題。
我們看圖,某條 Tendermint 共識的
區塊鏈原本正常出口。突然海底光纜斷了,互聯網被分成了兩部分。兩部分各自包含一般驗證人節點。Tentermint 共識要求收集到 2/3 以上的驗證人簽名才能出塊。
被斷開后,兩部分網絡都最多收集到一半驗證人簽名,所以出塊停止了,或者說區塊鏈喪失了活性 liveness。有人認為這可以容忍,本來就是特殊情況嘛,那就先停下來,等網絡恢復正常再繼續工作。
海底光纜斷了,上網、打電話、視頻會議都受影響,憑什么區塊鏈就不能暫停呢?還有人認為停止出塊不可接受,要始終保持區塊鏈的活性。那怎么辦呢?辦法就是把出塊和敲定分開,也稱為混合共識。
在剛才說的網絡中斷情況,在兩個分開的網絡,節點可以繼續出塊,但是沒有足夠的驗證人參與進來,所以不能敲定。等網絡恢復了,再決定哪些塊被敲定,從而活性和最終性兼得。
而且混合共識可以讓個別節點輪番快速出塊,于此同時,敲定過程可以慢一些,讓大量節點參與進來,確保去中心化,提高攻擊和共謀的難度,也就是保障了安全。所以混合共識也兼顧了性能和安全。
以太坊 2.0 和 Polkadot 都采用混合共識。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。