譚宜勇區塊鏈
⑴ 什麼是混合共識演算法
轉載泛融科技創始人譚宜勇博士的回答:
共識是區塊鏈技術的核心演算法,也基本上決定了該鏈的效率。區塊是機器之間所需要共識的內容。賬戶層面,通過OLog(n)的Merkle驗證樹,可以快速定位出被篡改的數據,遍歷StateTree安全獲取用戶余額,防止雙花的出現。
區塊鏈通過共識演算法,讓機器之間達成信任的基礎,從實踐上就是去解決拜占庭將軍問題。BFT(拜占庭將軍容錯)裡面,3F+1<N可以說是重要的共識理論,在實踐中,BFT有多種變種演算法:PBFT、RBFT、Q/U、HQ、Zyzzyva、ABsTRACTs、Aardvark、Adapt、A2M-PBFT-EAandMinBFT等等。這些演算法,都根據不同設定的場景,從消息的廣播方式、節點網路拓撲、硬體配置等方面進行了效率的優化。共識目標是達成共識,最終的解決方案就是投票(Vote),無論是BFT、PoW、PoS、DPoS……投票就有點模擬人類的生產模式,在區塊鏈裡面,是機器去投票。BFT類似於4PC(四段式)提交,從PrePrepare,PrePare,Commit,Reply四個階段。每個階段都要把消息廣播給網路中的所有節點,參與下一個階段的投票。
BFT最大的問題是節點之間的消息廣播,會特別多。而且必須事先確定本次消息投票的節點基數。結合BFT投票性能差的問題,我們提出了一種方案,讓BFT僅僅參與很少的投票過程,例如就是節點基數上。假定有100個備選節點,如何選出21個節點出來?每個節點記多少個塊?這100個節點的能否達到了當前最高的高度,網路延遲等性能能否達標?這些信息,實際上跟我們交易沒有任何關系。但是又會影響到整個鏈的性能。我們用PBFT去解決節點基數問題,為後續的交易廣播和區塊投票,提供了更高更高效的基礎設施。在這一層,大家都是平等的,沒有權益的參與。
下一步,Raft是一個Leader-Follow的演算法,每一輪Term會隨機選出一個Leader來,負責交易的收集和廣播,其他節點Follow主節點的信息。在垂直的區塊鏈3.0應用中,對鏈上的VM性能要求更高,而不是簡單的棧式計算(EVM)了。例如游戲的主伺服器邏輯放,如果每個節點都參與VM的計算,會造成大量的資源浪費。大數據處理系統裡面,Raft可以去解決分工問題,做一個工作的調度者,可以讓任務公平、安全的分發到不同的節點機器上。這樣好處是可以通過幾台機器,構建一個超級機器。Raft共識在我們鏈中,負責交易的驗證廣播分發,這是成塊的基礎,如果交易都是錯誤的,那就無需要進入區塊了。
最後我們結合了DPoS共識演算法,隨機生成當前的輪值節點,對已驗證過的交易進行打包和區塊頭的廣播。區塊僅僅是個頭部驗證信息而已,可以快速的到達每台機器。關於輪值的節點,我們認為一個節點每次就記一次塊。出塊速度由網路較好的節點決定,由他們構成了超級節點記賬模式。