去年年底參加Polkadot在北京聚會(huì)后,就一直在期待官方關(guān)于Staking這塊的經(jīng)濟(jì)與治理計(jì)劃,雖然最終方案還沒(méi)有定下,但是Web3地研究文檔看起來(lái)相當(dāng)完整了,整個(gè)設(shè)計(jì)讓我有驚艷的感覺(jué),看了很多以PoS為共識(shí)的項(xiàng)目,關(guān)于Staking經(jīng)濟(jì)的設(shè)計(jì)都不盡相同,新項(xiàng)目總會(huì)學(xué)習(xí)過(guò)往項(xiàng)目,這次Polkadot帶來(lái)的NPoS是具備相當(dāng)創(chuàng)新程度,且一定程度解決PoS的現(xiàn)有問(wèn)題。
Polkadot可以寫(xiě)的東西還很多,這篇文章將會(huì)主要環(huán)繞Staking部分與NPoS公式挑選驗(yàn)證人節(jié)點(diǎn)的方法,這兩個(gè)方面與持幣人與節(jié)的收益有非常密切的關(guān)系。
簡(jiǎn)單為大家復(fù)習(xí)一下PoS共識(shí)項(xiàng)目的完整出塊過(guò)程
1. 團(tuán)隊(duì)運(yùn)行節(jié)點(diǎn)
2. 注冊(cè)成為驗(yàn)證人
(過(guò)了基本門(mén)檻)
3. Staking過(guò)程
(持幣人委托給節(jié)點(diǎn),或是團(tuán)隊(duì)自由代幣進(jìn)行Staking委托)
4. 選舉驗(yàn)證人
(系統(tǒng)通過(guò)某種算法選出每一輪的出塊節(jié)點(diǎn)或是驗(yàn)證節(jié)點(diǎn),這篇文章細(xì)說(shuō)的就是Polkadot的NPoS選舉算法)
5. 打包交易、廣播交易、驗(yàn)證人確認(rèn)一連串過(guò)程
6. 獲得獎(jiǎng)勵(lì)
(獎(jiǎng)勵(lì)是由節(jié)點(diǎn)與持幣人按照Staking比例分配)
從持幣人的角度,更簡(jiǎn)單理解PoS
持幣人擁有以PoS為共識(shí)的代幣Moon,將Moon進(jìn)行Staking委托給喜歡的節(jié)點(diǎn),節(jié)點(diǎn)代持幣人進(jìn)行出塊并獲得獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)依照Staking比例進(jìn)行分發(fā)。(Staking比例=持幣人參與Staking的Moon數(shù)量/所有參與Staking的Moon數(shù)量)。
上面提到的是一般的PoS項(xiàng)目計(jì)算獎(jiǎng)勵(lì)的做法(獎(jiǎng)勵(lì)多寡與持幣人Staking量為正相關(guān))
Polkadot提出了NPoS, 初衷是為了解決過(guò)去PoS運(yùn)行后,遇到的問(wèn)題,因?yàn)楠?jiǎng)勵(lì)與Staking量正相關(guān)造成富有節(jié)點(diǎn)更富有,代幣分配趨向中心化。
NPoS里最終獎(jiǎng)勵(lì)結(jié)果不是依據(jù)Staking量,而是依據(jù)每個(gè)被選出節(jié)點(diǎn)確實(shí)出塊的工作量計(jì)算(白話來(lái)說(shuō)就是不管節(jié)點(diǎn)擁有多少Staking量,出一個(gè)塊或是驗(yàn)證一個(gè)塊得到的獎(jiǎng)勵(lì)是一樣的),NPoS將解決一部分大節(jié)點(diǎn)因?yàn)镾taking量大獲得更多獎(jiǎng)勵(lì)的問(wèn)題,但同時(shí)也損害了一些大節(jié)點(diǎn)利益。
PS: 個(gè)人意見(jiàn)一般項(xiàng)目在初期不一定適合這樣的做法,這是一個(gè)博弈過(guò)程,Polkadot是一個(gè)明星項(xiàng)目,他認(rèn)為大多數(shù)的人愿意參與到網(wǎng)路中,即使超過(guò)一定Staking量的節(jié)點(diǎn)不會(huì)獲得如預(yù)期那么多的收益,他們還是愿意貢獻(xiàn)
Polkadot究竟是怎么做到的呢?
NPoS既然有別于傳統(tǒng)PoS項(xiàng)目,不是Staking權(quán)重越高出塊概率越高,我們就要詳細(xì)說(shuō)明下NPoS選舉驗(yàn)證人的算法。
非常詳細(xì)的文檔在Web3的研究中,另外有一篇medium文章“How Nominated Proof-of-Stake will work in Polkadot”,我參考了里面的舉例(Web 3研究中有很多數(shù)學(xué),如果發(fā)現(xiàn)我的邏輯錯(cuò)誤請(qǐng)告訴我)
NPoS的共識(shí)算法歷史
NPoS參考了當(dāng)時(shí)19世紀(jì)末,一個(gè)瑞典數(shù)學(xué)家Lars Edvard Phragmén提議的選舉方法,當(dāng)時(shí)瑞典的國(guó)會(huì)席位都是被主流黨派占據(jù),通過(guò)他的算法能更公平的讓席位分配是和投票的比例有更高的聯(lián)系,小黨派能夠獲取過(guò)去沒(méi)有辦法獲得的席位,Polkadot團(tuán)隊(duì)認(rèn)為兩者在設(shè)計(jì)理念上有相似之處,改良后就是現(xiàn)在看到的NPoS。
NPoS的選舉人算法,我們都知道區(qū)塊鏈這個(gè)分布式系統(tǒng)是由眾多分散各地的節(jié)點(diǎn)(驗(yàn)證人)來(lái)維護(hù),在PoS共識(shí)里大部分的鏈為了保證一定效率及安全下,會(huì)限制一定數(shù)量的驗(yàn)證人進(jìn)行出塊,也就是沒(méi)有被選上的驗(yàn)證人就只是備選出塊人,而NPoS就是從一群驗(yàn)證人中選取出正式驗(yàn)證人,Polkadot里把一群正式驗(yàn)證人成為選舉人委員會(huì)(Committee)。
選舉人算法有三大客觀目標(biāo)
1. 平衡Balance
一旦選舉人委員會(huì)確定后,會(huì)將持幣人Nominators的Staking量盡可能平均分配給每個(gè)選上的選舉人Validators。
PS: 持幣人是可以選擇多個(gè)選舉人的,所以存在系統(tǒng)重新分配空間
2. 最大支持Support
選出一個(gè)選舉人委員會(huì),委員會(huì)中的選舉人Validators收到的Staking量要盡可能貼近總持幣用戶Nominators的Staking量。
3. 公平代表FairRepresentation
選出一個(gè)選舉人委員會(huì),其中持幣人Nominators的投票權(quán)不會(huì)被過(guò)度代表,也不會(huì)被低估代表。
PS: 持幣人可以選擇多個(gè)節(jié)點(diǎn),公平代表最簡(jiǎn)化是,每個(gè)持幣人對(duì)應(yīng)到的節(jié)點(diǎn)至少有一個(gè)會(huì)被選出,加上現(xiàn)實(shí)條件(持幣狀況及系統(tǒng)要選出幾個(gè)節(jié)點(diǎn))后有些節(jié)點(diǎn)會(huì)被淘汰,但盡可能保證擁有一定Staking權(quán)重的持幣人可以至少對(duì)應(yīng)到一個(gè)節(jié)點(diǎn)。
基于這三大原則篩選出來(lái)的驗(yàn)證人群(選舉人委員會(huì))可能有多個(gè),最終系統(tǒng)會(huì)挑選出一組最合理的Committee(選舉人委員會(huì))進(jìn)行出塊,看起來(lái)很復(fù)雜很懵吧,我最開(kāi)始也繞了很久,接下來(lái)會(huì)搭配下面持幣人選舉驗(yàn)證人的例子,大家會(huì)更加清晰的理解,建議先快速看過(guò)這個(gè)例子,然后閱讀過(guò)程中搭配上面三個(gè)選舉人算法的客觀目標(biāo)思考,最后再仔細(xì)看一次例子。
這是Medium上官方人員的舉例(我會(huì)協(xié)助大家更好的理解)
假設(shè)有5個(gè)持幣人(左邊),5個(gè)節(jié)點(diǎn)(右邊),要從中選出4個(gè)節(jié)點(diǎn)進(jìn)行出塊,為了簡(jiǎn)化模型先忽略節(jié)點(diǎn)自己擁有Staking量
下面是選舉結(jié)果的舉例(我一一為大家說(shuō)明)
第一張圖(最左邊)
并不符合公平代表(FairRepresentation)的目標(biāo),因?yàn)閳D中第一個(gè)持幣人擁有10Dot的權(quán)重, 相比第五個(gè)持幣人只有3Dot的權(quán)重,最終卻沒(méi)有對(duì)應(yīng)到任何他支持的節(jié)點(diǎn),不符合公平代表目標(biāo)擁有一定Staking權(quán)重的持幣人至少對(duì)應(yīng)到一個(gè)節(jié)點(diǎn)(在現(xiàn)在情況下,第一個(gè)持幣人是拿不到獎(jiǎng)勵(lì)的)。
第二張圖
符合公平代表(FairRepresentation)的目標(biāo),有些人可能會(huì)質(zhì)疑為什么E節(jié)點(diǎn)選上了,而B(niǎo)節(jié)點(diǎn)沒(méi)有選上,這和接下來(lái)會(huì)舉例的重新分配算法相關(guān),這邊簡(jiǎn)單理解,圖中第二個(gè)持幣人同時(shí)支持了3個(gè)節(jié)點(diǎn),系統(tǒng)只要保證他支持的節(jié)點(diǎn)至少有一個(gè)被選舉上就好(這邊他支持的節(jié)點(diǎn)有兩個(gè)選上,第二個(gè)持幣人所有Staking量將會(huì)被分配到這兩個(gè)節(jié)點(diǎn)上),同時(shí)保持第五個(gè)持幣人也有支持的節(jié)點(diǎn)E,對(duì)于Polkadot這樣的選舉結(jié)果是可能之一。
第三張圖
符合公平代表(FairRepresentation)的目標(biāo),有些人可能會(huì)質(zhì)疑這個(gè)與第二張圖產(chǎn)生矛盾,目標(biāo)是盡可能讓每個(gè)持幣人最少要有一個(gè)支持節(jié)點(diǎn)被選上,那第5個(gè)持幣人支持的節(jié)點(diǎn)沒(méi)有被選上,因?yàn)檎麄€(gè)系統(tǒng)只需要選出4個(gè)節(jié)點(diǎn),所以第五個(gè)Staking權(quán)重低的持幣人支持的節(jié)點(diǎn)沒(méi)有選上的結(jié)果是可能之一。
以下是上述兩個(gè)符合公平原則的選舉人委員會(huì)可能結(jié)果,確立選舉人委員會(huì)后系統(tǒng)還要經(jīng)過(guò)Staking權(quán)重重新分配
Polkadot系統(tǒng)會(huì)在每次從中選出一個(gè)更公平分配且具備安全性的結(jié)果,這個(gè)例子中選擇右邊因?yàn)樗骄峙涞母茫疫叺墓?jié)點(diǎn)中平均最低都擁有了9的Staking權(quán)重。
以上就介紹完P(guān)olkadot的選舉算法了,上面的邏輯非常的繞,背后的數(shù)學(xué)更是復(fù)雜,官方的舉例是在一個(gè)簡(jiǎn)單的情況下,真實(shí)情況如果放大到100個(gè)節(jié)點(diǎn),每個(gè)持幣人Staking權(quán)重都不同,同時(shí)又委托給多個(gè)節(jié)點(diǎn),就會(huì)相當(dāng)相當(dāng)復(fù)雜,大家可以多思考幾遍,依照上面提到的三大目標(biāo),每一個(gè)目標(biāo)都可以當(dāng)作標(biāo)準(zhǔn)檢驗(yàn)一遍,就能夠更明白。
NPoS這個(gè)選舉算法動(dòng)態(tài)分配持幣人Staking權(quán)重,還基于一些規(guī)則挑選出最后的選上的節(jié)點(diǎn),對(duì)現(xiàn)有的PoS生態(tài)中造成了一些不同
1. 在持幣人可以選擇多個(gè)節(jié)點(diǎn)下,大節(jié)點(diǎn)不努力爭(zhēng)取社區(qū)支持,也有機(jī)會(huì)在算法下被排除在外(如圖二中間B節(jié)點(diǎn))
2. 在平衡staking量目標(biāo)下,小且沒(méi)有資本的節(jié)點(diǎn)更有利,因?yàn)橹灰鐓^(qū)中越多人選擇它,在系統(tǒng)分配Staking量的機(jī)制下,選上出塊可以獲得獎(jiǎng)勵(lì)概率更高(如圖二右邊D節(jié)點(diǎn))
3. 在平衡staking量目標(biāo)下,大節(jié)點(diǎn)利潤(rùn)相對(duì)被壓縮,大節(jié)點(diǎn)需要思考是否將自己的幣委托出去,能獲得更多利潤(rùn)
4. 持幣人更有動(dòng)機(jī)去選擇小節(jié)點(diǎn),利潤(rùn)更高,因?yàn)楠?jiǎng)勵(lì)是依據(jù)被選上節(jié)點(diǎn)的工作量計(jì)算的,只要持幣人支持的小節(jié)點(diǎn)成功選上進(jìn)行出塊,小節(jié)點(diǎn)上累積的Staking的權(quán)重沒(méi)有那么高,不同持幣人依據(jù)委托給小節(jié)點(diǎn)的Staking比例分獎(jiǎng)勵(lì),相對(duì)于委托給大節(jié)點(diǎn),委托給小結(jié)點(diǎn)利潤(rùn)更高(就想像每個(gè)節(jié)點(diǎn)都賺10塊錢(qián),大節(jié)點(diǎn)需要和100個(gè)人分,小節(jié)點(diǎn)只需要和30個(gè)人分)
Polkadot到底想解決現(xiàn)有PoS什么問(wèn)題
1. 一部分不可避免地中心化問(wèn)題
2. 低手續(xù)費(fèi)未來(lái)不會(huì)無(wú)限地吸引staking量,因?yàn)槭找媸强垂?jié)點(diǎn)工作量
(現(xiàn)在Cosmos上就出現(xiàn)0手續(xù)費(fèi)節(jié)點(diǎn)吸引大量持幣人委托,在Polkadot里這樣高Staking權(quán) 重的節(jié)點(diǎn)與普通Staking權(quán)重的節(jié)點(diǎn)獲得的收益是一樣的)
3. 持幣人可以通過(guò)挑選不同節(jié)點(diǎn)最大化自己利益,同時(shí)促進(jìn)去中心化
(對(duì)于持幣人就可以有多種委托策略,我可以挑選安全可靠的節(jié)點(diǎn),同時(shí)也可以挑選一些小但是也挺靠譜節(jié)點(diǎn),可以獲得更高收益率)
Polkadot在整個(gè)機(jī)制其實(shí)非常復(fù)雜,我可能也有漏掉的地方,怎么攻擊這樣的機(jī)制,包掛選舉算法到底有沒(méi)有漏洞可以鉆,都需要專業(yè)人士投入大量精力區(qū)專研,這邊就不進(jìn)行討論。
評(píng)論
查看更多