以太坊2.0相关概念

Catalogue
  1. 1. 什么是验证者?
  2. 2. 信标链运行流程
  3. 3. 怎么成为验证者?
  4. 4. 奖励、惩罚、风险
  5. 5. 参考资料

什么是验证者?

Validator:即验证者,是 PoS 共识过程的参与者(就像 PoW 共识中提交工作量证明的矿工)。共识时可以做提议者(proposer)或见证者(attestator)。

信标链运行流程

信标链所用的 PoS 机制为 “Casper FFG 算法” + “LMD-Ghost 分叉选择规则”。

信标链的基本时间单位不是 “区块”,而是 slot 和 epoch。一个 slot 是 12 秒钟;一个 epoch 是 32 个 slot,即 6.4 分钟。每当一个 epoch 终止时,验证者们就根据预先确定的规则(以及信标链当时的状态)将每一位验证者分配到下一个 epoch 的某一个 slot 当中参与投票(称为 “见证者(attestator)”);与此同时,每个 slot 也会有专门的一个验证者负责提议区块(称为 “提议者(proposer)”)。如果某个 slot 的提议者在当时离线了,该 slot 就无法出块,形成了一个 “跳过(missed)” 的 slot。所以多久出一个块在信标链上是不确定的,理想情况下是每 12 秒就能形成一个区块。

怎么成为验证者?

跟一个信标链验证者相关的密钥对有两对,两把公钥都需要在存入押金时提交到押金合约。一对我们称为 “验证密钥对”,该密钥对的私钥用于验证者在参与共识的时候签名发送见证消息(attestation);另一对我们称为 “取款密钥对”,该密钥对的私钥用于在验证者完全退出验证者队伍后取回自己的验证者名下的资金。两把私钥都需要自己保管,如果验证私钥泄露,则他人可用你的私钥发送见证消息,导致你的验证者被大力惩罚;如果取款私钥泄露,则他人可在你的验证者退出之后先你一步取走你属于你的全部资金。

首先,你需要在当前的以太坊1.0区块链上,向押金合约发送 ETH 并提供自己为验证者生成的取款公钥和验证公钥,然后等待约 7.5 个小时,就能注册成为验证者了。注册成功后,你的验证者还需在候选队列中排队一段时间,才会实际参与 PoS 共识并获得奖励,这个时间的长短视队列的长短而定(因为每个 epoch,能从候选队伍进入 “活跃验证者” 集合的验证者数量是有限的)。具体可通过验证者快速启动器完成:

其次,你需要有一台保证自己能控制、电力和网络供应稳定,并且硬件具备一定水准的计算机,运行一种客户端软件,由该软件托管你的验证私钥并不断地在网络中收发消息,来参与信标链的 PoS 共识。毕竟,从信标链(其他验证者)的角度来看,一个验证者就是名下有一些钱、需要不断发送见证消息的密钥对,如果你不参与共识,你的钱就血本无归了。具体而言,你的计算机需要运行两种软件:(1)“Eth1 客户端”,例如 Geth、OpenEthereum、Nethermind、TurboGeth;(2)“Eth2 客户端”,例如 Lighthouse、Prysm、Teku、Nimbus。两类都只需选择一个即可。之后你可以通过区块浏览器查看:

奖励、惩罚、风险

验证者的奖励和惩罚是每个 epoch 结算一次。每当一个 epoch 结束,新一个 epoch 开始的时候,验证者们就根据预先确定的规则结算该 epoch 的验证者奖惩,从而确定新一个 epoch 中不同验证者的投票权重。

在信标链上,奖励并不是均分的,Casper FFG 和 LMD-Ghost 形成了一套相当复杂的规则、根据每个 epoch 内各验证者的不同表现来为它们安排奖惩,所以,你可以说每个验证者的收益率都是不一样的,有些验证者能获得比全网均值更高的收益率。

那些奖惩措施都是怎么回事?听说只要不离线就没事?

信标链(Casper FFG + LMD Ghost)的设计哲学是:扣押了验证者的押金之后,就可以通过惩罚来遏制验证者作出破坏性的行为;同时,还可以通过奖励的差别来鼓励他们相互合作。

惩罚基本上可分为三类:

  1. 针对破坏共识的行为,如一个提议者在所在 Slot 提议了两个不同的区块(双重提议);在执行 Casper FFG 投票时双重投票和环绕投票;此类行为是最严重的,会触发所谓的 “罚没(Slashing)”;
  2. 对离线验证者的惩罚,称为 “怠工惩罚”。在网络具备终局性的时期,这种惩罚的力度会比较小,大体相当于如果你正常参与共识会得到的奖励(如果你参加共识会得到 3 块钱,那么你不参加会倒扣 3 块钱)。而在网络不具备终局性的时期,这一惩罚会随着缺乏终局性状态的延长而不断加码。
  3. 在整个网络缺乏终局性的时期,在线的验证者也会遭到惩罚,但这个惩罚的力度是固定的,不会不断加大。所以并不是你一直在线就没事了,如果验证者大规模出错,你的正常验证者也会被惩罚,只不过被惩罚得少一些。(之所以这样设计是为了防止验证者在缺乏终局性的时期有意不传播、不打包其他验证者的见证消息来渔利。)

怎么定义 “离线” 呢?答案是,在一个 epoch 结束的时候,该 epoch 内的所有区块都不包含某个验证者的见证消息,则视其为离线。所以 “在线” 的要求并不会特别严格。

奖励则更简单一些:

  1. 作为在线的区块提议者,可以获得 “区块提议奖励” 和 “检举人奖励”(如果所打包的区块内包含了对被罚没行为的检举消息的话,区块提议者可获得这部分被罚没的押金;在后续的发展中,这一设计可能会改变)
  2. 作为在线的见证者,可以获得正常的 “FFG 投票奖励”。

其中,区块提议者在自己的区块内打包的见证消息越多(要求消息都是首次被打包),“区块提议奖励” 越高;而见证者在发出见证消息后,该条见证消息越快被打包,见证者获得的奖励也越高 —— 这就是在鼓励验证者们相互合作了。

罚没的力度到底有多大?

会被罚没的行为有:双重提议区块、FFG 双重投票、FFG 环绕投票。遭到罚没之后,被罚没的验证者将面临三种惩罚:

  1. 在遭到罚没时当下执行的一次性基本罚没;为该验证者有效余额的 1/32(在当前推出的信标链上,罚没和惩罚力度都被虚弱了,日后可能会再提高;话说回来这事也没公开讨论过呀)
  2. 连续不断的 “离线惩罚”;这是因为,被罚没的验证者的状态会被强制改成 “slahing(被罚没)”,在该状态下,每个 epoch 他都会被惩罚(力度固定为基本奖励的 3 倍);待被罚没的验证者 “完全退出(exicted)” 之后,这种惩罚会中止;(这个时长与等待退出的验证者的数量正相关)
  3. 被罚没的验证者转成完全退出状态之后,还需要等待 8192 个 epoch 才能取回自己剩余的资金,在此期间,系统还会根据该验证者作恶被抓的的时间点前后 18 天内被罚没的押金数量施加进一步的惩罚。如果被罚没的押金数量超过 33%,这个惩罚力度可高达有效余额的 100%(即最高可达 32 BETH)。

我如果疏忽了,放任自己的验证者一直离线,押金会被罚到变成 0 吗?

一般来说不会,当验证者的有效余额低于 16 BETH 时,验证者就会从 “活跃” 状态转入 “即将退出” 状态,等待排队退出。

但值得注意的是,即将退出的验证者仍需正常提交见证消息,如不,则仍会遭到怠工惩罚,在此期间仍会继续损失资金,直至完全退出。

我的验证者可以主动退出吗?

可以,在成为活跃验证者的 9 天后,可以发起主动退出请求,将验证者状态转为即将退出,进入等待退出的队列。

验证者完全退出之后,马上就能取回我剩余的资金吗?

不是,如果你没有被罚没,则完全退出后等待 256 个 epoch 即可取出资金;如果你遭到了罚没,则要等待 8192 个 epoch。但需要注意的是,在当前阶段,该资金仍无法转账。

完全退出之后是否还能再加入成为活跃验证者?

很遗憾,在当前的信标链上,无论是被罚没还是主动退出,抑或被动退出,相关的密钥对都不能再重新成为验证者。不过,你可以在自己的验证者还是活跃状态时,在以太坊区块链上通过押金合约为自己的验证者补充押金(但这种补充不是即时到账的)。

参考资料