摘要:感谢 Joseph Schweitzer 和 Danny Ryan 的审校。 又见面了!在上期开篇文章中我们讨论了 eth2 的设计理念,本文将透过设计理念主要谈谈 eth2 的激励机制。更确切地说,我们将探析在 eth2 中举
感谢 Joseph Schweitzer 和 Danny Ryan 的审校。
又见面了!在上期开篇文章中我们讨论了 eth2 的设计理念,本文将透过设计理念主要谈谈 eth2 的激励机制。更确切地说,我们将探析在 eth2 中举足轻重的激励机制,以及如何通过奖励、惩罚和罚没 (slashing) 的形式得以实现。
之后我们会再谈到如何以及为何激励验证者保持在线,为何验证者离线不会被罚没等等话题。我们开始吧!
如果不是因为离线,那什么情况下会被罚没(slashings)?
罚没主要出于两个目的:(1) 让攻击 eth2 的代价贵到令人望而却步;(2) 查核验证者是否真正履行了职责,防止验证者消极怠惰。
对验证者进行罚没,是指如果验证者被证实存在破坏行为,其(部分)质押金将被销毁。在 eth2 阶段 0 时期,验证者主要会因为两种恶意行为被罚没:双重投票(double voting)和环绕投票(surround voting),有关细节参见 Casper FFG 运行机制的论文。
双重投票,即验证者在同一个 epoch 中对两个不同区块进行投票,这也就意味着验证者对两种对立的现实版本都表示了支持。需要禁止该行为最直观的原因就是,恶意验证者可以在区块 A 中发送了一笔交易 a,在区块 B 中发送了一笔交易 b,且交易 a 和交易 b 花费了等值的 ETH。因此双重投票可以被看做是 PoS 版本的双花攻击(double-spend attack)。
环绕投票也是通过罚没来惩罚恶意投票的验证者,以防止其同时创造多个不同的现实版本,避免了两个不同的链被最终确认(finalize)。具体地说,当验证者对某个现实版本进行投票,然后又对另一个版本进行投票,但并没有表明他们不再信任第一个版本,那么该验证者的这些证明(attestations)就是环绕投票(译者注:这里说得太绕了。简单来说,Casper FFG 在敲定(finalize)区块的时候,同时也需要指定一个该区块的后代区块作为辩护区块;之后,验证者只能选择敲定这个辩护区块(及以后的区块),而不能敲定上一个已敲定区块与辩护区块之间的其它区块,如果这么做了,就是所谓的 “环绕投票”。可以画个图来看看)
在阶段 0 中,双重投票和环绕投票行为是唯二会导致验证者被罚没的情况,但之后的阶段中会增加其他规则,以确保验证者真正履行其职责,存储其签署的分片数据且使数据可用,防止验证者消极怠惰或隐瞒信息。
正确遵循协议且操作正常的验证者不会创建可能导致罚没的投票。但无心作恶时,验证者也可能因为软件 bug 或偶然原因而发出会导致罚没的消息。那么出现这种情况怎么办?
为了将这种意外损失降低到最小,被销毁的质押金会与同时段被罚没的验证者数量成一定比例。因为如果只有数量很少的验证者进行了被罚没的行为,那么就不太可能是试图对 eth2 链发起攻击(因为攻击成功需要大量的验证者)。
因此,如果只有少数验证者被罚没,那么其行为会被认定为无心之过,惩罚力度也不会很大(最低罚没金额为1 ETH)。反之,如果大量验证者几乎同时产生不当行为,那么他们的质押金很大一部分则会被销毁(最高罚没金额为全部余额),因为这种情况会被视作针对网络的攻击行为。
被罚没的验证者不能继续参与协议,并且会被强制退出。如果验证者是无心之过,那么这种措施可以防止犯错的验证者一错再错,被重复罚没;如果是网络攻击的情况,则可以将恶意的验证者从协议中踢出。
验证者下线了又会怎样?
如果在本应该参与协议执行验证工作的时候离线,离线的验证者会被惩罚,而在正常情况下,离线只会使得验证者失去他们本可以通过验证工作所获取的奖励。也就是说,如果验证者 50% 以上的时间在线,他们的质押余额会随时间推移增加。
这种机制带来的结果是,对于需要离线进行维护等工作的验证者客户端,最好是选择短时间离线,而不是采取退出协议再重新加入的方式(因为退出和进入都存在相关延迟)。
这也就意味着,减轻了验证者在客户端备份和网络延迟上的负担,因为离线的惩罚并不那么严重。实际上,如果一个验证者系统中有两个实体可以对消息进行签名,可能会带来负面影响,因为主客户端和备份客户端有可能同时在线,进而导致创建可能导致罚没的投票(即上文提及的双重投票),Cosmos的首个罚没案例就是这样发生的。
这种离线惩罚机制能够成立的前提是区块正在被最终确认,即有 2/3 的验证者(按权益加权)在线并且保证及时投票。这是 eth2 在正常情况下应该达到的预期状态。如果少于 2/3 的验证者在线,就说明 eth2 中发生了灾难性的错误。在这种情形下,(以太坊 Casper)所属的共识协议族是无法实现共识的。
如果超过 1/3 的验证者离线, eth2 会作何反应?
如果发生这种情况,那么这些离线的验证者就会面临 inactivity leak(消极)惩罚。随着离线时间推移,受到 inactivity leak 惩罚的离线节点会被扣减余额,如此一来,在线验证者占验证者总数(权益加权)的比例就能够再次超过2/3,使得 eth2 得以继续运行协议。
诸如Inactivity leak此类的设计,使得 eth2 具备从灾难性事件中幸存下来的能力。如果这种灾难性状况导致超过 1/3 的验证者离线,那么这些离线验证者会发现他们的余额不断被扣减,直至他们的余额对 eth2 的继续运行无足轻重。
反相关性 & 去中心化
罚没机制和 inactivity leak(消极惩罚)机制促使验证者在作出可能导致自己被惩罚的惩罚时与其他验证者保持差异化。也就是说,为了确保自己受到的罚没尽可能轻微、不受到 inactivity leak 惩罚,验证者应该会努力保证不要在同一时间跟其他客户端陷入同一种错误。
这给所有验证者施加了压力,他们需要将作为验证者的方方面面都去中心化,例如,如果验证者都依赖于相同的现实来源(如 Infura)或是都借助 AWS 来托管客户端,一旦这些方面发生什么错误,验证者们会面临更为严厉的惩罚。
有这么多惩罚机制,那验证者是否吃力不讨好?
正如在上期文章中所说,“如果缺乏必要的激励措施,验证者就有可能偷懒、收受贿赂甚至尝试攻击网络”。上文所提到的惩罚机制是为了防止作恶行为,但同时也需要通过奖励来激励验证者为 eth2 进行有益工作。验证者奖励主要分为三类:
检举者奖励
通过提供证明,向网络发起某验证者正在作恶的警告,这些验证者能够因其为 eth2 扫除不利而获得奖励。
区块提议奖励
验证者会被随机地分配产生区块的任务,被选中的验证者就是 “区块提议者”(proposer)。区块提议者能够通过以下方式获得奖励:
打包来自检举者的 “某验证者应被罚没” 证明;
打包来自其他验证者的见证消息(attestations)
当验证者被选中提议区块时,奖励能够鼓励其向区块链提供有用信息。
见证人奖励
见证消息(attestations)是表明验证者同意 eth2 中某个决定的投票。这类信息构成了 eth2 的共识基础,见证人则会因下面 5 个因素而获得奖励:
见证消息上链
与其他验证者就区块链历史记录达成共识
与其他验证者就区块链最前部分达成共识
因见证消息上链的速度快
在指定分片中指向正确区块
开拓验证者收益
在 PoS 系统中,有两种常见的验证者奖励模式:固定奖励(fixed rewards)和固定通胀(fixed inflation)。
在固定奖励模式中,验证者通过履行职责获得固定数额的奖励,而通胀率取决于验证者数量。这种模式需要解决的问题在于如何设置回报率(reward rate)。如果回报率过低。验证者数量会过少;如果回报率太高,则会衍生出安全性需求之外的验证行为,并且浪费资金。
因此,使用固定通胀率的模式更受欢迎。在这种模式中,既定数额的奖励由所有的活跃验证者瓜分。这种模式的好处在于利用市场的力量来寻求合适的奖励数额,因为验证者可以根据当下的收益自行选择是否参与验证。
但这种模式也存在一定缺陷。验证者奖励有可能是不稳定的,这使得对于个人验证者来说,很难做出盈利性决策;这种模式还使得协议容易暴露在 “泄气攻击” 之下,受到这种攻击时,验证者会试图阻止其他验证者参与进来,以此提高自己的奖励(即便自己会受到暂时的损失)。
eth2 旨在结合两种模式的优点:验证者的奖励与 ETH 质押总量的平方根成正比。这种混合奖励模式的好处是在抑制通胀变化和验证者回报率的同时,依然能够借助市场力量来决定验证者的奖励金额。
抱最大希望,做最坏打算
eth2 激励机制的方方面面都遵循了上期文章中所阐述的协议设计理念。例如,反相关性机制有助于去中心化,inactivity leaks(消极)惩罚有助于 eth2 具备从灾难性事件中幸存下来的能力……但支撑起 eth2 激励机制的主要理念还是:“如果缺乏必要的激励措施,验证者就有可能偷懒、收受贿赂甚至尝试攻击网络”。
如果有人试图用本文中提到的任何一种方式来攻击 eth2 ,那最好做足损失大量ETH的准备,因为无论如何,攻击者都会输得一无所有。
—-
编译者/作者:乎日历
玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。