什么是 Cosmos 网络中的验证者(验证节点)?
Cosmos Hub (Cosmos 的核心网络)是基于 Tendermint 开发的,Tendermint 是一种基于拜占庭容错的 PoS 机制,它依靠一组验证者来保护网络。验证者要运行一个全量节点(Full Node)网络,并参与节点间的投票,维护网络正常运行。验证者在区块链网络中产生新的区块并获得出块收益,验证者也必须对社区治理提案进行投票。验证者的投票权重取决于他存放的权益(验证者抵押 Atom 的数量占全网 Atom 抵押的数量)。
通俗的讲就是只要你持有 Atom 就可以成为 Cosmos 网络的节点,能够参与整个网络的维护与治理,同时获取维护网络的出块奖励和手续费奖励。在这里,Atom 可以理解为 PoW 网络中的专用矿机,持有 Atom 的数量可以理解为算力,验证者可以理解为矿池,持有 Atom 的用户可以理解为矿工。
什么是权益?
Cosmos Hub 采用权益证明(PoS)机制,验证者的权益取决于抵押的权益代币(Atom)总量。一个验证者持有的 Atom 总量等于验证者持有的 Atom 与普通用户委托给验证者 Atom 的数量和。
通俗的讲就是验证者抵押的 Atom 数量越多,拥有的权益就越多,在为社区提案投票时所占的权重就越高。
如何申请成为验证者(验证节点)?
Cosmos 网络的任何参与者都可以申请成为验证节点,由此成为验证者候选人。当候选人宣布参选之后,委托人可以将 Atom 代理给该候选人。候选人的总权益等于自己抵押的 Atom 加上代理 Atom 的总量。
候选人的总权益量决定其能否成为验证者,在 Cosmos 网络启动后,权益量排名前 100 的候选者成为验证者。验证者的权益量排名决定了验证者的出块频率和获取的利润。当验证者的权益量跌出前 100 后,就会失去验证者的特权,变为候选者。网络中验证者的数量以每年 13% 的比例增加,最大数量为 300。
验证者有哪些责任?
验证者主要责任有以下两点:
- 验证者必须确保节点持续在线并保持私钥安全存储
- 验证者有义务为社区内提案投票,积极参与社区治理
验证者在 Cosmos 网络治理系统中扮演着重要角色。他们不仅要保证网络验证节点稳定运行,同时也要积极参与治理。Cosmos Hub 的验证者和委托人可以对 Cosmos 网络参数变更的提案(例如区块 gas 数值)进行投票,进行节点联合升级,也可以对 Cosmos Hub 的基本规则进行修订。
作为网络的基石,验证者要对每个提案进行投票。如果在规定时间内委托人未投票,则他的投票会与验证人投票选项保持一致。最重要的是如果验证人缺席一次投票,其代理的选票会被“销毁”一定比例。
验证者提交出块的频率是如何计算的?
提交出块的验证者称为提议人(Proposer)。Cosmos 网络遵循固定的规则选举每个区块的提议人,选举成为提议人的频率与其权益成正相关。举例来说,网络总共有 100 个 Atom,持有 10 个 Atom 的验证者就会有 10% 可能性成为出块验证者。
成为验证者会有哪些收益?
每个验证者可以获得如下类型的收益:
- 抵押奖励
- 出块奖励
- 交易费用奖励
网络中的总收益会根据验证者的权益比例进行分配,我们以两个验证者 A、B 为例,A 的权益比例为 80%,B 的权益比例为 20%,若网络中总抵押收益为 1000 Atom,那么 A 的抵押收益为 800 Atom,B 的抵押收益为 200 Atom。
验证者的运营团队如何获取收益?
验证者的收益会在验证者和其委托人之间进行分配。验证者的运营团队可以对委托人分配的收益收取一定比例的佣金。验证者可以自由设定佣金的初始比例,每日最大变动率,和最大佣金比例。Cosmos Hub 会执行验证者的参数设置。这些参数必须在参选验证者前设定,在当选成为验证者之后无法修改。
抵押收益如何分配?
验证者的抵押收益会根据验证者的权益比例进行分配。在验证者抵押的代币池中,委托人的收益会根据其抵押代币的比例进行分配。
我们以 10 个相同的验证者为例。因为他们是相同的,所以每个验证者占整个网络的权益比例为 10%。假设每个验证者内部自己抵押 Atom 比例为 20%,委托人抵押 Atom 比例为 80%,并且每个验证者收取的佣金比例均为 1%。假设网络中总抵押收益为 1000 Atom。首先这总收益不会直接给到出块提议验证者,而是在全部验证者之间进行分配。由此计算每个验证者的总收益为 100 Atom。这 100 Atom 会根据比例进行分配:
运营团队收取的佣金:100*(1-20%)*1%=0.8Atom
验证者收益:100*20%+佣金=20.8Atom
委托人总收益:100*80%-佣金=79.2Atom
委托人之间根据委托权益的比例分配 79.2Atom 的收益。此外,出块收益也是按照这种方式进行分配。
交易费用如何分配?
交易费用以类似的机制按照比例分配。当出块提议人签名的区块预提交超过最小预提交的限额,出块提议人会收到额外的奖励。
出块提议人后签名该区块之前,必须有超过 ⅔ 的验证者发起预提交。出块提议人会根据发起预提交的验证者的比例获取额外的奖励,奖励的范围在 1% 至 5% 之间波动,当有 ⅔ 的验证者发起预提交时奖励比例为 1%,当全部验证者都发起预提交时奖励比例为 5%。但是节点不应该等待预提交投票太久而导致出块超时,错过本轮出块。因此出块提议人需要在等待获得更多签名和因超时丧失本轮出块收益的风险之间进行权衡。这个机制用来激励节点提交非空区块,促进节点之间更好的网络连接由此减少网络监管成本。
我们利用上面的例子来更好的解释前面的机制。我们以 10 个相同的验证者为例。因为他们是相同的,所以每个验证者占整个网络的权益比例为 10%。假设每个验证者内部自己抵押 Atom 比例为 20%,委托人抵押 Atom 比例为 80%,并且每个验证者收取的佣金比例均为 1%。假设现在成功生成了一个区块并产生 1025.51020408 Atom 的交易费用。
首先,需要交 2% 的税。税收会进入 Atom 的保留池。保留池被用来进行社区治理,例如 bug 奖励和升级奖励。
2% * 1025.51020408 = 20.51020408 Atom 进入到保留池。此时剩下了 1005 个 Atom。
再假设该区块获得了 100% 的签名,由此可以获得 5% 比例的奖金。假设每个验证者出块的交易费用奖励为 R:
9R + R + R5% = 1005 => R = 1005/10.05 = 100
对于出块提议人:
总收益池为 R + R * 5%: 105 Atom
佣金为 105 * 80% * 1% = 0.84 Atom
验证者奖励为:105 * 20% + 佣金 = 21.84 Atom
委托人奖励为:105 * 80% - 佣金= 83.16 Atom,委托人之间会根据其委托权益的比例分配。
对于非出块提议节点:
总收益池为R 100 Atom
佣金为100 * 80% * 1% = 0.8 Atom
验证者奖励为:100 * 20% + 佣金 = 20.8 Atom
委托人奖励为:100 * 80% - 佣金= 79.2 Atom,委托人之间会根据其委托权益的比例分配
验证节点销毁的条件是什么?
当验证者作恶或者行为不规范时,该验证者自己抵押的代币以及代理委托人抵押的代币都将被销毁。惩罚的程度会根据不规范行为的类别而不同。有三种行为会导致验证者和委托人的代币被销毁:
双重签名:如果验证者被链 A 节点举报在链 A 和链 B 的同一高度签名区块,则这个节点在链 A 会被销毁。
不可用:如果验证者在最近 X 个区块上没有签名,这个验证者会被销毁 X 倍数的量的代币。如果 X 大于一个上限 Y,则整个验证者会被解绑。
不投票:如果验证者未对提案投票且未投票行为被举报,则会损失少量代币。
需要注意的是即使节点不是故意犯错,当节点宕机,断开链接,被 DDOS 攻击,私钥被盗窃还是会被销毁。
如何防止代币集中在少数几个验证者手中?
目前,社区希望采用自治的方式进行管理。在 BTC 中,当一个矿池过大时,社区通常会停止向其贡献算力。初始阶段,Cosmos 网络也会依靠这种方式。未来,会采取其他机制来防止这种现象:
零惩罚自由委托:让委托人自由选择验证人,减小验证人粘性
黑客悬赏:对黑掉验证者有一定经济激励。对于特定规模的验证者有一定的悬赏。验证者代币规模越大,它的目标也就越大
UI报警:当验证者达到一定规模时,Cosmos Voyager 钱包会对委托人进行风险提示