
去年年底參加Polkadot在北京聚會後,就一直在期待官方關於Staking這塊的經濟與治理計劃,雖然最終方案還沒有定下,但是Web3地研究文檔看起來相當完整了,整個設計讓我有驚豔的感覺,看了很多以PoS為共識的項目,關於Staking經濟的設計都不盡相同,新項目總會學習過往項目,這次Polkadot帶來的NPoS是具備相當創新程度,且一定程度解決PoS的現有問題。
Polkadot可以寫的東西還很多,這篇文章將會主要環繞Staking部分與NPoS公式挑選驗證人節點的方法,這兩個方面與持幣人與節的收益有非常密切的關係
如果對Polkadot的背景沒有了解的朋友可以先看我過去的文章,我就直接開始主題了。
簡單為大家複習一下PoS共識項目的完整出塊過程
1. 團隊運行節點
2. 註冊成為驗證人
(過了基本門檻)
3. Staking過程
(持幣人委託給節點,或是團隊自由代幣進行Staking委託)
4. 選舉驗證人
(系統通過某種算法選出每一輪的出塊節點或是驗證節點,這篇文章細說的就是Polkadot的NPoS選舉算法)
5. 打包交易、廣播交易、驗證人確認一連串過程
二級標題
二級標題
從持幣人的角度,更簡單理解PoS
持幣人擁有以PoS為共識的代幣Moon,將Moon進行Staking委託給喜歡的節點,節點代持幣人進行出塊並獲得獎勵,獎勵依照Staking比例進行分發。 (Staking比例=持幣人參與Staking的Moon數量/所有參與Staking的Moon數量)。
上面提到的是一般的PoS項目計算獎勵的做法(獎勵多寡與持幣人Staking量為正相關)
Polkadot提出了NPoS, 初衷是為了解決過去PoS運行後,遇到的問題,因為獎勵與Staking量正相關造成富有節點更富有,代幣分配趨向中心化。
二級標題
二級標題
Polkadot究竟是怎麼做到的呢?
二級標題
二級標題
NPoS的共識算法歷史
二級標題
二級標題
選舉人算法有三大客觀目標
1. 平衡Balance
一旦選舉人委員會確定後,會將持幣人Nominators的Staking量盡可能平均分配給每個選上的選舉人Validators。
PS: 持幣人是可以選擇多個選舉人的,所以存在系統重新分配空間
2. 最大支持Support
選出一個選舉人委員會,委員會中的選舉人Validators收到的Staking量要盡可能貼近總持幣用戶Nominators的Staking量。
3. 公平代表FairRepresentation
選出一個選舉人委員會,其中持幣人Nominators的投票權不會被過度代表,也不會被低估代表。
PS: 持幣人可以選擇多個節點,公平代表最簡化是,每個持幣人對應到的節點至少有一個會被選出,加上現實條件(持幣狀況及系統要選出幾個節點)後有些節點會被淘汰,但盡可能保證擁有一定Staking權重的持幣人可以至少對應到一個節點。
基於這三大原則篩選出來的驗證人群(選舉人委員會)可能有多個,最終系統會挑選出一組最合理的Committee(選舉人委員會)進行出塊,看起來很複雜很懵吧,我最開始也繞了很久,接下來會搭配下面持幣人選舉驗證人的例子,大家會更加清晰的理解,建議先快速看過這個例子,然後閱讀過程中搭配上面三個選舉人算法的客觀目標思考,最後再仔細看一次例子。
這是Medium上官方人員的舉例(我會協助大家更好的理解)
假設有5個持幣人(左邊),5個節點(右邊),要從中選出4個節點進行出塊,為了簡化模型先忽略節點自己擁有Staking量
下面是選舉結果的舉例(我一一為大家說明)
第一張圖(最左邊)
並不符合公平代表(FairRepresentation)的目標,因為圖中第一個持幣人擁有10Dot的權重, 相比第五個持幣人只有3Dot的權重,最終卻沒有對應到任何他支持的節點,不符合公平代表目標擁有一定Staking權重的持幣人至少對應到一個節點(在現在情況下,第一個持幣人是拿不到獎勵的)。
第二張圖
符合公平代表(FairRepresentation)的目標,有些人可能會質疑為什麼E節點選上了,而B節點沒有選上,這和接下來會舉例的重新分配算法相關,這邊簡單理解,圖中第二個持幣人同時支持了3個節點,系統只要保證他支持的節點至少有一個被選舉上就好(這邊他支持的節點有兩個選上,第二個持幣人所有Staking量將會被分配到這兩個節點上),同時保持第五個持幣人也有支持的節點E,對於Polkadot這樣的選舉結果是可能之一。
第三張圖
符合公平代表(FairRepresentation)的目標,有些人可能會質疑這個與第二張圖產生矛盾,目標是盡可能讓每個持幣人最少要有一個支持節點被選上,那第5個持幣人支持的節點沒有被選上,因為整個系統只需要選出4個節點,所以第五個Staking權重低的持幣人支持的節點沒有選上的結果是可能之一。
以下是上述兩個符合公平原則的選舉人委員會可能結果,確立選舉人委員會後系統還要經過Staking權重重新分配
Polkadot系統會在每次從中選出一個更公平分配且具備安全性的結果,這個例子中選擇右邊因為它平均分配的更好,右邊的節點中平均最低都擁有了9的Staking權重。
以上就介紹完Polkadot的選舉算法了,上面的邏輯非常的繞,背後的數學更是複雜,官方的舉例是在一個簡單的情況下,真實情況如果放大到100個節點,每個持幣人Staking權重都不同,同時又委託給多個節點,就會相當相當複雜,大家可以多思考幾遍,依照上面提到的三大目標,每一個目標都可以當作標準檢驗一遍,就能夠更明白。
NPoS這個選舉算法動態分配持幣人Staking權重,還基於一些規則挑選出最後的選上的節點,對現有的PoS生態中造成了一些不同。
1. 在持幣人可以選擇多個節點下,大節點不努力爭取社區支持,也有機會在算法下被排除在外(如圖二中間B節點)
2. 在平衡staking量目標下,小且沒有資本的節點更有利,因為只要社區中越多人選擇它,在系統分配Staking量的機制下,選上出塊可以獲得獎勵概率更高(如圖二右邊D節點)
二級標題
二級標題
Polkadot到底想解決現有PoS什麼問題
1. 一部分不可避免地中心化問題
2. 低手續費未來不會無限地吸引staking量,因為收益是看節點工作量
(現在Cosmos上就出現0手續費節點吸引大量持幣人委託,在Polkadot裡這樣高Staking權重的節點與普通Staking權重的節點獲得的收益是一樣的)
3. 持幣人可以通過挑選不同節點最大化自己利益,同時促進去中心化
(對於持幣人就可以有多種委託策略,我可以挑選安全可靠的節點,同時也可以挑選一些小但是也挺靠譜節點,可以獲得更高收益率)
Polkadot在整個機制其實非常複雜,我可能也有漏掉的地方,怎麼攻擊這樣的機制,包掛選舉算法到底有沒有漏洞可以鑽,都需要專業人士投入大量精力區專研,這邊就不進行討論。
這是解讀Polkadot機制的第一篇,未來正式參數與測試網出出來後也會給大家更多的例子。