原标题:如何计算波卡的 Staking 收益?
如果你想知道自己的 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.html3. 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:这个账户存放绑定来用于 staking 的资金,但将一些功能委托给 Controller 控制账户。因此,你可以使用保存在冷钱包中的 stash 密钥进行参与,这意味着它始终处于脱机状态。你还可以指定一个 Proxy 代理帐户在治理议案中投票。
Controller:这个帐户代表 Stash 帐户行事,指示有关提名和验证的决定。它可以设置像 payout 支付账户和佣金等偏好。如果你是验证人,它还可以设置 session keys[1] 会话密钥。它只需要足够的资金来支付交易手续费。
我们设计了这种独立密钥类型的层次结构,这样验证人运行者和提名人可以比只有一个密钥的系统更好地保护自己。通常,当你为多个角色使用一个密钥时,或者即使你使用与派生相关的密钥,也会失去安全性。特别是,千万不要将任何帐户密钥用于“热” session key 会话密钥。
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. validatorsmin((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. validatorsMin( (3 * x / n )^2, 1)
验证人可以在多台机器上运行它们的节点,以确保在其中一个节点出现故障时,它们仍然可以执行验证工作。应该注意的是,如果他们没有很好地协调来管理签名机,那么重复签名是可能的。
如果验证人因任何一项违规行为被举报,他们将被从验证人节点池中移除(也就是冻结),并且在他们移除的时候不会得到支付。他们将立即被视为不活跃的验证人,并将失去提名人。他们需要重新发布验证意图和收集提名人的支持。
如果你想知道更多关于 slash 的细节,请看我们的研究页面。https://research.web3.foundation/en/latest/polkadot/slashing/amounts.htmlChilling 冻结
冻结是从活跃验证人节点池中移除验证人的行为,同时在下一个 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 Economics.html
为什么质押?
从网络启动开始,就存在每年 10% 的通胀率
50% 的目标 staking 量
约 20% 的年化收益
为什么不质押?
代币解绑定后需要锁定,在波卡上锁定 28 天,Kusama 上是锁定 7 天
如果验证人被发现行为不端,将受到惩罚
你想要把代币用于平行链插槽
波卡会有多少验证人?
计划是从大约 50 到 100 个开放验证人名额开始,并逐步开放。验证人数量的上限尚未确定,但仅受限于由频繁和大量的点对点消息传递而造成的网络带宽紧张。Polkadot 在网络成熟的时候将拥有约为 1000 个验证人。而波卡的金丝雀网络 Kusama 目前有超过 400 个验证人插槽。