原标题:《信标链Staking常见问题》

编者注:本文的主要目的是提醒大家参与被称为 “以太坊 2.0” 或 “Eth2.0” 的权益证明(PoS)项目的风险,也希望在这种讲解中帮助大家理解它本身。鉴于该项目在当前具备具体形态的只有其设计组件之一 “信标链”,下文都将用 “信标链” 来指称所谓的 “Eth2.0”。相信大家看完这些常见问题的解答(及其附带材料之后),会理解这种选择。

一. 我需要掌握哪些基本概念?

什么叫 Eth2.0?

Eth2.0 是由以太坊基金会(Ethereum Foundation,简称 “EF”)的研究团队提出的一种区块链架构,旨在实现以权益证明为共识机制、分片化执行的区块链。该部分的研究源自 EF 自设立之初便公开的愿景(实现权益证明共识的区块链)并且一直由 EF 研究团队主导,并且,按照预期,在这样一种架构可用之后,其启动状态将继承当前的以太坊主网(Ethereum Blockchain Mainnet)在某个时刻的账户状态,因此被称为 “以太坊 2.0”。

在实现的步骤上,EF 的计划是分三个阶段推出,每个阶段都增加一个组件和一部分功能。到目前为止,第三个阶段(“Phase 2”)的设计尚未全部完成;Phase 1 的技术目标,也可能发生调整。

当前,以太坊区块链上的 ETH 持币者可以参与的,是以权益证明(PoS)机制来运行的 “信标链”。在设计上,信标链是整个分片化执行系统的核心,但这个核心没有执行的功能(后文我们会看到这一点的影响)。

详情可见:https://ethereum.org/en/eth2/vision/

什么是验证者?

在谈论信标链时,验证者(Validator)是 PoS 共识过程的参与者(就像 PoW 共识中提交工作量证明的矿工)。信标链验证者通过对区块的投票来形成区块链,完成共识后获得出块奖励。

什么是权益证明共识机制?

权益证明(Proof of Stake)是这样一类共识机制:它以参与者占有系统内资源(比如 token)的多少来决定其成为出块者的概率和对区块投票时的投票权重;获得多数参与者支持的区块则成为主链的一部分;而主链区块的支持者也将获得增发的 token 作为奖励。

信标链所用的 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 秒就能形成一个区块。

那么验证者的奖励是每出一个块就发放一次吗?

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

怎么成为验证者?

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

此中的操作非常复杂,请千万不要自己手动操作,务必使用 https://launchpad.ethereum.org/ (验证者快速启动器)完成存入押金的操作。请认准这个网站并多方检查你的交易发往的合约的地址。不要存入 ETH 以外的 token。

该网站的简介可见:https://ethfans.org/posts/eth2-validator-launchpad

其次,你需要有一台保证自己能控制、电力和网络供应稳定,并且硬件具备一定水准的计算机,运行一种客户端软件,由软件来控制您的验证者私钥并实时地参与信标链的共识。具体要求可见后文 “运营建议” 章节。

什么是验证者密钥?

跟一个信标链验证者相关的密钥对有两对,一对我们称为 “验证密钥对”,该密钥对的私钥用于验证者在参与共识的时候签名发送见证消息(attestation);另一对我们称为 “取款密钥对”,该密钥对的私钥用于在验证者完全退出验证者队伍后取回自己的验证者名下的资金。

两把私钥都需要自己保管,如果验证私钥泄露,则他人可用你的私钥发送见证消息,导致你的验证者被大力惩罚;如果取款私钥泄露,则他人可在你的验证者退出之后先你一步取走你属于你的全部资金。

两把公钥都需要在存入押金时提交到押金合约(再强调一遍,除非你非常了解相关的密码学及智能合约,否则请老老实实使用 https://launchpad.ethereum.org/ 的引导流程及其提供的工具,完成操作)。

简介可见:https://ethfans.org/posts/validated-staking-on-eth2-4-keys

你刚刚还提到什么客户端软件?

没错,你需要运行一些软件,由该软件托管你的验证私钥并不断地在网络中收发消息,来参与信标链的 PoS 共识。毕竟,从信标链(其他验证者)的角度来看,一个验证者就是名下有一些钱、需要不断发送见证消息的密钥对,如果你不参与共识,你的钱就血本无归了。

具体而言,你的计算机需要运行两种软件:(1)“Eth1 客户端”,例如 Geth、OpenEthereum、Nethermind、TurboGeth;(2)“Eth2 客户端”,例如 Lighthouse、Prysm、Teku、Nimbus。两类都只需选择一个即可。

不同软件的性能不同、硬件要求不同、编译难度也不同。至于其安全性,很抱歉,这里没有办法为任何一个软件的安全性背书。这里有一些部署教程:

Ubuntu OS + Geth + Prysm: https://ethfans.org/posts/guide-to-staking-on-ethereum-2-0-ubuntu-medalla-prysmLinux + Nethermind + Lighthouse: https://ethfans.org/posts/using-nethermind-to-run-a-validator-in-eth2视频教程:https://www.bilibili.com/video/BV1x541157FC(感谢 ECN 社区)

二. 奖励、惩罚、风险

我想参加信标链,听说早期参与者的收益率很高,是真的吗?

快速启动器网站

同时也提供了一个计算(纯粹数量意义的)年化收益率的粗略工具。一言以蔽之:信标链上资产的增发率与验证者有效余额的总和成反比;有效余额越低(一开始存入的押金较少)、增发率越高、验证者的年化收益率越高,反之亦然。

有效余额可以视为验证者的投票权重,跟验证者的现存余额(如果当下就退出能取回多少钱)是两个概念。介绍可见:https://ethfans.org/posts/understanding-validator-effective-balance

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

但是,另有一些因素使得你不能把它简单地当成 “ETH 本位的年化收益率”,因为如前所述,在设计上,信标链仅有形成共识的能力,没有执行能力,所以用户在信标链上获得的收益是无法在信标链上转账的;其次,在当前阶段,这些收益(以及本金)也无法退回到以太坊区块链上来;最后,在协议的层面支持这些收益及本金的流通,必须等到以信标链为核心的系统具备执行功能才行,而这一点尚未有明确的时间表。(从目前来看,一年内推出执行功能是不太可能的,即使大家都以尽快实现可用性为目标,也会面临短期需要和长期需要的一些冲突。)

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

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

惩罚基本上可分为三类:

(1)针对破坏共识的行为,如一个提议者在所在 Slot 提议了两个不同的区块(双重提议);在执行 Casper FFG 投票时双重投票和环绕投票;此类行为是最严重的,会触发所谓的 “罚没(Slashing)”;

(2)对离线验证者的惩罚,称为 “怠工惩罚”。在网络具备终局性的时期,这种惩罚的力度会比较小,大体相当于如果你正常参与共识会得到的奖励(如果你参加共识会得到 3 块钱,那么你不参加会倒扣 3 块钱)。而在网络不具备终局性的时期,这一惩罚会随着缺乏终局性状态的延长而不断加码。

(3)在整个网络缺乏终局性的时期,在线的验证者也会遭到惩罚,但这个惩罚的力度是固定的,不会不断加大。所以并不是你一直在线就没事了,如果验证者大规模出错,你的正常验证者也会被惩罚,只不过被惩罚得少一些。(之所以这样设计是为了防止验证者在缺乏终局性的时期有意不传播、不打包其他验证者的见证消息来渔利。)

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

奖励则更简单一些:

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

(2)作为在线的见证者,可以获得正常的 “FFG 投票奖励”。

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

关于信标链验证者的奖惩,最详细的简介见:

https://ethfans.org/posts/rewards-and-penalties-on-ethereum-20-phase-0

关于 Capser FFG (终局性、双重投票、环绕投票)的简介,见:

https://ethfans.org/posts/casper-ffg-explainer-by-adiasg 和 https://ethfans.org/posts/casper-ffg-in-eth2-0

罚没的力度到底有多大?

会被罚没的行为有:双重提议区块、FFG 双重投票、FFG 环绕投票。

遭到罚没之后,被罚没的验证者将面临三种惩罚:

(1)在遭到罚没时当下执行的一次性基本罚没;为该验证者有效余额的 1/32(在当前推出的信标链上,罚没和惩罚力度都被虚弱了,日后可能会再提高;话说回来这事也没公开讨论过呀)

(2)连续不断的 “离线惩罚”;这是因为,被罚没的验证者的状态会被强制改成 “slahing(被罚没)”,在该状态下,每个 epoch 他都会被惩罚(力度固定为基本奖励的 3 倍);待被罚没的验证者 “完全退出(exited)” 之后,这种惩罚会中止;(这个时长与等待退出的验证者的数量正相关)

(3)被罚没的验证者转成完全退出状态之后,还需要等待 8192 个 epoch 才能取回自己剩余的资金,在此期间,系统还会根据该验证者作恶被抓的的时间点前后 18 天内被罚没的押金数量施加进一步的惩罚。如果被罚没的押金数量超过 33%,这个惩罚力度可高达有效余额的 100%(即最高可达 32 BETH)。

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

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

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

关于验证者的状态转换,见:https://ethfans.org/posts/understanding-the-eth2-validator-lifecycle

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

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

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

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

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

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

除了被惩罚的风险、开发路线的风险之外,还有什么风险?

最显然的是,还有客户端软件实现的风险,即客户端软件可能出错。如果你使用了出错的客户端,当然会直接受到影响;但即使你没有使用出错的客户端,仍然可能因为掉线的验证者太多、网络缺乏终局性而间接被波及。

什么时候信标链可能开放转账的功能?还面临哪些技术困难?

任一功能完成,都能使信标链开放转账功能:(1)让信标链具备单纯的转账功能(甚或仅在验证者之间开启转账功能);(2)实现以太坊区块链与 “信标链-分片” 系统的合并。

前者可能较简单,但是与项目的长期目标不符,也违背了项目对参与者的承诺(提高了硬件需求);至于后者,则显然需要更长的开发时间和谋求社会共识的时间。

而且,无论选择什么技术目标,为了使之足够安全,都必须花费很长时间。所以我个人并不预期一年内能开放转账功能。但这只是我的个人看法。而且变数也非常多。

三. 运营建议

如果我自己运营验证者,需要什么样的硬件?

你需要一颗还不错的 CPU、16 GB 的内存,固态硬盘(为了保险,考虑 1 TB及以上的规模),还要有稳定的电力供应和网络供应。如没有发生大规模的掉线事件,则在线 50% 时间以上就可保证正收益(但你可别连续长时间不在线呀)。

我可以把私钥放在硬件钱包里吗?

你的取款私钥可以放在硬件钱包里,但验证私钥则必须放到客户端软件中,这样才能保证正常签发见证消息。

是不是可以在硬件的架构或者私钥的生成上下一些功夫来提高安全性?

是的,但是相关的方法都非常专业,请务必寻求专业人士的帮助。

举例,验证者客户端本身可以说就是一个签名器,那么你可以将签名器与其它功能隔离开来,保证签名器不对外网暴露。等等。

有没有去中心化的第三方运营方案?

没有,所有的第三方托管方案都要求你信任第三方。举例,如果第三方托管了你的验证私钥(你保留自己的取款私钥),你还是必须信任该第三方会妥善运营验证者,不会导致你被罚没(所以你跟第三方之间必须实现分配好责任)。如果你直接把钱交给第三方,连取款私钥都不保留,则信任程度更甚(与把钱存入中心化交易所等同)。在当前,没有人能兑现 BETH。

那加入一些智能合约和 token 呢?

也不行,智能合约和 token 只能让你在以太坊区块链上获得与信标链资产数量一一对应的 token,但 token 的增发信息仍然信息输入机制来输入,而这个信息输入机制也是需要信任的(因为收益的变量太多,服务提供商也需要一定的中心化来保护自己的利益,这是难免的)。

四. 其他

有什么工具方便我查看信标链上现在的情况吗?

区块浏览器:https://beaconscan.com/ 及 https://beaconcha.in/。

但是网站所用的术语可能跟此处提供的不同。

验证者是不是进出都得排队啊?

是的,信标链 PoS 协议本身的设计,验证者随意自由进出会使网络非常不稳定。所以进入和退出都需要现存的活跃验证者来协调。