原文標題:《如何計算波卡的 Staking 收益?》
原文作者:PolkaWorld
原文編譯:PolkaWorld 社區
如果你想知道自己的 DOT 拿去提名會有多少獎勵,可以直接在這個頁面 https://polkadot.js.org/apps/#/staking/targets 輸入你的 DOT 數,並查看提名各個驗證人的收益。

如果你想了解波卡更多有趣的 staking 的設計,可以開始以下的閱讀。
Staking
Polkadot 使用 NPoS(提名權益證明機制)作爲選擇驗證人節點池的機制。它設計了驗證人和提名人兩個角色,來最大限度地提高鏈的安全性。對維護網絡感興趣的參與者可以運行驗證人節點。在創世,Polkadot 將爲這些驗證人提供有限的插槽,但是這個數量將隨着時間的推移而增加到 1000 以上。
這個機制鼓勵 DOT 持有人作爲提名人蔘與。提名人最多可以支持 16 個驗證人作爲可信的候選驗證人。
驗證人承擔在 BABE 中生成新區塊、驗證平行鏈區塊和保證最終性的角色。提名人可以選擇用他們的 stake 來支持選擇驗證人。
Staking 系統對所有的驗證人都給予同等的獎勵。扣除驗證人自己的部分後,獎勵按比例分配給所有提名人。通過這種方式,網絡激勵大家去提名有較低 stake 的驗證人,從而創建有着平等 stake 的驗證人節點池。
在 Polkadot 中如何進行 Staking?
1. 確定你的角色
在 staking 中,你可以是提名人,也可以是驗證人。
作爲提名人,你可以提名一個或多個(最多 16 個)你信任的候選驗證人,以幫助你獲得 DOT 獎勵。你可以在這裏查看一下提名人指南,瞭解在主網啓動時需要做什麼。《最新波卡提名人教程(Soft Launch 階段)》
驗證人節點需要 7*24 在線,及時履行應有的職責,並避免任何被 slash 懲罰的行爲。如果你想在 Kusama 運行驗證人,可以查看 Kusama 的驗證人指南。
2. 提名階段
任何對驗證人感興趣的節點,都可以表明他們想成爲驗證人候選對象的意圖。他們的候選人資格向所有提名人公開,提名人依次提交一份支持的候選驗證人名單(候選人數量不限)。在下一個 epoch(持續幾個小時),具有最多 DOT 支持的一定數量的驗證人被選中並激活。我們對 DOT 持有人成爲提名人沒有什麼要求,但我們希望每個提名人都可以仔細跟蹤驗證人的性能和信譽。
一旦提名階段結束,NPoS 選舉機制以提名人及其關聯投票爲輸入,輸出一組數量有限的驗證人,使任何驗證人的支持度最大化,使支持驗證人的支持度儘可能均勻分佈。這種選舉機制的目標是最大限度地提高網絡的安全性,實現提名人的公平代表。如果你想了解更多 NPoS 的運作方式(如選舉、運行時間複雜性等),請閱讀此處。http://research.web3.foundation/en/latest/polkadot/NPoS.html
3. Staking 獎勵的分配
爲了解釋如何給驗證人和提名人分配獎勵,我們需要考慮驗證人池,它是由選中的驗證人和支持它的提名人組成。(注:如果一個提名人 n 用 s 票去 stake 支持了 k 個驗證人,NPoS 選舉機制將把它的 stake 分成 s_1, s_2, …, s_k,即它用 s_i stake 支持了驗證人 i。在這種情況下,提名人 n 獲得的獎勵,與其在另一個擁有 k 個提名人的驗證人池中,每個提名人用 s_i 支持一個驗證人 i 時所獲的獎勵是相同的)。對於每個驗證人池,我們保留一個帶有相關 stake 的提名人列表。
驗證人池獎勵的一般規則是,兩個驗證人池在相同的工作中獲得相同數量的 DOT,即它們的報酬與每個驗證人池中的 stake 質押不成比例。在驗證人池中,獎勵的一部分(可設置)用於支付驗證人的佣金,其餘部分按比例(即與 stake 成比例)支付給提名人和驗證人。請特別注意,驗證人將獲得兩次獎勵:一次作爲驗證的佣金,一次作爲用自抵押提名自己的佣金。
如果要估計通貨膨脹率以及作爲提名人或驗證人每個月可以獲得多少 DOT,你可以使用這個 Excel 表作爲參考 (https://docs.google.com/spreadsheets/d/1-9Hc3kZ23EhZC3X6feRUKSTv6gj4xR7cvUbJD2zUEZk/edit?usp=sharing),並通過更改一些參數(例如驗證人池、總供應量、佣金等)來更好地估計通貨膨脹率。儘管這可能並不完全準確,因爲 staking 參與是動態變化的,但它可以作爲一個大概預估。
4. 獎勵機制
我們強調這一支付方案的兩個特點。首先,由於驗證人池的獎勵是相同的,所以對於提名人來說,他們的每個 DOT 在較少 stake 的池中得到的獎勵要比有更多 stake 的池多。因此,我們通過給提名人經濟激勵,讓他們逐漸將偏好轉移到較低 stake 的驗證人身上,從而獲得足夠的聲譽。這樣做的原因是,我們希望驗證池中的 stake 質押儘可能均勻地分佈,避免有大驗證人存在。從長遠來看,我們希望所有驗證人池都有差不多的 stake 數量,對於信譽度較高的驗證人,stake 會較高,但同時,願意通過支持信譽度較低的驗證人而承擔更大風險的提名人,將獲得更高的報酬。
下面的例子是解釋上述問題。爲了簡單起見,我們有以下假設:
-這些驗證人沒有進行自抵押
-他們不收任何佣金
-獎勵金額爲 100 DOT 代幣
-成爲驗證人最小的 DOT 數量是 350

兩個驗證人池 A 和 B 都有 4 個提名人,總 stake 的質押數分別爲 600 DOT 和 400 DOT。
基於以上的獎勵分配,驗證池 B 中的提名人比驗證池 A 中的提名人獲得更多的獎勵,因爲驗證池 A 有更多的總質押數。Sam 在 A 池中質押了 50 DOT,但他只得到了 8.3 DOT 的回報,而 Kitty 同樣的質押數在 B 中得到了 12.5 DOT 的獎勵。
還需要提醒的一點是,當網絡因錯誤行爲(例如驗證人脫機掉線、或者重複簽名等)而 slash 驗證人時,slash 的數量是固定百分比(而不是固定數量的 DOT),這意味着具有更多 stake 的驗證人池將被 slash 懲罰更多的 DOT。再次說明,這樣做的目的是爲了給提名人提供一個經濟激勵,讓他們改變偏好,支持那些他們認爲值得信任但不那麼受歡迎(較低 stake 數量)的驗證人。
第二點要注意的是,每個候選驗證人可以自由設定想要的佣金(百分比的形式)來支付運營成本。由於驗證池的收益是相同的,佣金較低的池比佣金較高的池支付給提名人的費用更多。因此,每個驗證人可以選擇增加他們的佣金以賺取更多的 DOT,或減少他們的佣金去吸引更多的提名人和增加他們當選的機會。我們要讓市場在這方面自我調節。從長遠來看,我們希望所有的驗證人都具有成本效益,去保持競爭力,而聲譽較高的驗證人也將能夠收取稍高的佣金(這是公平的)。
賬戶
這裏有兩個不同賬戶管理資金:Stash 和 Controller。

Stash: 這帳戶儲存資金用作綁定 DOTs 參與抵押,但將某些功能委託給 Controller。因此使用 Controller 可以積极參與,其保存 Stash 密鑰在冷錢包中,這意味着它永遠保持離線狀態。您還可以指定代理帳戶,對治理議案進行投票。
Controller 這帳戶是代表 Stash 帳戶負責發出有關提名和驗證的操作。它用於設置獎勵發送到那個帳戶和佣金。如果你是驗證人,它亦用作設定 session 密鑰,並只需要足夠的資金來支付交易費用。
我們設計了這種分隔密匙類型的層次結構,相比起單一密匙系統,可以更好保護驗証人和提名人。通常一個密鑰用於多個角色,甚至使用與密鑰導出相關的都會失去安全性。你應該不要將任何帳戶密鑰爲 "熱" session 密鑰。
Controller 和 Stash 帳戶密鑰可以是 sr25519 或 ed25519。有關如何在 Polkadot 中使用密鑰及其背後加密的更多信息,請參見此處。https://wiki.polkadot.network/docs/en/learn-keys
驗證人和提名人
由於驗證人插槽是有限的,大多數人希望質押他們的 DOT,並給網絡貢獻經濟安全的將是提名人。驗證人完成了大部分繁重的工作:它們在 BABE 中生成新的候選塊,在 GRANDPA 中投票並達成共識,驗證平行鏈的狀態轉換功能,可能還有一些關於數據可用性和 XCMP 的其他職責。另一方面,提名者一旦綁定了他們的 DOT,就不需要做任何事情了。提名人的體驗類似於「設置好就不用管了」,而驗證人將通過執行關鍵操作爲網絡提供主動的服務。因此,驗證人對 staking 機制的 payout 支付有一定的特權,並且將能夠在股份分配給提名人之前設置自己的獎勵比例。

想要質押 DOTs 嗎?
《最新波卡提名人教程(Soft Launch 階段)》
《最新教程:如何設置波卡驗證人節點》
Slashing 懲罰
如果驗證人在網絡中行爲不當(例如脫機、攻擊網絡或運行修改過的軟件),則會發生 slash 懲罰。他們和他們的提名人會因爲 slash 懲罰而失去一部分 DOT。
總質押數較大的驗證池將比不太受歡迎的驗證池受到更嚴厲的 slash 懲罰,因此我們鼓勵提名人將其提名轉移到不太受歡迎的驗證池,以減少可能的損失。
波卡定義了以下不良行爲的級別:
第 1 級:單發的無響應,即長時間離線。沒有 slash 懲罰,只有凍結 [2]。
第 2 級:併發的無響應或單發的重複簽名。Slash 一小部分質押的 DOT 並凍結。
第 3 級:大概率出於非偶然的不當行爲,但不會在很大程度上損害網絡的安全。例如包括同時出現的重複簽名或在 GRANDPA[3] 上出現的個別不合理投票案例。Slash 少量質押的 DOT 並凍結。
第 4 級:對系統構成嚴重安全或貨幣風險的不當行爲,或大規模串通。Slash 該驗證人背後的所有或大部分 stake 並凍結。
讓我們更詳細地看一下這些違規行爲。
無響應
對於每一個 session 會話,驗證人都會發送一條「我在線」消息,表明它們在線。如果驗證人在一個 epoch 期間沒有生成塊,並且發送 heartbeat 心跳失敗,它將被報告爲無響應。根據重複的違規行爲以及有多少其他驗證人沒有響應或離線,將發生 slash 懲罰。
以下是計算公式:
Let x = offenders, n = total no. validators
min((3 * (x - (n / 10 + 1))) / n, 1) * 0.07
注意,如果少於 10% 的驗證人離線,則不會執行懲罰。
驗證人應該有一個架構良好的網絡基礎設施,以確保節點正常運行以減少被 slash 懲罰的風險。高可用性設置是可取的,最好設置備份節點,並且僅在原始節點可驗證脫機時才啓動(以避免雙重簽名和因重複簽名而被 slash -見下文),以及代理節點 [4],以避免在驗證節點的 IP 地址暴露時被 DDoS 攻擊。這裏有一個關於安全驗證人設置的全面指南。[5]
GRANDPA 重複簽名
驗證人在同一輪的不同鏈上簽名兩個或多個選票。
BABE 重複簽名
驗證人在同一時間段內在中繼鏈上生成兩個或多個塊。
GRANDPA 和 BABE 重複簽名 slash 的懲罰計算如下:
Let x = offenders, n = total no. validators
Min( (3 * x / n )^2, 1)
驗證人可以在多臺機器上運行它們的節點,以確保在其中一個節點出現故障時,它們仍然可以執行驗證工作。應該注意的是,如果他們沒有很好地協調來管理簽名機,那麼重複簽名是可能的。
如果驗證人因任何一項違規行爲被舉報,他們將被從驗證人節點池中移除(也就是凍結),並且在他們移除的時候不會得到支付。他們將立即被視爲不活躍的驗證人,並將失去提名人。他們需要重新發布驗證意圖和收集提名人的支持。
如果你想知道更多關於 slash 的細節,請看我們的研究頁面。https://research.web3.foundation/en/latest/polkadot/slashing/amounts.html
Chilling 凍結
凍結是從活躍驗證人節點池中移除驗證人的行爲,同時在下一個 NPoS 週期中取消它們在可選擇候選人 list 中的資格。
凍結可以是自願性的,並且是驗證人可以決定的,例如,如果驗證人的環境或服務器提供商有計劃的中斷,並且驗證人希望退出以保護自己不被 slash。當發生自願行爲時,那麼凍結將使驗證人在當前會話中保持活躍狀態,但會在下一個會話中將它們移動到非活躍集。驗證人不會失去他們的提名人。
當被用作懲罰的一部分時,被凍結意味着未被提名。它還會在當前剩餘的 era 中喪失驗證人的能力,並在下一次選舉中移除違規的驗證人。
Polkadot 允許禁用一些驗證人,但是如果禁用的驗證人的數量太大,Polkadot 將觸發一個新的驗證人選舉以獲取完整的驗證人節點池。禁用的驗證人需要重新提交他們的驗證意圖和重新獲得提名人的支持。
跨 Era 的 Slash 懲罰
在 NPoS 中計算 slash 懲罰有三大難點:
一個提名人可以提名多個驗證人,並通過其中任何一個被 slash。
在被 slash 之前,這些 stake 質押會被一個 era 一個 era 的重複使用。連續爲 E 個 era 提名 N 個代幣並不意味着你有 N*E 個代幣用於 slash,你還是隻有 N 個代幣。
可懲罰的違規行爲還可以在事情發生後才被發現,且不是按照順序的。
爲了平衡以上的幾點,我們只對參與者在某個時間段內可以收到的最大懲罰進行懲罰,而不是所有懲罰的加總。這樣可以防止過度 slash。同樣地,計算最大 slash 的時間跨度是有限的,驗證人在 slash 事件後被凍結並撤回提名,如前一節所述。這可以防止怒退(rage-quit)攻擊,在這種攻擊中,一旦被發現行爲不端,參與者故意行爲不端的程度會更高,因爲反正他們的 slash 數額已經達到最大值。
獎勵分配
注意,Kusama 的運行速度大約是 Polkadot 的 4 倍,但出塊時間除外。Polkadot 同樣以大約 6 秒的間隔出塊。
每個 session 記錄一次獎勵(在 Kusama 上大約是 1 小時,在波卡上大約是 4 小時),並在每個 era 進行計算(在 Kusama 上大約是 6 小時,在波卡上大約 24 小時)。因此,Kusama 上每天計算四次獎勵,在波卡上每天計算一次獎勵。
爲了獲得你的 staking 獎勵,必須有人爲你提名的每個驗證人進行領取。staking 獎勵在 84 個 era 內有效,在波卡上約爲 84 天,Kusama 上約 21 天。有關原因的詳細信息,請參閱「simple payouts[6]」頁面。
「注意:如果此時沒有人申領你的 staking 獎勵,則你將無法申領,你的部分 staking 獎勵將丟失。」
領取獎勵
如果你進入 Polkadot JS(https://polkadot.js.org/apps/#/staking/payout)的 staking 支付頁面,你會看到你在過去 84 個 era 提名的驗證人列表。每個人都可以選擇觸發所有無人認領 era 的 payout 付款。請注意,這將支付給每個在那個 era 提名的驗證人,任何人都可以調用它。
獎勵分配的舉例
PER_ERA * BLOCK_TIME = **Reward Distribution Time**
3600 * 6 seconds = 21,600 s = 6 hours
***These parameters can be changed by proposing a referendum***
驗證人可以創建一部分不與提名人共享的獎勵。這個部分由區塊獎勵的百分比,而不是絕對值來計算。扣除這個值後,剩餘部分將基於他們 stake 的值,在驗證人和投票給該驗證人的所有提名人之間進行分配。
例如,假設驗證人的塊獎勵是 10 DOT。驗證人可以設定驗證人的佣金是 50%,在這種情況下驗證人將收到 5 個 DOT。剩下的 5 個 DOT 將在驗證人和他們的提名人之間,根據每個提名人擁有的 stake 比例進行分配。注意,驗證人可以設置自己的自抵押,對於這個部分的計算,它們的自抵押可以認爲是另一個提名人。
獎勵可以直接分配同一個帳戶(controller)或 stash 帳戶(增加質押數值或不增加質押數值)。也可以在不需要取消所有 stake 的情況下充值/提取一些綁定的 DOT。
有關驗證人 payouts 的詳細信息,請參閱本指南。[7]
通脹
通貨膨脹率在第一年被設計爲 10%,驗證人獎勵跟 stake 的數量成函數關係,其餘部分的獎勵將被存入財政部。

Source: Research - Web3 Foundation[8]
X 軸:已經 stake 的 DOT 的比例
Y 軸:通脹率,年化百分比
藍色的線:質押者的通脹獎勵
綠色的線:質押者的回報率
上圖顯示了波卡網絡的通貨膨脹模型。根據 staking 的參與情況,通脹在驗證人與財政部之間的分配比將動態變化,以提供參與(或不參與)staking 的激勵。例如,如果所有 KSM/DOT 的 50% 被質押,那麼所有的通貨膨脹都會流向驗證人,但是任何偏離了 50%(正或負)的相應的餘數都會被髮送到財政部,並有效地減少驗證人的 payouts。
想要了解更多關於網絡通貨膨脹模型設計的人,請看這裏。https://research.web3.foundation/en/latest/polkadot/Token%20Economics.html
爲什麼質押?
從網絡啓動開始,就存在每年 10% 的通脹率
50% 的目標 staking 量
約 20% 的年化收益
爲什麼不質押?
代幣解綁定後需要鎖定,在波卡上鎖定 28 天,Kusama 上是鎖定 7 天
如果驗證人被發現行爲不端,將受到懲罰
你想要把代幣用於平行鏈插槽
波卡會有多少驗證人?
計劃是從大約 50 到 100 個開放驗證人名額開始,並逐步開放。驗證人數量的上限尚未確定,但僅受限於由頻繁和大量的點對點消息傳遞而造成的網絡帶寬緊張。Polkadot 在網絡成熟的時候將擁有約爲 1000 個驗證人。而波卡的金絲雀網絡 Kusama 目前有超過 400 個驗證人插槽。
參考鏈接
[1]session keys: https://wiki.polkadot.network/docs/en/learn-keys#session-keys
[2]凍結: https://wiki.polkadot.network/docs/en/learn-staking#chilling
[3]GRANDPA: https://wiki.polkadot.network/docs/en/learn-consensus
[4]https://wiki.polkadot.network/docs/en/maintain-guides-how-to-setup-sentry-node: https://wiki.polkadot.network/docs/en/maintain-guides-how-to-setup-sentry-node
[5]https://wiki.polkadot.network/docs/en/maintain-guides-secure-validator: https://wiki.polkadot.network/docs/en/maintain-guides-secure-validator
[6]simple payouts: https://wiki.polkadot.network/docs/en/learn-simple-payouts
[7]https://wiki.polkadot.network/docs/en/maintain-guides-validator-payout: https://wiki.polkadot.network/docs/en/maintain-guides-validator-payout
[8]Research - Web3 Foundation: https://research.web3.foundation/en/latest/polkadot/Token%20Economics.html
[9]Secure validator setup: https://wiki.polkadot.network/docs/en/maintain-guides-secure-validator
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia