11月10日在廣州貝塔咖啡舉辦的迅雷鏈技術沙龍上,迅雷鏈底層工程師張驍就迅雷鏈共識演算法的內在細節,向到場的開發者和區塊鏈愛好者做了詳細解讀。dpoa+pbft的演算法保證了分布式系統中的強一致性和高效率共識,吸引了在場來賓的關注。
什麼是共識演算法?
張驍認為,區塊鏈建立在分布式系統上,有若干個節點,每個節點都會維護自己的資料,這些資料需要保證一致性。如果不同的節點提供的資料不同,就不是乙個能夠正常對外工作的分布式系統。所以在區塊鏈中,需要把這些資料通過複製和同步,來保持一致性,這個過程就叫做共識。
共識過程中所使用的演算法就叫共識演算法。對於區塊鏈來說,共識演算法的作用就是制定達成共識的標準,即當資料有所不同時,以誰的為準。張驍深入淺出,用通俗易懂的方式,解釋了這個概念。
當前主流共識演算法的分類
張驍表示,目前共識演算法可分為分為概率一致性共識和絕對一致性共識。
概率一致性共識演算法是指在某乙個時間點上,允許資料有一些不一致情況的演算法。比如位元幣採用的演算法,就是一種典型的概率一致性演算法。位元幣達成共識的過程中,如果在同乙個時間點有兩個不同的節點,都找到了滿足這個條件的計算公式,就相當於都可以產生乙個區塊,然後就產生了分叉。當然,這種分叉是會被下一輪的挖礦和共識過程所修正的,最終還是會達成一致,但在其誕生後的一小段時間裡,是無法達成一致的。
絕對一致性共識演算法是指資料始終保持一致性的演算法,它通過犧牲一定的可用性,保證了資料的一致,其中又可以細分cft和bft兩個型別。
cft演算法的特點是確定乙個固定的節點數量,只要有達到這個數量的節點確認,那麼共識就算達成。比如總共有11個節點,確定只要4個節點投票確認某次交易,那麼這次交易就算完成。這樣做的結果是交易確認速度很快,同時結果永遠都是確定的,而且不會出現分叉。
bft演算法是另外一種常見的絕對一致性演算法,它達成共識的過程分為三個階段,分別是預準備、準備還有提交,其共識過程是:
1.預準備階段:某個節點為從客戶端收到的請求分配提案編號,然後發出預準備訊息,廣播給其它節點;
2.準備階段:其它節點收到預準備訊息後,檢查訊息合法性,如果檢查通過則向其他節點傳送準備訊息,並帶上自己的id資訊,同時接收來自其他節點的準備資訊。收到準備訊息的節點對訊息同樣進行合法性檢查驗證,全網中至少2/3的節點驗證過的訊息,才會真正進入準備狀態;
3.提交階段:向全網所有節點廣播進入準備狀態的訊息,然後由所有節點進行投票,投票數達2/3後該訊息通過。
各種共識演算法的優缺點
張驍指出,以位元幣為代表的概率一致性演算法的缺點是,對確認時間的要求比較長。位元幣出塊速度為10分鐘,同時還要經過6個區塊的確認,才能得到最終的確定。即要經過60分鐘之後,某個交易才能得到確認,而且還不一定能夠保證支付成功。這在實際應用過程中是無法接受的,誰也不能付款後還要等1個小時,才能確定到底有沒有完成付款、拿走東西。
因此,概率一致性演算法不適合實際商用,無法滿足實際商業場景中對交易確認速度、併發處理的要求。
cft演算法的問題是不能防止節點間的撮合,比如有4個相熟的節點勾結到一起,這樣幾乎就可以確認所有交易。同時也不能防止節點作惡,比如乙個節點向其中4個節點發出乙個確認請求,再向其它的節點發出另乙個完全相反的確認請求,這樣就會同一時間形成兩個完全不同的交易結果,由此導致系統出現偏差。
因此,cft演算法基本只能在能夠確保節點誠實度的情況下使用,比如私有鏈。
bft演算法彌補了cft的漏洞,杜絕了節點撮合交易和作惡的可能性,每一次交易都經過兩輪投票,多次驗證,因此不會出現惡意交易的情況出現。
但它有兩個缺點,一是容錯率變低,因為每輪投票都需要至少2/3的節點通過才行,所以bft演算法下,節點最多只能容忍不到1/3的節點出現故障,如果超過,整個區塊鏈都不能執行。
其次是由於要進行3個階段,每個階段都需要對全網進行廣播,所以通訊量非常大,是節點總數量的次方級。因此在節點數量比較多的情況下,bft演算法會顯得效率很低,簡單說,就是這種演算法不太適用於多節點的區塊鏈。
迅雷鏈採用什麼共識演算法?
基於以上共識演算法都無法滿足要求,為了更好的適應各種大型商業場景,迅雷鏈提出了獨有的同構多鏈架構結合dpoa+pbft的共識演算法。
而在記賬過程中,採用pbft演算法。pbft演算法的優點是確認速度快、併發處理效能高,而且還永不分叉,有很強的一致性,非常適合於實際商用。
首先,迅雷鏈所有記賬節點都是優中選優挑選出來,而且還有大量備用,因此一來節點故障率本身就不高,二來一旦有節點出現故障,可以從備選池中立即選擇新的節點來補上。150萬+的總節點數,保證了隨時都有足夠的備選節點使用。
同時由於是採用dpoa演算法來挑選記賬節點,所以在同一時間記賬的節點數量不會很多,完美規避了pbft演算法通訊量大的缺點。
基於這種雙重演算法的設計,迅雷鏈才能在保證安全性、去中心化程度的同時,又能實現百萬級tps、秒級確認速度等超高效能,並能保證不分叉、不回滾,是目前最適合實際商用需求的區塊鏈。
張驍最後說,沒有任何一種共識演算法是最好的,我們不能說到底是pow好,還是dpoa+pbft好。因為演算法好不好,要根據實際承載的區塊鏈來判定,通過區塊鏈面向的業務場景和目標去考量。迅雷鏈作為區塊鏈3.0時代的引領者,需要能夠接納更多的商戶上鏈,能夠達到百萬級的tps,能夠讓交易在每秒級別的時間當中確認。在這樣的需求下,在結合到有150萬以上節點的玩客雲硬體支援,所以最終選擇了dpoa+pbft的演算法,成就了迅雷鏈的最強心臟。
區塊鏈 共識演算法POS,DPOS
pos proof of stake 大多數地方叫權益證明,其實可以看作是股權證明,也是一種共識演算法,在基於權益證明的數字貨幣中,下乙個區塊的選擇是根據不同節點的股份和時間進行隨機選擇的。打個比方說,假如你買了1萬個數字貨幣,然後就放在pos機制中,這樣你就擁有了機會去獲得新的區塊從而得到獎勵,機...
區塊鏈共識演算法 POW
pow proof of work 工作量證明 工作量證明即挖礦,通俗來說就是幹的越多,收穫越多。即通過與或運算,來計算出乙個滿足規則的隨機數,即獲得了本次的記賬權。在發出本輪需要記錄的資料之後,全網其他節點驗證之後一起儲存。乙個符合要求的區塊雜湊值block hash由n個前導的零組成 零的個數取...
區塊鏈的共識演算法
鏈客,專為開發者而生,有問必答!共同演算法11 是經過特殊節點的投票,在短時間內完成對買賣的承認,假如利益不相干的若干個節點達到共同,我們就認定全網對此也能達到共同。公式演算法的分類 工作量證明 生成要加入到區塊鏈中的一筆新的買賣是必須滿足的要求,根據工作量證明組織構建的區塊鏈網路中。節點是經過計算...