作者:文檔 / 來源:PlatON
公鏈設計原則
經濟學研究的核心問題之一是稀缺資源的合理配置。公鏈作為開放、自由、人人可參與的分布式系統。一個精心設計的經濟模型可以在最大化參與者利益的前提下,保證公鏈資源的合理配置,同時將各參與者的利益與公鏈的整體利益對齊,使其在追求自身經濟利益的同時也能對整個區塊鏈網絡做出貢獻,保證網絡能夠長期穩定地發展下去。
具體的說,公鏈經濟設計需要考慮以下問題:
分布式經濟體及其中基礎設施付費問題
分布式經濟體的核心是稀缺資源的生產和分配,并且稀缺資源配置通過市場機制而非中心化方式進行。分布式經濟體由社區自治,經濟活動的基礎設施由社區共建、共享。
在與公鏈有關的分布式經濟體中,最重要的基礎設施是分布式賬本(可以稱為分布式信任基礎設施)。礦工作為分布式經濟體核心成員,維護分布式賬本,并需要承擔一定成本和風險。PoW礦工需要承擔高額的硬件投資和電力花銷。PoS礦工需要鎖定一定數量的Token,承擔Token的流動性成本和錢包安全風險成本。
要激勵礦工維護分布式賬本,就必須補償他們承擔的成本和風險。礦工激勵問題本質上就是如何為基礎設施付費。常見做法是“誰使用誰付費”,這種方案面臨以下三個問題:
第一,這類收入取決于公鏈內交易活躍程度,對礦工而言是不穩定且難以準確預測的。
第二,這類收入在數量上是否足以覆蓋礦工承擔的成本和風險?這一點困擾比特幣社區已有相當長時間。
第三,公平性問題。很多長期持有Token的人很少發起公鏈內交易,因此也很少向礦工支付手續費。但他們持有Token的價值仍然依賴于礦工提供的分布式賬本安全性。
出塊獎勵有助于緩解“誰使用誰付費”面臨的這三個問題,特別在公鏈發展前期。
Token價值、出塊獎勵和通脹稅
出塊獎勵與“誰使用誰付費”存在一個關鍵不同。“誰使用誰付費”是已發行Token在交易發起者和礦工之間的再分配,而出塊獎勵是礦工獲得的新發行Token。
出塊獎勵在經濟學上的核心問題是Token增發與Token價值之間的關系。
Token價值受基本面和流動性因素影響。從長期看,Token價值主要由基本面決定。在短期,流動性因素對Token價值有很強驅動力。假設基本面和流動性因素都沒有顯著變化,那么新發行的Token就會稀釋原有Token的價值,Token增發對原有Token價值的稀釋可以稱為通脹稅。
與“誰使用誰付費”相比,通脹稅對礦工是更穩定的收入來源,并且長期持有Token的人通過分擔通脹稅也向礦工付費。如果將礦工群體視為新的Token持有者,那么Token增發本質上是將財富從原有Token持有者轉移給新的Token持有者。因此,在短期,Token增發主要是財富再分配;在長期,新老Token持有者的利益都綁定在Token價值上升上。
信任基礎、共識算法和共識成本
公鏈的核心是共識算法,共識算法有兩個關鍵點:
一是Token增發;
二是分布式賬本的記賬權分配。
如果Token增發主要為獎勵礦工維護分布式賬本的貢獻,那么記賬權分配主要為防范作惡礦工對分布式賬本的破壞。我們從信任基礎角度給出共識算法的一個經濟學分析框架。
PoW—基于技術的信任
在PoW中,礦工參與共識算法不需要持有Token,PoW挖礦完全是隨機性的,礦工控制的算力越大,獲得記賬權概率越大。
在PoW中,礦工之間是競爭關系,不存在交互式溝通協作。誰先找到隨機數Nonce,誰就獲得記賬權和出塊獎勵,而其他礦工之前所做的工作就基本作廢。
挖礦的開放性以及礦工之間的競爭關系,使得在Token價格上漲時,挖礦成本攀升。一旦有礦工投資于算力,在增加自己挖礦成功概率的同時,也降低其他礦工的挖礦成功概率。因此,一個礦工對算力的投資會對其他礦工構成負外部性。從而導致礦工間進入“軍備競賽”。
總的來說,PoW體現了基于技術的信任,主要靠技術為挖礦創造了一個不依賴于礦工鏈外身份或信用的環境,礦工之間是競爭關系,但難以內生地抑制算力“軍備競賽”對挖礦成本的抬升。
PoS—基于制度的信任
在PoS中,礦工參與共識算法需要持有Token,因此有對PoS型公鏈的風險敞口,但面臨的硬件設施要求比PoW低得多。風險敞口的大小取決于礦工是否需要鎖定Token。
鎖定Token是暫時放棄根據市場情況出售Token的權利,即暫時放棄Token流動性。放棄Token流動性的成本與鎖定Token的數量和時間正相關,更與持有Token的策略有關。
PoS礦工有兩個顯著特點。第一,礦工的鏈外身份和信用很重要,礦工需要向其支持者“拉票”。礦工的過往表現,比如出塊率以及獎勵分享慷慨程度,會直接影響其信用和 “得票” 。作惡的礦工會在選舉中被選下去。第二,不同礦工之間存在一定合作關系。礦工可以順序或VRF方式進行生產區塊,但最終全體礦工會對候選區塊運行拜占庭協議直到達成共識。
總的來說,PoS體現了對制度的信任。制度是為提高群體合作效率而針對群體成員引入的行為規則。礦工的鏈外身份和信用,礦工選舉程序,以及礦工在區塊生產和達成共識上的合作關系,都是制度的體現。
共識成本
不管是PoW,還是PoS,共識算法的目標都是在存在各種差錯、惡意攻擊以及異步的分布式網絡中,并且在沒有中央協調的情況下,確保分布式賬本在不同網絡節點上副本的“最終一致性”。達成這種一致狀態毫無疑問需要成本,我們稱之為“共識成本”。
在PoW中,共識成本主要體現為挖礦成本,即在挖礦硬件設施上的投資以及運行這些硬件設施消耗的能源,可以稱之為“技術成本”。PoW有難以內生地抑制算力 “軍備競賽” 對技術成本的抬升。
在PoS中,盡管PoS中的各種制度可以提高群體合作效率,但制度的持續、有效和穩健運行卻非易事。PoS依賴鏈外身份和信用機制以及針對群體互動的程序性安排,這些機制設計對PoS的共識成本有很復雜的影響,可以稱為“制度成本”。
每種共識算法都在不同程度上依賴基于技術的信任以及基于制度的信任,并因此分別產生技術成本和制度成本,共識成本則是技術成本和制度成本之和。對基于技術的信任的依賴程度越高,技術成本越高,反之則反是。這一關系對基于制度的信任和制度成本亦然。完全依賴基于技術的信任,或完全依賴基于制度的信任,都會造成比較高的共識成本。我們認為,存在兩種信任基礎之間的最佳配比,使得共識成本最小(圖1)。
PlatON的經濟設計目標
基于前文的分析,PlatON的經濟設計主要有以下目標:
第一,選擇PoS。我們認為,PoW的能源消耗過高。面對現實世界的能源限制,PoW的市場份額不可能無限增長。PlatON的共識算法被稱為PPoS(PlatON PoS)。
第二,降低共識成本。PPoS使用鏈外身份和信用機制以及程序化安排,但通過VRF引入的隨機性來降低對它們的依賴程度。這樣能有效抑制賄賂、共謀等行為。
第三,加強公鏈內經濟活動與公鏈支持的經濟活動(即數據和算力流通市場)之間的耦合關系,為Token價值提供支撐。
第四,內生地抑制PPoS礦池規模擴張。
PlatON的經濟方案
PlatON中的經濟周期
在介紹PlatON的經濟方案前,為了方便后續理解,先對PlatON經濟模型中的幾個基本經濟周期進行介紹:
-
增發周期
PlatON設計為每年固定增發,這個年度周期在PlatON中不是自然時間周期,而是區塊高度周期,基于一年365.25天為標準,根據一段時間范圍內的平均出塊時間(時間范圍取當前區塊往前一年),計算出當前增發周期區塊數。為使得增發邏輯總是在結算區塊中處理,設計時將增發周期設計為結算周期的倍數,因此增發區塊也是結算區塊。由于平均出塊時間的不確定性,增發周期內的結算周期數會動態調整。
-
結算周期
PlatON中,考慮到系統處理性能,將鎖倉處理、質押鎖定、Staking獎勵發放、增發、節點排名等邏輯都周期性集中處理,這個周期就稱為結算周期。結算周期的最后一個區塊稱為結算區塊,統一處理各種周期性的處理邏輯。結算周期為共識周期的倍數,固定為10750個區塊。
-
共識周期
每個共識周期固定生產430個區塊,其中第410個區塊為選舉區塊,用來選出下一個共識周期的43個驗證節點。
LAT發行
PlatON公鏈內的Token被稱為LAT,LAT不設硬頂,分為初始發行和增發。
初始發行
LAT初始發行按一定比例分配給創始團隊、PlatON基金會、學術基金、生態基金、和籌得發行方,通過將分配的賬戶及余額參數信息寫入到創世區塊配置中來實現。并引入相應的鎖定機制。
初始發行的鎖定通過鎖倉合約進行控制,按照設定好的鎖定期進行鎖倉和解鎖,鎖倉的金額不可提前解鎖。為提高系統處理性能,鎖定期必須是結算周期(10750blocks)的倍數,因此每一個鎖定期解鎖點(解鎖區塊高度)都是結算周期的結算區塊(結算周期的最后一個區塊)。
為了保障鎖倉賬戶權益,鎖倉的LAT可以用于驗證節點的質押和委托,在解除質押或委托時,該質押和委托的LAT重新返回到鎖倉合約。
根據鎖倉計劃,達到解鎖區塊,鎖倉合約自動解鎖對應的該解鎖LAT到鎖倉賬戶地址內。
假設A賬戶鎖倉計劃為(總計鎖倉1000LAT):
-
鎖定1個結算周期,鎖定數量:100LAT
-
鎖定2個結算周期,鎖定數量:300LAT
-
鎖定3個結算周期,鎖定數量:600LAT
則解鎖處理流程如下圖所示:
由于存在鎖倉LAT用于質押或委托,而質押或委托未到期退回,導致到達解鎖區塊,鎖倉合約內該賬戶鎖倉余額不足解鎖數量,此時的處理方法是全部解鎖,并記錄一個“欠賬數”,并在每個結算區塊檢查是否存在“欠賬數”,以及鎖倉合約內該賬戶鎖倉余額是否有入賬,有的話繼續解鎖,直到“欠賬數”歸零。
同時需要指出的是,當鎖倉LAT用于驗證節點質押,質押的LAT被處罰削減時,系統會反饋到鎖倉合約,并將“鎖倉待解鎖量”扣減對應的處罰金額。
LAT增發
增發主要是為了激勵礦工維護分布式賬本,在純靠交易手續費作為礦工激勵無法滿足的情況下,通過增發的出塊獎勵補償他們承擔的成本和風險。同時持續的增發可以稀釋持有人的Token,從而促進更多的人參與PoS共識驗證,保證網絡更穩定。
通常增發有兩種方式:
- 批量增發:定期分批次增發,每個批次增發一定的比例。如Cosmos增發方式。
- 連續增發:不定期增發,可以理解為將批量增發模式的批次縮短到一個非常小的數值。如EOS增發方式。
PlatON采用批量增發模式,即每年(一個增發周期)一次性增發。相對于連續增發,批量增發更加簡單實用,同時可以提高鏈的性能。
按照年度預期出塊數為增發周期進行LAT增發。相對于上一年底的LAT總發行量,每年固定增發2.5%,在增發區塊(上個增發周期最后一個區塊)進行增發,將其中增發的2%轉入到由智能合約控制的獎勵池,并由PPoS共識算法的運行逐輪釋放獎勵給驗證節點。余下的0.5%轉入到一個信托基金,由PlatON基金會作為信托人用來獎勵未來的PlatON基礎協議開發者。
因此當前增發周期LAT增發量用公式可表示為:
f(x)=W×(1+a%)x−1×a%f(x)=W×(1+a%)x−1×a%
其中:
xx:當前增發周期序號,從創世區塊開始到當前為第幾個增發周期(創世區塊開始為第一年,增發周期1)。
WW?:初始發行流通的LAT總量,創世區塊第一年增發的基數。
aa :增發周期固定的增發比例。
獎勵池獲得的增發LAT將用于驗證節點的出塊獎勵以及Staking獎勵。具體將在激勵機制部分進行詳述。
PPoS共識
PlatON采取在小規模的備選節點中隨機選取節點參與BFT共識,在驗證節點數量和性能之間做權衡。任何LAT持有者可以通過質押參選驗證節點(備選節點候選人),其他LAT持有者通過委托的方式持續投票,從而維持一個小規模的動態驗證節點候選(備選節點)列表,然后在這個候選列表中通過VRF和概率分布隨機選取若干驗證節點進行出塊和驗證。VRF的特性保證了選取的隨機性,從而降低了驗證節點被攻擊的機率,同時又提高了去中心化程度。而概率分布則可以讓權益高的備選節點被選中的概率較高,從而激勵備選節點想辦法增加自己的權益,隨著整個系統質押LAT數量的增加,整個系統的安全性就會越高。通過這種方法縮小了驗證節點的選取范圍,從而保證了共識效率,又有效的避免了過于中心化的問題。
角色說明
-
備選節點候選人
想參與PlatON區塊生產的LAT持有者,質押鎖定一定數量的LAT到質押合約內,成為備選節點候選人。
-
備選節點
排名(排名規則參見備選節點選取)在201名前的備選節點候選人稱為備選節點,備選節點參與每個共識周期的驗證節點選舉,可獲得結算周期LAT增發的分配獎勵。
-
驗證節點
由系統通過VRF隨機函數在201個備選節點中隨機選出43(正常狀態)個節點作為共識周期驗證節點。
-
提議人 一個共識周期生產430(43個驗證節點 * 每個驗證節點連續出10塊)個區塊,43個驗證節點輪流成為提議人,每個驗證節點的出塊時間為20秒。
-
委托人
把自己的LAT委托給備選節點候選人的LAT持有者。驗證節點不能相互委托,也不能自委托。
角色關系示意圖如下,為方便后續描述,備選節點候選人包含備選節點和驗證節點。備選節點包含驗證節點。
總體流程概述
-
質押成為備選節點候選人
LAT持有者通過質押超過一定的LAT作為保證金成為備選節點候選人,備選節點候選人總數不限。
-
委托LAT
LAT持有者可將自己的LAT委托給備選節點候選人,其中備選節點和驗證節點在參與共識過程中可獲得收益,收益可基于節點設置的委托獎勵比例與委托人分享。委托人可以隨時部分或者全部贖回委托,沒有額外的凍結期。
-
選舉備選節點
每個結算周期的最后一個區塊(即結算區塊),系統根據當前備選節點候選人的排名,取排名前201的節點為下個結算周期的備選節點,參與下個結算周期共識。備選節點可獲得Staking獎勵。
-
選舉驗證節點
每輪共識需要43個驗證節點,系統會使用VRF方式從當前備選節點中隨機選取43個驗證節點參與下一輪共識。
-
共識出塊
驗證節點輪流成為提議人進行出塊,其他驗證節點進行區塊驗證,共同運行CBFT協議完成一輪共識(每輪共430個區塊),出塊節點獲得交易手續費和出塊獎勵。
-
退出備選節點候選人
在結算周期的結算區塊獲取新排名,排名201名后的節點變為備選節點候選人,不再享受Staking獎勵。被舉報多簽且舉報屬實或共識輪出塊率為0的情況下,節點會立刻被淘汰出備選節點候選人列表。
驗證節點的選舉
質押成為備選節點候選人
任何LAT持有者可通過質押一定的LAT(必須超過一個事先確定的最低數量)作為保證金成為備選節點候選人,備選節點候選人總數不限。質押的LAT可以有兩個來源:
(1)賬戶余額的LAT:指賬戶的余額,就是賬戶中流通的,可以隨時使用的LAT。
(2)賬戶鎖倉的LAT:指賬戶在鎖倉合約進行鎖倉沒有解鎖的那部分LAT。
成為備選節點候選人還需要提交節點程序的真實版本號、節點程序的真實版本號簽名、BLS的公鑰、BLS的公鑰證明Proof、用于接受出塊獎勵和Staking獎勵的收益賬戶(后續支持修改)、節點將獲得的收益(包含出塊獎勵和staking獎勵)分配給委托人的獎勵比例(后續支持修改)、節點的描述(后續支持修改)、節點的官方主頁(后續支持修改)、節點的第三方信息披露身份ID(可選, keybase.io賬戶生成的16位字符-后續支持修改)、被質押節點的名稱(后續支持修改)、被質押的節點ID、質押的LAT數量等信息。質押需要遵守以下規則:
-
節點不能重復質押。
-
系統將發起質押交易區塊到當前結算周期的結算區塊的區間為猶豫期,在猶豫期發起撤銷,節點立即退出備選節點候選人列表,質押LAT立即返回用戶質押賬戶。
-
節點的版本號低于當前鏈版本號或預生效版本號時,質押失敗。
-
一旦成功將節點質押為備選節點候選人,質押使用的賬戶與該節點ID將建立對應關系,后續相關操作都需要使用該質押賬戶發起簽名交易,請注意安全保管質押賬戶。
備選節點候選人可以接受委托。在當前結算周期的結算區塊,如果按照當前總質押數量(自質押和委托數量的總和)排名進入到201名,即可當選為下個結算周期的備選節點。
增加質押
所有備選節點候選人可隨時增加質押的LAT數量,從而提高備選節點候選人的排名。
- 如果因為主動撤銷質押或被處罰,撤銷質押正在處理(質押LAT退回需要一段時間的凍結期)或已經完成(質押LAT已釋放到原質押賬戶),則不能增加質押。
- 用來增加質押的LAT可以是賬戶余額的LAT,也可以是賬戶鎖倉的LAT。
- 只能從初始質押賬戶增加質押。
備選節點選取
備選節點總數最多是201,每個結算周期最后一個區塊(結算區塊)會重新選取。
選取的規則主要是根據節點的排名取前201,排名規則如下:
- 首先按照運行的系統版本號從高到低排序。
- 再按照總質押數量(自質押和委托數量的總和)從高到低排序。
- 如果總質押數量(權益)相等,則按照初始質押的區塊高度排名,質押區塊高度小的優先。
- 如果初始質押的區塊一樣,再按照質押時在同一個區塊中的交易的序號排名,序號小的優先。
驗證節點選取
每個共識周期負責生產430個區塊,在共識周期的第410區塊從201個備選節點中選舉下一輪共識周期驗證節點,第1個共識周期的驗證節點是在創世區塊中內置的。
為防止新選取的驗證節點由于網絡連接慢、區塊不同步等原因影響共識效率,保證共識的容錯性,每次不全部替換所有43個節點,只替換部分驗證節點,具體規則如下:
-
從當前共識輪的43個驗證節點中淘汰部分驗證節點
-
優先淘汰異常狀態的驗證節點(假設數量為F1F1)必須被淘汰,包括被舉報雙簽驗證屬實的,出塊率為0被處罰的,版本低于預生效版本(升級提案如果投票成功,則升級提案中的版本號為預生效版本,具體參考PlatON治理方案)的,申請退出且不在備選節點列表的。
-
再淘汰部分正常的驗證節點,假設剩余的備選節點數量為LL,uu為每輪驗證節點總數,則被淘汰的正常驗證節點數量F2F2計算如下:
R=(u−1)/3R=(u−1)/3
F′2=IF(F1>=R,0,R−F1)F2′=IF(F1>=R,0,R−F1)
F2=IF(F′2>L,L,F′2)F2=IF(F2′>L,L,F2′)
-
淘汰的正常驗證節點按照以下規則進行排序后選取前 F2F2 個:任期(連續參與共識輪的次數)由長到短,總質押數量由小到大,初始質押的區塊高度由高到低,質押交易在同一個區塊中的交易序號由大到小。
-
-
從備選節點列表中通過VRF選取F=F1+F2F=F1+F2個新的驗證節點,備選節點數量不足則全部選取
為保證足夠的隨機性,降低攻擊者的攻擊,選取算法的偽隨機種子生成規則如下:
-
每個備選節點在本地產生公私鑰對(pk,sk)(pk,sk),私鑰本地保管用于生成隨機數,公鑰公開用于驗證隨機數。
-
創世區塊生成一個隨機數作為初始偽隨機種子r0r0。
-
假設當前為第ii個區塊,第i−1i−1個區塊產生的隨機種子參數為ri−1ri−1,負責生產當前區塊的驗證節點的公私鑰對(pk,sk)(pk,sk)。當前驗證節點使用如下VRF生產第ii個區塊的隨機數種子riri:
πi=SIGsk(ri−1),ri=H(π)πi=SIGsk(ri−1),ri=H(π)(1)
其中SIGsk(ri−1)SIGsk(ri−1)表示用私鑰sksk對當前隨機種子參數ri−1ri−1簽名,H(⋅)H(⋅)是哈希函數,對任意輸入,H(⋅)H(⋅)均輸出一個長度為ll的二進制數。哈希函數H(⋅)H(⋅)作為隨機預言的性質決定了,riri 在[0,2l−1][0,2l−1]之間均勻分布,從而ri2l−1ri2l−1服從[0,1][0,1]之間的均勻分布。
-
創世區塊中初始指定的驗證節點負責打包第一輪的所有區塊并在每個區塊中生成一個隨機種子,每個區塊中的隨機種子由提議人根據前一個區塊的隨機種子通過VRF函數計算得到。
-
每一輪第410個區塊的提議人負責選取下一共識輪的驗證節點,假設當前為第nn個區塊,選取規則如下:
-
區塊提議人根據前一個區塊的隨機種子生成當前區塊的隨機種子及其證明(rn,πn)(rn,πn)
-
考慮某一個備選節點,假設排名為ii,共有wiwi張選票,所有備選節點的總選票數為W=∑201k=1wkW=∑k=1201wk,選擇一個正整數m<Wm<W,令p=mWp=mW。對該節點,找到XX使得
X∑k=0B(k,wi,p)≤rn−i⊕rn2l−1<X+1∑k=0B(k,wi,p)∑k=0XB(k,wi,p)≤rn−i⊕rn2l−1<∑k=0X+1B(k,wi,p)(2)
其中, B(k,n,p)B(k,n,p)為二項分布B(n,p)B(n,p)的概率密度函數,而F(x)=∑xk=0B(k,n,p)F(x)=∑k=0xB(k,n,p)為其累計概率分布函數。
因此,式(2)可以等價表述為F(X)=rn−i⊕rn2l−1F(X)=rn−i⊕rn2l−1,從而
X=F−1(rn−i⊕rn2l−1)X=F−1(rn−i⊕rn2l−1)(3)
因為rn−i⊕rn2l−1rn−i⊕rn2l−1服從[0,1][0,1]之間的均有分布,所以X服從二項分布B(n,p)B(n,p),并且
E(X)=npE(X)=np(4)
因為當前隨機種子參數和公鑰是公開的,PPOS共識算法的參與者很容易驗證(rn,πn)(rn,πn) ,根據備選節點的得票數計算其XX值。
-
計算所有備選節點的XX值,最高的FF個XX值對應的備選節點就成為驗證節點。經VRF得到的XX值越高,越有可能被選為驗證節點。但因為VRF引入的隨機性,最終選出的FF個驗證節點不一定正好是得票最高的FF個備選節點。
退出備選節點候選人
備選節點候選人可以主動申請退出,驗證節點被處罰也可能被強制退出。為了維護整個網絡的安全,退出命令執行以后,所質押的LAT需要經過一段較長時間的凍結期才能真正到賬,凍結期可以讓惡意攻擊就算在形成之后才被檢測到,依舊能受到懲罰。
申請退出驗證節點處理流程:
(1)從申請退出驗證節點的區塊開始,該節點即時被移出備選節點候選人列表,該節點將不可接收委托和增加質押金。如果節點為當前結算周期備選節點,節點可繼續參與VRF共識輪驗證節點的選舉,同時在結算區塊可獲得Staking獎勵。
(2)當前結算周期的備選節點被系統處罰退出或者扣除節點自有質押金后不滿足備選節點候選人所需的最低質押門檻時,則該處罰區塊實時將節點移出當前結算周期的備選節點名單和備選節點候選人列表,節點不再繼續參與VRF共識輪驗證節點選舉,當前結算周期這個節點無Staking獎勵。
(3)退出驗證節點命令執行后,節點自有質押LAT退回到質押賬戶時間:
-
猶豫期未鎖定的質押LAT,退出命令執行后,即時到賬。
-
已鎖定的質押LAT,退出命令執行后,繼續凍結鎖定168結算周期(不包含當前結算周期)
注意:
如果當前節點參與了升級提案投票,且提案沒有投票結束,則需要判斷解凍區塊是否大于投票截止區塊,如果大于,則繼續按照默認的解凍區塊進行質押LAT釋放。如果小于,則按照投票截止區塊進行質押LAT釋放。退回的質押LAT原路返回。
(4)備選節點候選人退出,委托的LAT處理說明:
-
備選節點候選人主動申請,在當前結算周期的結算區塊,節點接收到的委托LAT全部解除鎖定,需要由委托人主動申請贖回,提交贖回后,委托的LAT即時退回到委托人賬戶。
-
備選節點候選人被動處罰退出,從處罰區塊開始,節點接收到的委托LAT全部解除鎖定,需要由委托人主動申請贖回,提交贖回后,委托的LAT即時退回到委托人賬戶。
(5)退出申請必須由節點原質押賬戶發起。
委托人
委托
LAT持有者可以通過把手中的LAT委托給備選節點候選人,以此獲取收益。
-
委托的LAT有兩個來源:
(1)賬戶余額的LAT:指賬戶的余額,就是賬戶中流通的,可以隨時使用的LAT。
(2)賬戶鎖倉的LAT:指賬戶在鎖倉合約進行鎖倉的那部分LAT。
-
為防止惡意委托攻擊,單筆委托有最小LAT數量限制。
-
委托的LAT進入下個結算周期開始鎖定,委托LAT不主動贖回,委托LAT將一直持續鎖定,系統不支持自動贖回功能。同時只有鎖定一個完整結算周期才會參與分享節點收益。
-
備選節點候選人一旦申請退出或被系統處罰退出,將無法繼續委托。原委托LAT將解除鎖定,用戶需要主動贖回委托的LAT。
委托獎勵
基于PPoS共識,委托人委托LAT給備選節點候選人,從而影響備選節點候選人的排名,排名進入前201名的備選節點候選人即可成為每個結算周期的備選節點并獲得Staking獎勵,同時有機會成為驗證節點,參與出塊并獲得出塊獎勵和區塊內的交易手續費獎勵。委托人作為維護備選節點候選人列表排名的重要影響因素,為提高排名,吸引委托人進行委托,備選節點候選人需要慷慨的對給予其獲得系統獎勵的委托人分配委托獎勵。具體分配給委托人的獎勵比例由節點在質押成為備選節點候選人階段提交。
-
委托獎勵包含兩種來源:
(1)基于委托獎勵比例分享的出塊獎勵:委托的備選節點候選人成為驗證節點,參與出塊獲得的出塊獎勵。將出塊獎勵按照該節點的委托獎勵比例分享給節點名下委托人。
(2)基于委托獎勵比例分享的Staking獎勵:委托的備選節點候選人成為備選節點,在結算區塊獲得Staking獎勵,將Staking獎勵按照該節點的委托獎勵比例分享給節點名下委托人。
-
委托獎勵遵循以下規則:
-
委托獎勵結算間隔:每間隔一個結算周期結算一次委托獎勵。
-
委托獎勵范圍:鎖定一個完整結算周期的委托(有效委托)才有委托獎勵。任何中途退出的鎖定委托、未鎖定委托以及節點退出解除鎖定的委托都沒有委托獎勵。
-
委托獎勵分配:根據節點名下委托人之間的有效委托比例分享委托獎勵,有效委托越多,委托獎勵越多。
-
委托獎勵領取:需要委托人主動發起領取交易,領取交易可一次性領取所有委托節點名下全部可領取的委托獎勵。同時如果全部贖回某節點委托,將自動領取某節點下全部可領取的委托獎勵。
-
在以下情況下,節點在該結算周期將不會分享委托獎勵:
(1)某結算周期內,節點名下沒有有效委托。
(2)某結算周期內,節點被處罰并強制退出備選節點候選人列表。
(3)節點申請退出備選節點候選人后在當前結算周期的下一個結算周期不會再分享委托獎勵。
-
領取委托獎勵
委托人在將LAT委托給備選節點候選人后,當委托的節點產生收益(獲得出塊獎勵和Staking獎勵)且委托LAT鎖定完整結算周期時,委托的LAT將會產生委托獎勵。委托人可以隨時提交領取委托獎勵交易。
- 領取委托獎勵,支持領取當前所有已結算的委托獎勵。不支持部分領取。
- 委托多個備選節點候選人,每次提交一個領取委托獎勵交易,將會自動領取所有已委托節點名下產生的委托獎勵,且一次性全部領取。
贖回委托
委托人可以隨時提交贖回委托交易,因為委托人在一定程度上可以說是無法作惡的,所以委托人贖回委托后的LAT沒有額外的凍結期。同時與退出備選節點候選人的解除質押有所區別,解除質押是全部解除,但贖回委托支持部分贖回(也就是減持)和全部贖回。
-
委托交易區塊到當前結算周期的結算區塊的區間為猶豫期,贖回委托,委托LAT立即退回到用戶委托賬戶。
-
委托的LAT在下個結算周期開始鎖定,鎖定的LAT,贖回委托,委托LAT在該結算周期的結算區塊退回到用戶委托賬戶(原路返回)。
-
當委托的LAT包含未鎖定和鎖定狀態的LAT,優先贖回未鎖定的LAT,剩下的部分從鎖定的LAT贖回。
-
當委托的LAT包含使用賬戶余額委托的LAT和使用賬戶鎖倉余額委托的LAT,優先贖回(減持)使用賬戶余額委托的LAT。如果不足用戶指定的贖回數量,剩下的部分從使用賬戶鎖倉委托的LAT贖回。
-
為防止惡意委托攻擊,單筆贖回委托有最小LAT數量限制,同時為防止小額委托大量遺存,贖回委托數量后,剩余委托量不足最小LAT數量,則自動全部贖回所有委托。
-
當贖回某節點全部委托時,將自動領取該節點下全部可領取的委托獎勵。
共識
每個驗證節點輪流成為提議人,每個提議人有20秒的窗口期,最多能出10個塊。即若在20秒內出滿10個塊,則立即輪到下一個提議人出塊。若20秒內未能出10個塊,則依然輪到下一個提議人出塊,若該輪出塊未滿430個,則繼續循環。
具體共識方案參見PlatON共識方案。
激勵機制
驗證節點的成本分析
PlatON中,維護一個驗證節點的成本包括以下方面:
- 設備電力
- 系統安全維護
- 委托人支持服務
- 質押鎖定流動性成本
激勵基金來源
基于PoS共識公鏈,為促進礦工維護分布式賬本,保證有足夠的Token來承載未來強大豐富的分布式生態應用,并促進用戶質押提供鏈的安全性,一般PoS區塊鏈的激勵基金都是來源于通脹增發。
PlatON網絡激勵金來源包含以下幾個方面:
-
系統增發
每個增發周期固定增發的80%(相當于前一年發行總量的2%)轉入到獎勵池。增發是激勵基金的主要來源。
-
PlatON基金會補貼
前10年(增發周期)基金會為鼓勵和吸引更多節點加入,通過鎖倉發行的方式補貼到獎勵池,從而提高前10年(增發周期)節點的收益率。
-
PlatON基金會驗證節點收益
為維護主網的穩定運行,PlatON基金會贊助質押并維持7個驗證節點。PlatON基金會贊助的驗證節點運行中的收益將全部進入到獎勵池,作為社區驗證節點的激勵基金。
-
Slash削減懲罰金
驗證節點由于低出塊率受到系統削減懲罰,懲罰金全部進入到獎勵池,供下一年增發周期進行分配。
激勵規則
在PlatON中,對驗證節點有以下三類激勵方式:
-
出塊獎勵
所有參與到共識出塊的驗證節點,將會獲得所出區塊的出塊獎勵。出塊獎勵根據隨著生產的區塊實時發放。獎勵池的50%用于區塊獎勵,單個區塊的出塊獎勵金額在每個結算周期末更新,下個結算周期生效,根據獎勵池的余額與當前增發周期剩余的區塊數確定。第nn個結算周期的區塊出塊獎勵如下:
B(n)=Rv×(n−1)×50%vB(n)=Rv×(n−1)×50%v
其中,
Rv×(n−1)Rv×(n−1):第n-1個結算周期末(區塊 v×(n−1)v×(n−1) )獎勵池的余額。
vv : 系統在當前增發周期時,剩余的區塊數,非固定參數,此參數根據出塊平均間隔實時計算得出。
-
交易手續費
負責生產區塊的驗證節點可獲得對應區塊內所有交易的手續費。交易手續費隨區塊實時發放。
-
Staking獎勵
每個結算周期內的所有備選驗證節點,都能獲得Staking獎勵作為質押鎖定的回報。獎勵池的50%用于Staking獎勵,單個結算周期的Staking獎勵在每個結算周期末更新,下個結算周期生效,根據獎勵池的余額與當前增發周期剩余的結算周期數確定。Staking獎勵在結算區塊平均發放給當時的備選節點(包括當前共識輪的驗證節點)。
當前增發周期的每個結算周期的Staking獎勵:
S(n)=c×Rv×(n−1)×50%vS(n)=c×Rv×(n−1)×50%v
在結算區塊上,假設當前結算周期的備選節點數量為mm,則當前結算周期每個備選節點的Staking獎勵:
I(n)=S(n)mI(n)=S(n)m
其中,
Rv×(n−1)Rv×(n−1):第n個結算周期初(區塊 v×(n−1)v×(n−1) )獎勵池的余額。
vv : 系統當前增發周期的剩余的區塊數,非固定參數,此參數根據出塊平均間隔計算得出。
cc: 系統結算周期的區塊數,固定為10750個區塊。
懲罰機制
區別于PoW公鏈,PoS公鏈一般并不依靠算力來維護系統安全,PoS公鏈要求參與驗證的節點質押一定數量的Token作為擔保,當節點出現不良行為時,系統將通過Slash削減節點的質押金進行懲罰,以此來提高作惡成本,約束規范節點行為,保證系統的穩定與安全。PlatON也引入相應的懲罰機制。
被懲罰的行為
在PlatON中,任何嘗試分叉區塊鏈和長期不在線的節點都可能會受到Slash削減懲罰。
-
雙簽\雙出
無論是軟分叉還是硬分叉,都需要通過投票來共同決定。任何節點私自試圖分叉的行為,都會受到 Slash 削減懲罰。
雙出,是指在同一個view中,節點在同一區塊高度下出現雙塊(或多塊)的情況。
雙簽,是指在同一個view中,節點對同一個高度不同hash的區塊出現多次簽名。
-
長期不在線
節點長時間無法連接,無法正常出塊或驗證簽名,節點將會受到 Slash 削減懲罰。
PlatON的懲罰方式
PlatON目前支持以下處罰方式:
-
扣除節點自有質押金
從節點自有質押金(鎖定的自有質押金)中扣除一定比例或固定數量的LAT作為懲罰金。扣除后如果節點剩余自有質押金(包含已鎖定和處于猶豫期未鎖定的質押金)不滿足備選節點候選人的質押門檻,備選節點候選人將立即失去參選驗證節點資格,系統將自動將其質押撤銷。扣除規則如下:
- 扣除節點自有質押金,僅扣除當前結算周期已鎖定的節點自有質押LAT,處于猶豫期未鎖定的質押LAT不參與扣除。
- 節點如果同時質押了賬戶余額和鎖倉余額的LAT,優先扣除使用賬戶余額質押的LAT,然后扣除鎖倉余額質押的LAT。
- 扣除賬戶鎖倉余額質押的LAT時,鎖倉合約中該賬戶的剩余解鎖量和參與質押量對應扣除。
-
強制退出備選節點候選人
備選節點候選人遭受懲罰被動退出,不再參與備選節點和驗證節點選舉,并立即被撤銷質押,退出備選節點候選人列表。委托給該節點的LAT全部失效并解除鎖定,委托解除的LAT需要用戶自己申請贖回(委托人太多,自動退回非常影響系統性能)。節點剩余的自有質押金繼續鎖定168個結算周期后自動退回到節點質押賬戶。
-
被強制退出的節點,不參與該結算周期結算區塊的Staking獎勵分配。
-
被撤銷質押時,處于猶豫期未鎖定的質押LAT不需要繼續鎖定168個結算周期,即時退回。
-
委托的LAT在節點被撤銷質押時,即可贖回委托的LAT,贖回的委托LAT立即到帳,但是需要用委托人自行申請贖回。
-
被強制退出的節點,只有在鎖定期結束,節點質押LAT退回后,方可繼續使用該節點ID重新質押。
-
被強制退出的節點,重新使用該節點ID重新質押時,之前該節點已失效但未贖回的委托LAT,不會記入重新質押的驗證節點(備選節點候選人)名下。
-
當被強制退出的節點參與了提案的投票,且提案的投票截止期大于168個結算周期,解鎖區塊延后到投票截止區塊。
-
如果被懲罰并強制退出的驗證節點正參與當前共識輪的工作,驗證節點可繼續完成本共識輪的出塊和驗證工作。如果節點在共識輪內的410區塊后被處罰,如果確定的下個共識輪驗證節點有該節點,則節點可繼續參與下個共識輪的出塊和驗證。
-
-
限制節點資格
節點被臨時取消驗證節點資格,鎖定56個結算周期,鎖定期間沒有資格成為驗證節點參與出塊,并且也無法參與治理投票,也沒有Staking獎勵。
PlatON的懲罰機制
雙簽\雙出-人工舉報和系統處罰
在PlatON中,雙簽表示在同一個view中對于同一個塊高不同hash進行簽名,表現在CBFT里即雙簽ViewChangeVote和雙簽PrepareVote。雙出表示出塊節點在同一個view中對同一個高度出了兩個不同hash的區塊。本質上出塊也是對區塊進行了簽名驗證,因此PlatON中節點雙簽和雙出統一為雙簽。
節點出現雙簽行為,如果被任何用戶發現,都可以發起雙簽舉報交易,提交雙簽類型和證據(證據可以通過提供的查詢雙出、雙簽證據接口進行獲取)給系統slashing合約,經slashing合約驗證確認屬實后,系統將會削減被舉報節點自有質押金的10?作為懲罰金,同時將被舉報節點強制退出備選節點候選人并撤銷質押。處罰金的50%給與舉報人,50%置入獎勵池用于第二年的出塊和Staking獎勵。
-
雙簽舉報有一個有效期,雙簽超過27個結算周期后的舉報為無效舉報。
-
舉報遵循先后順序原則,僅最先舉報的用戶可獲得懲罰金。后續相同舉報為無效舉報。因此在舉報前最好查詢一下是否已被舉報過雙簽。
-
一次雙簽舉報僅支持對一個驗證節點的一個雙簽行為進行舉報。多個雙簽舉報需要多次提交。
-
為防止誤判或者人為惡意偽造舉報證據,slashing合約遵循以下驗證規則:
- 舉報證據是否在有效期內,不在有效期內則為無效舉報。
- 舉報證據的簽名是否為驗證節點簽名,不是則為無效舉報。
- 舉報的雙出區塊是否為被舉報節點負責生產的區塊,不是則為無效舉報。
- 舉報的雙簽投票區塊是否為被舉報節點負責驗證的區塊,不是則為無效舉報。
- 舉報的雙簽區塊是否是未來區塊,是則為無效舉報。
零出塊-系統自動判斷和處罰
PlatON基于出塊率的高低來判斷節點是否在線以及節點軟硬件及網絡環境是否滿足要求。在每個共識輪(一個共識輪430區塊)的410區塊判斷上個共識輪驗證節點的出塊率情況。
驗證節點需滿足以下兩個條件會被系統判定為零出塊:
- 某個共識周期被選為驗證節點,沒有生產任何區塊或生產的所有區塊都沒有被其他驗證節點確認
- 在隨后的20個共識周期(約2個半小時)內沒有出塊
節點零出塊后會被系統處罰,被扣除相當于2500個區塊的出塊獎勵,并被限制節點資格,如果扣除后質押金不夠10萬LAT,則強制退出備選節點候選人
交易手續費
PlatON 上每個應用的運行都要消耗一定的資源(包括算力、帶寬、存儲、數據等)。為實現資源的公平合理使用,避免資源的濫用,沿用以太坊的Gas機制,實現資源的合理調度和有效性驗證。
Gas手續費機制
為了防止代碼的指數型爆炸和無限循環,PlatON沿用以太坊的Gas機制,對每筆交易執行消耗的資源(內存、CPU、帶寬)進行度量。用戶在提交交易時,可以自行設置GasPrice,即每個Gas的價格,以此來控制提交交易的手續費。
Gas費用說明
除了普通的轉賬交易外,PlatON還支持以下經濟和治理相關的內置合約交易,我們采取按照接口定制固定gas消耗加上input參數定制可浮動的gas消耗。
轉賬交易
轉賬交易(不含input參數)的Gas消耗為21000Gas。
內置交易
內置交易的Gas計算規則為:
內置交易Gas消耗 = 交易固定gas消耗 + 交易動態gas消耗規則 + (data中的非0值byte個數*68) + (data中的0值byte個數*4)
- Staking交易
接口名稱 | 交易固定gas消耗 | 交易動態gas消耗規則 |
---|---|---|
發起質押 | 59000 | 無 |
修改質押信息 | 39000 | 無 |
增持質押 | 47000 | 無 |
撤銷質押 | 47000 | 無 |
發起委托 | 43000 | 無 |
減持/撤銷委托 | 35000 | 無 |
- 治理交易
為限制文本提案、參數提案、升級提案、取消提案的惡意提交,增加最低GasPrice限制。
接口名稱 | 交易固定gas消耗 | 交易動態gas消耗規則 | 最低GasPrice(GVon) |
---|---|---|---|
提交文本提案 | 350000 | 無 | 1500000 |
提交參數提案 | 530000 | 無 | 2000000 |
提交升級提案 | 480000 | 無 | 2100000 |
取消提案 | 530000 | 無 | 3000000 |
給提案投票 | 32000 | 無 | 無 |
版本聲明 | 33000 | 無 | 無 |
- 舉報懲罰交易
接口名稱 | 交易固定gas消耗 | 交易動態gas消耗規則 |
---|---|---|
舉報重復簽名 | 63000 | 無 |
- 鎖倉交易
交易名稱 | 交易固定gas消耗 | 交易動態gas消耗規則 |
---|---|---|
創建鎖倉計劃 | 68000 | 本次鎖倉的解鎖次數×21000 |
- 領取委托收益
交易名稱 | 交易固定gas消耗 | 交易動態gas消耗規則 |
---|---|---|
領取委托獎勵 | 8000 | 委托的節點數量(nodeid+stakingNum) x 1000 + 未計算委托獎勵的周期數 x 100 |