HPB共識演算法選舉機制描述

2021-09-16 23:39:39 字數 1487 閱讀 7403

為了適應boe技術的要求,同時盡可能的提公升安全tps, hpb共識演算法採用了高效的雙層選舉機制,即外層選舉和內層選舉。

外層選舉:由具有boe板卡的所有使用者中選取出。選取週期為3個月。選取方式為通過hpb錢包進行投票選舉。

內層選舉:採用節點貢獻值評價指標,從眾多候選節點中選出高貢獻值節點成員。基於hash佇列記名投票機制,在每次區塊生成時,計算高貢獻值節點生成區塊的優先順序,優先順序高的高貢獻值節點享有優先生成區塊的權利。

在整個共識演算法設計中, hpb共識演算法的輕量級訊息交換機制使其在共識效率上遠高於其他共識演算法, 同時在安全性,私隱性等方面也做了較大幅度的提公升。

由於在申請boe板卡時已經考慮了除使用者持幣量的其他因素,所以外層選舉在錢包投票節點主要考慮持幣量的因素,以及使用者的認可度,使用者認可度高,則使用者會對他進行投票,反之則投票數量少。

注1:如果具有boe的使用者較多,會存在一定數量的使用者在外層選舉中落選。落選的使用者仍然可以入網,但是不會作為候選節點或者高效能節點,並且也不會收到獎勵。

本文重點關注內層選舉。將會詳細描述內層選舉的實現方式和關鍵因素。

選舉包括2部分,首先是投票節點,然後是唱票階段。

內層選舉階段發生在網路執行中的特定階段,每間隔一定數量的區塊進行一次選舉,並且根據關鍵因素進行排名,選擇優秀的節點進行投票。

節點頻寬:在節點執行期間,節點會定期測試與其他節點間的頻寬資料,並儲存在節點中,提供給共識使用,節點的頻寬資料會記錄在區塊中。

使用者持幣量:使用者在投票時的持幣數量。

投票數量:外層選舉過程中使用者節點獲得的投票數量。

節點根據外層選舉得出的節點資料為集合,根據關鍵因素的排名加權選擇最優節點,進行投票。為了保證選舉結果數量,在投票過程中進行了隨機化操作,並不是在所有的外層選舉集合內進行最有選擇,而是隨機選擇出特定數量的集合,然後選擇最優節點投票。這個目的是保證選舉結果的數量達到穩定值,保證網路的穩定性,並且排除節點排名較靠後的節點。

已經有了投票的基礎資料後,在特定階段環節進行唱票工作,所有節點在唱票階段通過讀取區塊進行唱票,將區塊中所有的投票資料提取出來進行統計。在投票階段會將投票的資料寫入voteindex。

將獲得投票的所有節點作為乙個集合,從中選出特定數量的節點,作為下一輪的高效能節點。因此需要對該結合中的節點進行排名操作,排名的依據是voteindex的均值。

在注2中可以看到幾個與次文關係較密切的字段,分別是candaddress,miner以及voteindex。

miner:產生區塊的節點。

candaddress:是由miner根據內層選舉的3個關鍵因素確定的。

voteindex:是candaddress所對應的因素加權結果值。

從投票到唱票的所有環節,所有節點均存在校驗機制,確保節點無法進行虛假投票和唱票,如果投票偽造,則該區塊會被其他節點拒收;如果唱票偽造,則會被其他節點踢出網路。

注2:區塊部分內容。

具體投票機制可能根據最新的需求會調整,請及時參考最新的**。

HPB芯鏈 共識演算法選舉機制描述

為了適應boe技術的要求,同時盡可能的提公升安全tps,hpb共識演算法採用了高效的雙層選舉機制,即外層選舉和內層選舉。外層選舉 由具有boe板卡的所有使用者中選取出。選取週期為3個月。選取方式為通過hpb錢包進行投票選舉。內層選舉 採用節點貢獻值評價指標,從眾多候選節點中選出高貢獻值節點成員。基於...

Leader Election 選舉演算法

今天講一講分布式系統中必不可少的選舉演算法。leader 就是一堆伺服器中的協調者,某乙個時刻只能有乙個leader且所有伺服器都承認這個leader.leader election就是在一組程序中,選舉乙個leader且讓該組的程序都同意這個leader.假設有n個process,每個proces...

Raft選舉演算法

目標 分布式集群中,選舉leader,保持資料一致性 集群中每個節點都有三種狀態 follower 純小弟 candidate 候選人。我原來是小弟,但我現在想當老大 leader 老大 集群狀態 有明確的老大 穩定狀態 沒有老大,選舉中 有老大的狀態 follower內有倒計時 150ms 300...