?共識是區(qū)塊鏈技術的核心算法,也基本上決定了該鏈的效率。區(qū)塊是機器之間所需要共識的內容。賬戶層面,通過OLog(n)的Merkle驗證樹,可以快速定位出被篡改的數(shù)據(jù),遍歷StateTree安全獲取用戶余額,防止雙花的出現(xiàn)。
?區(qū)塊鏈通過共識算法,讓機器之間達成信任的基礎,從實踐上就是去解決拜占庭將軍問題。BFT(拜占庭將軍容錯)里面,3F+1
?BFT最大的問題是節(jié)點之間的消息廣播,會特別多。而且必須事先確定本次消息投票的節(jié)點基數(shù)。結合BFT投票性能差的問題,我們提出了一種方案,讓BFT僅僅參與很少的投票過程,例如就是節(jié)點基數(shù)上。假定有100個備選節(jié)點,如何選出21個節(jié)點出來?每個節(jié)點記多少個塊?這100個節(jié)點的能否達到了當前最高的高度,網(wǎng)絡延遲等性能能否達標?這些信息,實際上跟我們交易沒有任何關系。但是又會影響到整個鏈的性能。我們用PBFT去解決節(jié)點基數(shù)問題,為后續(xù)的交易廣播和區(qū)塊投票,提供了更高更高效的基礎設施。在這一層,大家都是平等的,沒有權益的參與。?
?下一步,Raft是一個Leader-Follow的算法,每一輪Term會隨機選出一個Leader來,負責交易的收集和廣播,其他節(jié)點Follow主節(jié)點的信息。在垂直的區(qū)塊鏈3.0應用中,對鏈上的VM性能要求更高,而不是簡單的棧式計算(EVM)了。例如游戲的主服務器邏輯放,如果每個節(jié)點都參與VM的計算,會造成大量的資源浪費。大數(shù)據(jù)處理系統(tǒng)里面,Raft可以去解決分工問題,做一個工作的調度者,可以讓任務公平、安全的分發(fā)到不同的節(jié)點機器上。這樣好處是可以通過幾臺機器,構建一個超級機器。Raft共識在我們鏈中,負責交易的驗證廣播分發(fā),這是成塊的基礎,如果交易都是錯誤的,那就無需要進入?yún)^(qū)塊了。
?最后我們結合了DPoS共識算法,隨機生成當前的輪值節(jié)點,對已驗證過的交易進行打包和區(qū)塊頭的廣播。區(qū)塊僅僅是個頭部驗證信息而已,可以快速的到達每臺機器。關于輪值的節(jié)點,我們認為一個節(jié)點每次就記一次塊。 出塊速度由網(wǎng)絡較好的節(jié)點決定,由他們構成了超級節(jié)點記賬模式。