1. 首页
  2. 区块链

解读以太坊 2.0 Slash 机制:如何避免重度惩罚?

原文标题:《以太坊 2.0 slash 机制详解》撰文:InfStonesslash 意为大幅削减,是 PoS 共识公链常用的对作恶验证人的惩罚机制。以太坊 2.0 的 slash 规则可能是目前所有 PoS 公链中最复杂的一个。通过研读以太坊 2.0 设计规范与源代码,对其 slash 规则做如下解读。

原文标题:《以太坊 2.0 slash 机制详解》

撰文:InfStones

slash 意为大幅削减,是 PoS 共识公链常用的对作恶验证人的惩罚机制。以太坊 2.0 的 slash 规则可能是目前所有 PoS 公链中最复杂的一个。通过研读以太坊 2.0 设计规范与源代码,对其 slash 规则做如下解读。

解读以太坊 2.0 Slash 机制:如何避免重度惩罚?

slash 的种类

slash 一般指对严重作恶行为的惩罚,而非对普通离线节点的惩罚,后者一般被称为 inactivity penalties。在一般的 PoS 公有链中,一般只有「双签」类行为会触发 slash,而在以太坊 2.0 中则特定为下列行为:

  • 在同一个 slot 中提议两个冲突的区块;
  • 在同一个 slot 中投给两个冲突的区块;
  • 投票与历史投票冲突。

行为 a, b 会造成区块链上不必要的分叉,行为 c 则是企图篡改历史。

slash 后验证者状态

slash 后,验证者将被强制进入验证者退出队列,然后退出。

验证者将立刻被扣除 有效余额 /128 作为罚金。如果有效余额是 32ETH,则为 0.25ETH。(需要注意,原设定惩罚量为 有效余额 /32 也即 1ETH,只是在信标链阶段暂时下调至原值的四分之一)

8192 个 epoch (约 36 天)后,验证者账户允许提款(在以太坊 2.0 支持交易功能后)。

允许提款前,被 slash 的节点将在每个 epoch 开始收到 3 倍于在线奖励的惩罚。

被 slash 的验证者不被允许再次回到验证者队列,只能重建新的验证者并重新质押。

多节点同时 slash 的情形

有效余额 /128 的惩罚和每个 epoch 的不在线惩罚之外,还会在被 slash 的 epoch 和允许取款的 epoch 中间一半的位置,也就是被 slash 后 4096 个 epoch 时再受到一次额外惩罚。

该惩罚比例与这期间所有被 slash 的验证人总余额与全网活跃验证人总余额的比例成正比。

解读以太坊 2.0 Slash 机制:如何避免重度惩罚?

原设定正比系数为 3,当前信标链阶段暂时下调至原值的三分之一也即系数为 1。也就是说之后多节点 slash 的额外惩罚会变为当前的 3 倍。

因此,一个验证人节点 slash 后会受到三次惩罚:

  • 立刻被扣除有效余额 /128 (之后会调为有效余额 /32)
  • 每个 epoch 的开始受到惩罚(当前数据每天约 0.009ETH)
  • 多节点同时 slash 的额外惩罚

举报奖励

slash 机制不光对触发 slash 的节点有惩罚,对举报 slash 的「举报人」也会有奖励。正常来讲会奖励分为两部分,一是奖励提交 slash 的「举报人」,金额较大(目前约 0.1ETH),一是奖励打包 slash 区块的出块者,金额较小(目前约 0.025ETH)。目前来看大多数情况下两部分奖励都是直接转移给出块者。

触发 slash 的原因

除非有意为之,大部分过失 slash 发生的情形都是因为在两台服务器上运行了相同的验证人密钥,也即两台服务器运行同一个节点。「一用一备」是传统服务器冗余防宕机的通用做法,很可惜在有 slash 机制的 PoS 公链节点运行问题上,不能如此简单地处理。

InfStones CEO Jonathan Shi 曾在公开演讲中提到:在区块链领域里安全性不等于可靠性。在传统互联网中,安全性和可靠性并不矛盾,可以通过增加系统冗余的方式提高安全性和可靠性。但在区块链中,如果对出块节点做冗余性设计,则很有可能造成多个节点同时出块,导致双重签名;但若不对节点做冗余性设计,就会出现单点故障。如果这个节点掉线,则会导致整个系统服务宕机,影响系统的可靠性。

此外,客户端一般默认有 slash 保护历史记录,该记录通过记录所有历史的 attestation 和 proposal 记录来预防 slash。如果在运行过程中不慎删除该记录,也有可能导致 slash 问题。

质押并建立一个验证人节点,只是第一步也是最简单的一步。

原创文章,作者:CoinKaola,如若转载,请注明出处:https://www.coinkaola.co/news/203698/

发表评论

电子邮件地址不会被公开。 必填项已用*标注