1. 程式人生 > >共識演算法-DPoS(股份授權證明)演算法

共識演算法-DPoS(股份授權證明)演算法


title: 共識演算法-DPoS(股份授權證明)演算法
tags: 區塊鏈,共識演算法,DPoS


DPoS

        PoW機制和PoS機制雖然都能有效地解決記賬行為的一致性共識問題, 但是現有的比特幣PoW機制純粹依賴算力, 導致專業從事挖礦的礦工群體似乎已和比特幣社群完全分隔, 某些礦池的巨大算力儼然成為另一箇中心, 這與比特幣的去中心化思想相沖突。 PoS機制雖然考慮到了PoW的不足, 但依據權益結餘來選擇, 會導致首富賬戶的權力更大, 有可能支配記賬權。 股份授權證明機制( Delegated Proof of Stake, DPoS) 的出現正是基於解決PoW機制和PoS機制的這類不足。

DPoS 原理

        以位元股為例來說, DPoS機制是讓每一個持有BTS( 位元股發行的一種加密貨幣) 的人對為整個系統資源當代表的人進行投票, 而獲得票數最多的101個代表將進行交易打包計算。 對此, 可以理解為有101個礦池, 這101個礦池彼此的權利是完全對等的。 那些握著BTS選票的人可以隨時通過投票更換這些代表( 礦池) , 但如果他們提供的算力不穩定, 計算機宕機或試圖利用手中的權力作惡, 那將會立刻被憤怒的選民們踢出整個系統, 而後備代表可以隨時頂上去。 從某種角度來看,DPoS有點像美國的議會制度, 只不過不是四年一次選舉, 而是時刻都在選舉中。

DPoS 執行機制

DPoS在PoS 股份授權證明機制引入了“受託人”的角色。運作機制如下:

1.所有持幣人投票選出101受託人負責簽署區塊。這個過程相當於股東會選舉董事會(董事會有101個人),董事會代替股東決策公司運營。因為董事會的人數(101人)相比較全部的股東的人數少很多很多,所以意見也比較容易同意,所以效率會更高。(相較於PoW每10分鐘產生一個區塊,DPoS每3秒鐘即可產生一個區塊。)

2.DPoS對於分叉的處理也採用是最長鏈。每個受託人必須按照生產排程,輪流產生區塊。大家必須輪到自己的時候才能出塊。

3.如果有惡意節點產生分叉,假設A,C都是誠實節點,B是惡意節點,由於B產生區塊的速度慢於A,C合力產生區塊的速度,最長鏈勝出規則,誠實節點的鏈會勝出。同一個節點要產生重複兩個區塊的速度也要慢於誠實節點合作產生區塊的速度,所以最長鏈勝出規則會保證誠實節點的鏈會勝出。

4.如果A、B、C三個受託人的網路有段時間是碎片化、各自為政的,在短期內的確有可能三鏈並行,但一旦網路連結恢復,短鏈自然會向最長的鏈迴歸。

因為受託可簽署人數為奇數,所以兩大派系勢均力敵僵持不下的情況不會維持太久,最終勢必會有其中一方的鏈更長。

DPoS的優缺點

優點

  • 能耗更低: DPoS機制將節點數量進一步減少到101個,在保證網路安全的前提下,整個網路的能耗進一步降低,網路執行成本最低。

  • 更加去中心化: 相比PoW的算力掌握在幾個大礦池手中,而礦池是中心化的;相比PoS,小散不挖礦,大戶挖礦,幣也會越來越集中。而DPoS使得幣更加分散化,每個擁幣者都有根據幣數量的權力,但實際情況是小散沒啥動力投票,大戶有大的話語權。

  • 效率更高: 每個塊的時間為10秒,一筆交易(在得到6-10個確認後)大概1分鐘,一個完整的101個塊的週期大概僅僅需要16分鐘。

缺點

  • 投票積極性低: 小散投票積極性不高(90%+的人為進行過投票)。其實這跟民主社會,投票積極性不高的道理是一樣的,投票沒有多少收益,而不投票能避免投票所花的成本。

  • 壞節點處理效率低: 壞節點不能被即時處理,總是要經過一個選舉才能清除壞節點,這樣會給網路造成安全隱患。