其他
波卡节点的Slash机制是什么,如何减少惩罚的发生?
“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第13期,详解针对网络中的恶意行为,波卡是如何通过Slash机制制衡参与者的。
Slash是什么
Slash意为削减,是针对在网络中作恶验证者的一种惩罚机制。
当验证者在网络中有一些不当行为,例如离线、攻击网络以及运行修改过的软件等,被Slash的验证者会和他们的提名者一起失去一定比例的质押的DOT。所有被Slash的DOT都将被收归到国库中,之所以不选择烧毁或是作为奖励分发,是因为在某些情况下,比如不是由验证者自己的错误而是运行错误导致的Slash或者是强制性的脱机行为,议会可以以简单的方式从国库中支付来恢复Slash,将通证从作恶验证者转移到建立生态系统的人手中。 值得注意的一点是,Slash只发生在给定提名者的活跃验证中,不会因有其他不活跃验证或等待提名而减少Slash。验证者单独运行也不会减轻Slash,每个验证者都被看作是自己的实体,就像通过质押获得奖励一样。
Slash的评判标准
由于Slash的金额是固定百分比,那么质押的DOT越多,被Slash的DOT也越多。分散Staking也能减少验证者被Slash带来的损失。波卡定义了作恶的级别,但是,这些级别并没有在代码和系统中实现和引用,主要是作为不同程度作恶的参考。 级别1:偶尔的无响应,即在整个epoch处于离线状态。一般不会进行Slash,只是被取消提名。
级别2:无响应和偶尔的重复签名。从Staking中Slash很少一部分,并且被取消提名。
级别3:不太可能是意外行为,但不会对网络造成很严重的危害。比如在GRANPDPA中重复签名或是不公正投票的个别情况。Slash适当的Staking并且被取消提名。
级别4:对系统构成严重安全或货币风险的不当行为,或是群体性共谋。将会Slash验证者全部或是大部分的质押的DOT并且被取消提名。 拥有较大质押支持的验证者比不太受欢迎的验证者将受到更严厉的Slash,因此会鼓励提名者将他们的提名转向不太受欢迎的验证者,以减少可能会带来的损失。因为波卡基本每个验证者节点获得的Staking收益是差不多的,然后再根据支持的DOT数量按比例分配给提名者,所以更受欢迎的验证者的提名者获得的Staking会少一些,并且由于Slash是按照比例来削减的,所以一旦被Slash,受到的损失也比不太受欢迎的验证者更多。
哪些行为会导致遭到Slash惩罚
1
无响应
对于每个会话控制,验证者将发送“I'm Online”心跳以表示他们在线。如果验证者在epoch期间既没有产生新的区块也没有发送心跳,那么它就会被报告为无响应,随之就可能发生Slash的情况。
2
GRANDPA的重复签名
验证者在同一阶段的不同链上签署两张或多张选票
3
BABE的重复签名
验证者在同一阶段的中继链上生成两个或多个区块
4
Chilling
Chilling是指从提名或验证中退出的行为。可以由验证者或提名者在任何时候进行,会在下一个era生效。也指将验证者从活跃的验证者池中移除,使其在下一个NPoS周期中失去可候选的资格。
值得注意的是,Chilling可能是验证者发起或自愿的,比如,供应商计划中断服务时,验证者可以发起Chilling以保护自己不被Slash。如果是自愿的,Chilling就会在当前的会话控制中保持验证者的活跃状态,但是会在下一个会话控制中将验证者移动到非活跃的验证者池中。验证者将不会失去他们的提名者。
5
横跨era的Slashing
在NPoS中,有三个问题需要解决
1、提名者可以提名多个验证者,并通过其中任意一个进行Slash
2、在被Slash之前,质押的DOT在各个era被重复使用。比如你质押的DOT数为N,被重复使用的era数量为E次,这并不意味着你会被Slash掉N乘以E个DOT数,因为你只有N个DOT,所以,Slash只会发生在你实际拥有的Stake上。3、大幅的Slash可以在事后发生,且不按顺序
为了平衡这一点,只对参与者在某段时间内可以获得的最大Slash进行惩罚,而不是总和。这样也可以防止过度的Slash。
为了有更多的人参与到波卡的网络中,共同维护整个网络的安全,波卡通过Staking的方式对那些认真“工作”的波卡网络参与者进行激励。除了正常的正向激励以外,网络也要通过负向激励来抑制网络参与者的作恶行为,对作恶行为的节点进行Slash,即削减质押的DOT,以此对参与者形成制衡,维护整个网络免受损害。
往期推荐
▢ NPoS机制是怎样运作的?
▢ 波卡的Staking机制是怎样的?
▢ 关于DOT通证的几大基础知识
▢ 波卡的跨链是如何实现的?