详解DPoS共识算法
一、DPoS 的誕生
想象這樣一家公司:公司員工總數(shù)有1000人,每個人都持有數(shù)額不等的公司股份。每隔一段時間,員工可以把手里的票投向自己最認(rèn)可的10個人來領(lǐng)導(dǎo)公司,其中每個員工的票權(quán)和他手里持有的股份數(shù)成正比。等所有人投完票以后,得票率最高的10個人成為公司的領(lǐng)導(dǎo)。如果有領(lǐng)導(dǎo)能力不勝任或做了不利于公司的事,那員工可以撤銷對改領(lǐng)導(dǎo)的投票,讓他的得票率無法進(jìn)入前10名,從而退出管理層。這就是對DPoS(Delegated Proof of Stake)共識機(jī)制的一個形象描述。
DPoS 是一種區(qū)塊鏈的共識算法, 2014年4月由Bitshares 的首席開發(fā)者 Dan Larimer (現(xiàn)為EOS CTO)提出并應(yīng)用。當(dāng)時Dan觀察到比特幣系統(tǒng)共識算法POW的一些問題:比如礦池導(dǎo)致算力越來越集中、電力耗費(fèi)過大等。所以他提出了一種更加快速、安全且能源消耗比較小的算法,這就是后來的DPOS。
二、DPoS的選舉機(jī)制
在DPoS共識算法中,區(qū)塊鏈的正常運(yùn)轉(zhuǎn)依賴于受托人(Delegates),這些受托人是完全等價的。受托人的職責(zé)主要有:
1. 提供一臺服務(wù)器節(jié)點(diǎn),保證節(jié)點(diǎn)的正常運(yùn)行;
2. 節(jié)點(diǎn)服務(wù)器收集網(wǎng)絡(luò)里的交易;
3. 節(jié)點(diǎn)驗(yàn)證交易,把交易打包到區(qū)塊;
4. 節(jié)點(diǎn)廣播區(qū)塊,其他節(jié)點(diǎn)驗(yàn)證后把區(qū)塊添加到自己的數(shù)據(jù)庫;
5. 帶領(lǐng)并促進(jìn)區(qū)塊鏈項(xiàng)目的發(fā)展;
受托人的節(jié)點(diǎn)服務(wù)器相當(dāng)于比特幣網(wǎng)絡(luò)里的礦機(jī),在完成本職工作的同時可以領(lǐng)取區(qū)塊獎勵和交易的手續(xù)費(fèi)。
一個區(qū)塊鏈項(xiàng)目的受托人個數(shù)由項(xiàng)目發(fā)起方?jīng)Q定,一般是101個受托人。任何一個持幣用戶都可以參與到投票和競選受托人這兩個過程中。用戶可以隨時投票、撤票,每個用戶投票的權(quán)重和自己的持幣量成正比。投票和撤票可以隨時進(jìn)行,在每一輪(round)選舉結(jié)束后,得票率最高的101(一般為101,也可以是其他數(shù)字,具體由區(qū)塊鏈項(xiàng)目方?jīng)Q定)個用戶則成為該項(xiàng)目的受托人,負(fù)責(zé)打包區(qū)塊、維持系統(tǒng)的運(yùn)轉(zhuǎn)并獲得相應(yīng)的獎勵。
選舉的根本目的,是通過每個人的投票選舉出社區(qū)里對項(xiàng)目發(fā)展和運(yùn)行最有利的101個用戶。這101個用戶的服務(wù)器節(jié)點(diǎn)既可以高效維護(hù)系統(tǒng)的運(yùn)轉(zhuǎn),而他們也會貢獻(xiàn)自己的能力促進(jìn)區(qū)塊鏈項(xiàng)目的發(fā)展,這有點(diǎn)類似于我國的‘人民代表’制度(但是周期更短、效率更高)。通過這種方式,既達(dá)到了去中心化的選舉共識,又保證了整個系統(tǒng)的運(yùn)行效率和減少能源浪費(fèi)。
三、DPoS的偽代碼實(shí)現(xiàn)
先來看一下DPoS的偽代碼實(shí)現(xiàn):
for round i //分成很多個round,round無限持續(xù)dlist_i = get N delegates sort by votes //根據(jù)投票結(jié)果選出得票率最高的N個受托人dlist_i = shuffle(dlist_i) //隨機(jī)改變順序loop //round完了,退出循環(huán)slot = global_time_offset / block_intervalpos = slot % Nif dlist_i[pos] exists in this node //delegate在這個節(jié)點(diǎn)generateBlock(keypair of dlist_i[pos]) //產(chǎn)生blockelseskip偽代碼參考了用偽代碼理解DPoS
可以看到,在每一輪循環(huán)里,系統(tǒng)會重新統(tǒng)計(jì)得票排名。在選出最高的N個受托人里,系統(tǒng)采用先打亂順序,然后受托人依此生產(chǎn)區(qū)塊。一輪區(qū)塊生產(chǎn)完畢后進(jìn)入下一個周期。
四、知名 DPoS 項(xiàng)目
1. Bitshares
最早應(yīng)用DPoS機(jī)制的項(xiàng)目,其DPoS機(jī)制里包含見證人(Witnesses)和受托人(Delegates), 見證人負(fù)責(zé)區(qū)塊的打包,受托人負(fù)責(zé)系統(tǒng)參數(shù)的修改。
2. EOS
共識算法我DPoS + BFT, 有21個受托人。
3. Asch
共識算法為DPoS + PBFT, 有101個受托人, 目前正在開放競選。
參考:
Explain Delegated Proof of Stake Like I’m 5 – Hacker Noon
Delegated Proof of Stake (DPOS) vs Proof of Work (POW)
DPOS Consensus Algorithm - The Missing White Paper — Steemit
Delegated Proof-of-Stake Consensus - BitShares
Delegated Proof of Stake (DPOS) White Paper by Daniel Larimer
Explanation of DPoS+BFT
https://zhuanlan.zhihu.com/p/34107097
總結(jié)
以上是生活随笔為你收集整理的详解DPoS共识算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通俗易懂理解PBFT拜占庭容错的回答
- 下一篇: Paxos算法小结