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 问题。

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

视野开拓

预测时,我们需要在好奇和怀疑之间寻求平衡。这两者是可以相互协调和融合的。我们越是渴望检验自己的假设,就越愿意承认我们关于世界的知识存在很多不确定,越愿意承认不可能做出完美的预测,越不会陷入失败的恐慌中,也会有更多的自由让思维驰骋。对自己不了解的事物作进一步的了解,我们也许就能做出更多准确的预测。-《信号与噪声》

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注