HotStuff共識算法總結


接上一篇HotStuff共識協議詳解,繼續總結一下HotStuff這個共識算法,上一篇有點太技術了,所以這次總結一下HotStuff的創新點

今年Facebook公布了Libra區塊鏈的計划,Libra中的共識算法是LibraBFT,該算法是基於HotStuff共識算法改進而來的。

我們首先聊一下HotStuff共識算法,該算法總結了PBFT、Tendermint等共識算法的特點,實現了一個既有安全性(safety)、活性(liveness),又有響應性(responsiveness)的共識算法。

為了更好的理解HotStuff的創新點,我們先簡要回顧一下PBFT和Tendermint的短板。

PBFT是最早的可以實用的拜占庭容錯共識算法,該算法最大的短板是ViewChange時的消息復雜性,每當需要在共識節點中切換Leader時,都需要大量的消息O(n^3),這是很復雜的。

Tendermint是17年提出的共識算法,該算法采用了鎖定、解鎖機制,簡化了Leader切換過程。但是該算法卻損失了響應性,在該算法中即使某個節點集齊了各個共識節點的投票消息,依然需要等待一段時間,以保證大多數節點都能集齊消息。這會帶來什么影響呢?在網絡情況很好的時候,依然需要等待固定時間,才能出塊。比如說,在目前的Cosmos主網中,出塊間隔相當穩定,大約是6秒左右。

如何才能讓區塊的確認只與網絡的實際延遲有關呢,也就是說網絡狀況好的時候,區塊更快確認;網絡狀態差的時候,可以多等點時間確認。這樣的特性就是所謂的響應性,Responsiveness。

HotStuff給出了這樣一個算法,Leader切換只需要線性復雜度,同時保證了響應性。那么它是怎么做到的呢?

首先,HotStuff引入了門限簽名,每一輪的共識投票消息,都是各個共識節點發送給Leader節點,由Leader將這些消息簽名組合成一個,再廣播給大家。這樣極大的較少了系統中消息量,從O(n^2)減到了O(n)。

然后,相比於PBFT和Tendermint的兩輪投票,HotStuff采用了三輪投票,多了一輪投票,各個節點集齊投票就可以進入下一個共識,而不需要等待固定的時間。

除了響應性,HotStuff還采用了鏈式確認,我們認可一個區塊,實際上也是對於該區塊父區塊的認可。在鏈式的HotStuff中,可以將區塊的確認放在下一個區塊中,只要一個區塊后面產生了三個連續區塊,那么就說明該區塊經過了三輪投票確認,就可以最終敲定了。

還有一個比較大的創新是,HotStuff提出了安全性和活性的解耦,安全性和活性可以分開獨立的設計。共識算法的安全性經過嚴格的數學證明,同時其活性可以更加靈活,可以定制。比如說,一個系統想要采用HotStuff,安全性的部分不用擔心,對於活性的部分,比如Leader怎么切換、超時時間如何定義等等可以靈活的留給使用者定義。

總結一下HotStuff的特點:

  1. 消息復雜度是線性的,O(n), Leader切換時也是線性的;
  2. 具備響應性,Responsiveness
  3. 鏈式的確認規則,出塊更快;
  4. 安全性規則和活性規則解耦,更加靈活。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM