迅雷鏈基於智能硬件的DPoA共識機制介紹

迅雷鏈基於海量的玩客雲設備作爲記賬節點來構建區塊鏈服務。這些玩客雲設備放置在用戶家裏,共享家庭帶寬和存儲,作爲CDN、雲計算、區塊鏈等服務的基礎設施,構成了一個龐大的計算機網絡。

玩客雲網絡相對於中心化的服務器節點組成的網絡,其特點可概括爲以下幾個方面:

1)網絡節點多:目前已經過150萬節點;

2)計算性能低:採用廉價、低功耗的ARM架構的CPU,綠色環保但計算性能較低;

3)存儲容量小:存儲容量各不相同,但與服務器相比容量很小;

4)網絡環境差:用戶家庭的網絡環境各不相同,包括不同的地理位置、不同的網絡運營商、不同的帶寬,普遍帶寬小、時延高、穩定性低。

面對這種基礎設施環境和業務需求,我們需要一種安全的、一致性強、可擴展性高的共識算法。

已有的共識算法研究

PoW(Proof of Work):工作量證明消耗大量算力尋找滿足條件的隨機數,它存在以下缺點:

1)速度慢。絕大部分時間消耗在工作量證明中的hash運算;

2)能源消耗巨大,對環境不好。目前比特幣挖礦比159個國家消耗的能源還多;到2020年2月,它將使用和今天全世界一樣多的電力;

3)屬於概率一致性算法,而非絕對一致性算法。在產生分叉後,兩個分叉的網絡各自繼續挖礦,經過一段時間後選擇包含最多區塊的那個鏈(最長鏈)爲主鏈,例如比特幣中的一個交易等待6個區塊才能確認。

PoS(Proof of Stake): 權益證明根據節點持有的token數量以及時間獲得相應的記賬權。PoS減少了PoW的資源消耗,但是也存在問題:

1)安全性問題:帶來如Nothing-at-Stake Problem和Long-range attacks安全性上的問題;

2)依據權益結餘來選擇,會導致首富賬戶的權力更大,有可能支配記賬權;

3)PoS同樣屬於概率一致性算法,而非絕對一致性算法。

DPoS(Delegated Proof of Stake):授權權益證明是通過擁有token的人投票選出代理節點行使記賬的權利,是在可用性和去中心化這兩個維度上做出的平衡。它存在的問題包括:

1)由少數節點代替多數節點進行共識,其實是犧牲了區塊鏈去中心化的特性,以此來換取共識效率的提升;

2)節點之間可能存在內在聯繫的共謀;

3)超級節點競選爭議。由於網絡無法解決女巫***問題,1人1票的民主投票制會被1代幣1票制度所取代,導致“富豪統治”的結果;

4)DPoS同樣屬於概率一致性算法,而非絕對一致性算法。

Paxos 算法:Paxos 算法及其衍生出的 Raft 算法等是強一致性算法,但它們是CFT(Crash Fault Tolerance)類算法,也就是它們只能處理節點故障的錯誤,而不能處理存在作惡節點的情況。

PBFT(Practical Byzantine Fault Tolerance): 實用拜占庭容錯共識是一種基於嚴格數學證明的強一致性算法,經過多階段的信息交互最終達成共識,只要系統中有三分之二以上的誠實節點,就能保證最終達成共識。PBFT的問題是通信量大—— PBFT共識需要大量信息交互,並且數量會隨着節點數的增加而急劇上升。這一特性決定了PBFT無法直接支持衆多的玩客雲節點參與共識。

根據我們的業務需求,PoW、PoS、DPoS等概率一致性算法都不能滿足需求;Paxos、Raft等CFT類算法也不適用於公共鏈;PBFT是強一致的BFT類算法,但存在通信量大的問題,也不能直接用於公有鏈。

同構多鏈架構下的DPoA + PBFT

根據玩客雲網絡的實際情況和業務需求,現有的共識機制都無法滿足要求,因此迅雷鏈提出了獨有的同構多鏈架構結合DPoA + PBFT的共識機制。

同構多鏈架構,即系統由一條條相對獨立(獨立進行共識)的鏈組成,每條鏈有多個節點,每個節點被分配到其中一條鏈上,不同的賬戶數據被錨定在不同的同構鏈上,然後接入層將交易路由到發送方所在的鏈上進行區塊打包與共識。系統中鏈的數量能夠按業務需求動態增加。因此同構多鏈的架構首先保證了系統的可擴展性,解決了玩客雲存儲容量小的問題,因爲節點無需存儲全量的區塊數據,而是隻存儲它所在子鏈的數據。

改進的PBFT,爲保證分佈式系統中的強一致性,並具備一定的容錯和防拜占庭節點作惡的能力,因此我們選擇了類 BFT 算法。在每一條單獨的鏈上,我們使用了改進的實用拜占庭容錯算法(PBFT)保證強一致性。爲了解決PBFT算法網絡消耗高的問題,對算法作出了一些優化,降低網絡消耗,提高了算法的可用性。

DPoA(Delegated Proof-of-Ability),迅雷鏈在PBFT的基礎上,還根據DPoS的思想,提出了適用於玩客雲設備的、我們稱之爲DPoA共識機制。與傳統的DPoS不同之處在於,迅雷鏈的DPoA並不是根據礦工持有的代幣數量或幣齡作爲選舉標準投票權重,而是按玩客雲節點的存儲容量、網絡穩定性、帶寬、時延、CPU使用率等指標作爲衡量標準,以獲得更好的公平性和網絡效率。

DPoA的具體處理機制如下:

1)對於存儲空間不足的設備,則不再參與記賬;

2)對於網絡不穩定的節點,則減小其權重,則由它提議(Propose)區塊的機率降低,這樣就能讓網絡狀況好的節點多提議區塊;

3)對於帶寬大的節點,則增加其權重,以提高它提議區塊的機率;

4)對於時延低的節點,則增加其權重,以提高它提議區塊的機率;

5)對於CPU使用率高的節點,則減小其權重,以降低它提議區塊的機率。

DPoA的共識機制說起來其實很簡單,但它能有效保證參與記賬的節點總是有足夠存儲空間、系統狀態較好、網絡環境較好的節點,保證了區塊鏈系統的穩定運行,解決了玩客雲節點網絡環境差異大的問題。由於DPoA每輪動態選擇部分滿足條件的節點作爲投票節點,使共識機制更加安全、穩定和高效。

爲什麼我們能夠使用DPoA的共識機制?我們之所以能夠採用DPoA的共識機制,原因在於:

1)在玩客雲設備中,我們可以內置完善的檢測與監控系統,能持續檢測玩客戶雲設備的存儲容量、在線時長、帶寬、時延等信息,爲DPoA共識算法提供實時狀態的數據支持,而這是普通的公共鏈項目無法做到的。

2)玩客雲節點數量龐大,並且一直在增加,即使排除不滿足條件的節點,也仍然有大量的節點可以使用,並能一直得到補充。

玩客雲的激勵機制和作爲家庭共享存儲的功能,讓用戶樂於投入更大的存儲空間。

總結

迅雷鏈結合玩客雲網絡節點多、計算性能低、存儲容量小、網絡環境差的實際情況,採用同構多鏈架構實現了可擴展性,採用PBFT實現了強一致性和高效率共識,用更公平的DPoA機制得到了更高的可用性,也進一步提升了共識效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章