EOS 共识机制 (1)DPOS共识介绍
1. POS
出塊不再由算力說了算,由節點持有的stake說了算,解決了POW算力資源被大量無用消耗,但由于無條件信任代表,節點作惡非常容易 , 比如nothing at stake攻擊
2. 原理
step1. 全網持有代幣的人可以通過投票系統選舉出一定數量的節點作為區塊生產者(根據其持有的EOS的數量1:1獲得選票)
投票選出21個區塊生產者
- 區塊產生是以21個區塊為一個周期。
- 在每個出塊周期開始時,21個區塊生產者會被投票選出。
- 前20名出塊者首選自動選出,第21個出塊者按所得投票數目對應概率選出。
step2. 被選舉的節點相互協作,按照一定的順序,輪流進行記賬。
所選擇的生產者會根據從塊時間導出的偽隨機數進行混合。以便保證出塊者之間的連接盡量平衡。
step3. 記賬
21個區塊生產者,不僅記賬,還需要提供EOS全鏈所需要的計算和網絡資源(包括CPU、內存、存儲容量等等)。
2.1 最長鏈原則
在正常情況下,DPOS塊鏈不會經歷任何叉,因為塊生產者合作生產區塊而不是競爭。
-
如果有區塊分叉,共識將自動切換到最長的鏈條。
-
約定每個節點不能同時在兩個鏈上出塊(否則節點將被判定為違規,且失去資格),這使得當產生分叉之后,最多過一半見證人節點總數的高度之后(在EOS里是11個區塊高度),就只會保留一條鏈了。
-
具有更多生產者的區塊鏈長度將比具有較少生產者的區塊鏈增長速度更快。
2.2 優勢 : 解決了POW耗電
- 節點由競爭改為協作,并且只有21個節點,更加容易迅速的達成共識,有利于提升主鏈的性能(TPS)。
- 不會產生硬分叉,因為節點也會遵循最長鏈原則,并且每個節點不能同時參與兩條鏈。所以,當產生分叉之后,最多過一半見證人節點總數的高度之后(在EOS里是11個區塊高度),就只會保留一條鏈了。每次系統大升級也不會導致硬分叉,只需要讓所有見證人節點同時升級即可。
- 安全性更強,要控制超過2/3的節點才能夠將錯誤的區塊定為不可逆狀態。
- 確認速度非常快
2.3 問題
-
弱中心化
-
隨著這些見證人節點存在的時間的推移,由于參與記賬的獎勵,會使得中心化程度越來越高。這對整個社群可能是潛在的風險。(根據以往基于DPOS模式的項目,例如BitShares和Steemit來看,確實最終的中心化程度非常高,有一段時間絕大部分的見證人實際上是BM自己或受BM控制的節點)
-
DPoS挖礦需要抵押代幣來完成挖礦,這種“礦機”就是網絡不可分割的一部分。如果挖礦節點被攻擊,比如被惡意控制,那全網能充當“礦機”的幣也會被惡意控制,如果要恢復,只能硬分叉換一條鏈
(PoW 挖礦的礦機本身是和網絡完全分離的,也就是說礦機可以不算是網絡的一部分,礦機提供的算力才是網絡的一部分,而若礦機全部毀了,那么只要能另行找到提供算力的東西就可以)
2.4 EOS.IO優化
預計每3秒生產一個區塊,任何時刻,只有一個生產者被授權產生區塊。如果在某個時間內沒有成功出塊,會發生跳塊,下一個記賬節點仍會跟上繼續記賬。
-
保障了哪怕最后只有一個節點在工作,整個系統仍然可以工作下去,然后繼續選擇新的節點從而保證運行穩定。
-
如果出塊者錯過了一個塊,并且在最近24小時內沒有產生任何塊,則這個出塊者將被刪除。這確保了網絡的順利運行。
總結
以上是生活随笔為你收集整理的EOS 共识机制 (1)DPOS共识介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 石墨烯区块链(6)开发实例
- 下一篇: EOS 共识机制 (3)DPOS+BFT