本文讨论了以太坊2.0网络中的罚没(slashing)机制,关于Staking参加者(尤其是自己亲身参加的),你需求了解哪些状况会导致罚没,以及怎么防止被罚没。本文档中供给的大多数信息与客户端选择无关,这意味着它将适用于一切用户,而不论他们选择运转Prysm、Lighthouse、Teku、Nimbus仍是其他以太坊2.0客户端。
原文作者是Prysmatic Labs联合创始人Raul Jordan。
*重要免责声明*
Prysmatic Labs对用户的资金丢掉不承当任何职责,不管原因是什么,包括客户端缝隙或文档过错,这种职责的革除延伸到了罚没进程。尽管每个以太坊2.0客户端都尽最大努力保证代码库是安全的,但与其他任何开发项目相同,总是会存在出错的或许性。参加以太坊2.0是一项有危险的活动,重要的是参加者需求研究并了解他们要承当的危险及职责。
什么是罚没(slashing)?
当一个验证者表现出与以太坊网络相争对的行为时,就会产生罚没。罚没不一定是由于有恶意意图,它也有或许是由于过错的装备。验证者的行为或许会使得体系变混乱,或损坏其完整性,因而,这些对网络形成损害的验证者,其质押的ETH就会遭到赏罚,而这是不可逆转的。
不要将罚没和不活动处分混淆,罚没的目标是按捺那些企图损伤以太坊2.0网络的人,并反过来奖赏那些按计划维护、办理和运营以太坊2.0网络的人。罚没的的主要意图是减轻在以太坊2.0网络上履行的进犯,例如在不同的前史检查点视图上创立相互抵触的验证者分支。
正确遵从协议的验证器在正常操作中永久不会发出可遭到罚没的投票,验证器不会由于离线而遭到罚没。
罚没的工作方法
罚没的行为会损坏掉那些损伤以太坊网络的验证者的质押资金,逼迫他们脱离网络,并经过促进好的参加者来加强区块链的安全性。
尽管罚没是一种赏罚方法,但即便是一个正常用户,假如其验证器装备不正确,仍有或许遭到罚没。因而,了解怎么正确设置和办理验证器客户端和操作体系是至关重要的,用户还应防止在不了解其悉数功用的状况下尝试运用高级指令。
在以下状况下,验证者会遭到罚没:
-
验证器在同一个slot中运用不同的root(本质上内部数据的哈希)提出两个抵触的区块。假如这类操作没有遭到赏罚,那么验证者就很简略创立不必要的分叉,或形成混乱。注:简略地提出相同的区块两次,并不会遭到罚没;
-
验证器在同一个slot中证明两个抵触的区块。这被称为双重投票,也意味着验证者或许企图创立抵触的链分叉。注:简略地为相同区块投票两次,并不会遭到罚没;
-
验证器投出的投票“围住”(surround)或被之前的投票“围住”,这意味着验证者企图投票对立前史,这种状况下就会遭到罚没;
以太坊2.0 surround 投票,来自https://github.com/protolambda/eth2-surround
遭到罚没后,会产生什么?
尽管存在多个防止罚没的机制,但每个验证器密钥对仅被一个验证器运用是至关重要的。 这听起来很简略,可是当装备了多个验证器时,很简略过错地复原验证器并仿制现已运转的验证器。进行更改时,请一直确认正在运用/恢复/设置正确的验证器密钥。
假如验证器遭到罚没,则会产生许多工作:
-
遭到罚没的验证器被迫在36天内退出信标链;
-
遭到罚没的验证器会面临三种赏罚类型;
-
当被提议的举报人在一个区块中包含举报信息时,将遭到最低处分;
-
在每个epoch周期开始进行赏罚,直到验证器脱离退出行列;
-
在举报信息被包括在一个区块内,以及遭罚没的验证器退出之间的中间时间,将施行特别处分,这一特殊处分与在此期间有多少其他验证器遭到罚没成份额。所适用的最大值,可达到相关罚没对象的一切有用余额。
这意味着,假如验证器遭到罚没,它会当即遭到赏罚,并将继续遭到约36天的处分,直到其能够退出停止,并且在18-36天的时间内,还会遭到一次性罚款,而罚没的金额还遭到同一epoch时期遭罚没的验证器数量的影响(即判定这是一次次协同进犯,仍是独自的进犯)。
最终,值得留意的是,遭到罚没的验证器无法重新进入验证器集。 假如验证者要继续验证,就需求进行新的质押以及生成新的密钥,而罚没是不可逆的!
总的来说,遭到罚没会导致你质押的ETH不断变少,并在半途遭受重大丢掉。在36天后,你能够退出信标链,也能够撤回一切剩下的ETH,而在这36天的时间段内,你会丢掉很大一部分的ETH。
会导致罚没的常见用户过错
尽管上面提到的罚没场景对普通用户而言似乎是不或许产生的,但不正确的装备,很或许会导致诚笃的验证者也会遭到罚没!以下是一些或许产生这种状况的场景:
1、相同的验证密钥一起运转在两个服务器上,其间一个或许用作毛病搬运,以防第一个服务器出现毛病。
阐明:这是最简略让你遭到罚没的方法,假如你的毛病搬运体系误报第一个节点已封闭,你或许会发现自己处在遭受罚没的地步。
请不要一起在两个地方运转验证密钥!
2、你把密钥搬迁至另一台计算机或另一个以太坊2.0客户端,而没有搬迁你的罚没维护前史记载;
阐明:你的另一个节点或许有一个不正确同步的时钟,这或许会导致你遭受罚没,假如你搬迁了罚没维护前史记载,就能够轻松避开这种状况。
3、你在验证器客户端中删去或丢掉了罚没维护前史记载;
阐明:失去罚没维护前史记载,或许会导致一些问题,比如你的时钟被弄乱,从而产生会遭到罚没的区块或投票。
4、运用没有耐久卷(PV)的容器化环境进行验证
阐明:假如你运用Docker运转,或许或许在云环境(如Kubernetes)中运转,则需求为验证器设置耐久卷(PV),这样,假如pod或容器重新发动,则不会铲除罚没维护前史。
5、或许导致罚没过错的协议缝隙(这种状况不太或许产生,而它会是最糟糕的状况)
阐明:测试网上产生的大规模罚没事情的催化剂,一般是由于客户端完成中的缝隙。可是,具有罚没维护数据库和正确装备的验证器并没有遭到影响。这些示例包括时间服务器毛病以及区块ID处理不妥的过错。当Medalla测试网中产生服务器毛病时,大多数验证器都遭到罚没了,由于它们没有一个耐久化的罚没前史数据库。
选择验证器时,了解怎么设置、装备,升级和排除任何已装置软件的毛病是至关重要的。在这里( ethereumprice.org)能够找到一个很好的资源来更好地了解参加以太坊2.0 Staking的危险,这里还有另一个解说怎么检测罚没条件的资源。
谁在实施罚没?
罚没者(Slasher)
罚没器(Slasher)是指一个独自的软件,其主要意图是检测可罚没的事情。你能够把罚没器(Slasher)幻想成以太坊2.0网络的“差人”,由于检测恶意音讯所需的额定数据和进程,一般这些罚没器是独立于信标节点运转的。为了检测可罚没的音讯,罚没器记载网络上每个验证器的证明和提议前史记载,并将该前史记载与播送的内容穿插引用,以找到可罚没的音讯,例如双重区块或surrounding投票。
网络所需求的是一个诚笃的罚没器客户端来监督网络,由于发现的任何罚没都会传播到整个网络,以便尽快将其放入一个区块中。
举报人奖赏
为了鼓励罚没检测,验证器将取得一种“举报人奖赏”,这是在信标链上对提交具有任何有用罚没的区块的奖赏。这些奖赏是给予那些参加罚没的验证者的,一般每个验证者大约有0.1 ETH奖赏。
尽管鼓励检测是有价值的,但假如你在Prysm中发现了罚没,仅运转一个罚没器客户端是不会取得举报人奖赏的。默许状况下,发现的任何罚没都会播送到网络以尽快包含在区块中,因而,一般在检测到罚没后,奖赏会当即发给提议者,而不是发给运转罚没器的验证者。
运营一个罚没器并不意味着有利可图。罚没本就是罕见的,举报人奖赏也被设置地很低。本质上,运营罚没器相当于一种利他行为,再次强调,网络中只需激活一个诚笃的、功用正常的罚没器,即可捕获到违规行为。幸运的是,这是低门槛的,咱们设想会有相当多的用户和实体将运转罚没器来保证网络安全。
罚没防备针
咱们有好音讯要告知咱们,罚没是能够防备的!有许多最佳实践可保证咱们不会遭到罚没,但重要的是要了解它们。
1、本地罚没维护数据库
一种由多个客户端完成的罚没维护方法是本地签名前史数据库。该功用在Prysm的验证者客户端中是默许启用的。该数据库保证验证器根据其自身的前史记载不对被视为可罚没音讯的音讯进行签名。更简略地说,验证器在决议是否应对音讯进行签名时,会将数据库视为其唯一的真实来历。这种方法保证单个验证器不会履行重复的操作。
需求留意的是,本地罚没维护无法防止运用相同的验证器密钥运转多个验证器实例。
该数据库仅跟踪该本地实例中验证器的签名事情。这也意味着,假如用户将其验证器更改为其他客户端(例如,从Lighthouse搬迁到Nimbus),或搬运到新的硬件设置(在新的linux机器上装置,搬迁到保管解决方案),那么还必须搬迁签名前史数据库。这将保证在任何新客户端上保留过去操作的前史记载。
2、长途罚没维护
防止罚没的另一种代替完成方法是运用罚没器(slasher)。罚没器记载它收到的一切证明和区块,验证器在赞同签署音讯之前会引用它。与本地签名前史数据库比较,这种方法是一种更强的罚没维护方法,但与数据库相同,此方法无法防止运转同一验证器的多个实例。
防止罚没的另一种完成,是将罚没器自身用作信标节点和验证器客户端之间的中间件。在验证器客户端提交区块或证明之前,它首要询问罚没器这是否是可罚没的。
假如检查经过,数据将经过信标节点。这是最先进的罚没维护形式,由于抱负状况下,罚没器了解网络中产生的一切事情,并记载了每个验证器的区块和证明前史。但有一点需求留意的是,在Prysm中,长途罚没维护还没有优化,由于咱们的罚没器仍然是资源耗费大户。鉴于咱们的罚没器资源耗费很高,这或许会导致你的验证器错过证明或区块。长途罚没维护旨在作为本地罚没维护之上的附加层运转。 出于安全原因,用户无法在Prysm中禁用本地罚没维护。
3、搬迁你的罚没维护前史
在验证进程中的某个特定时间,质押者或许需履行的一个重要活动,是将其验证密钥搬迁到另一台机器或不同的以太坊2.0客户端。
有时,你或许期望切换Staking机器,或许你或许期望搬迁到适合你的不同的以太坊2.0客户端。不管怎么,你都应一直携带好你的罚没维护记载。
罚没维护规范:EIP-3076
目前有一个官方规范用于搬迁以太坊2.0客户端之间的罚没维护前史记载,它被称为EIP-3076。该规范主张在JSON文件中表示验证器的罚没维护前史记载。该文件包含了:
经过导出此文件,并在搬迁到另一台计算机或以太坊2.0客户端时导入它,你将取得大量好处,并能够免受未存储此本地前史记载的状况下的简略罚没条件。
将现有的验证密钥导入Prysm
到发稿时,在Prysm的v1.0.1版别中,Prysm不允许用户将EIP-3076 罚没维护JSON文件导入验证器客户端。这是Prysm团队的首要任务,或许会在以太坊2.0主网上线后的下一个版别中完成这个功用。
从Prysm导出你的罚没维护前史
到发稿时,在Prysm的v1.0.1版别中,Prysm不允许用户将罚没维护前史记载导出到EIP-3076 罚没维护JSON文件中,相同的,Prysm团队正在抓住完成这一目标。
假如你确认期望搬迁机器,咱们主张你等到Prysm支持导出罚没维护前史记载之后。假如真实等不及,请记住以下一些重要事项:
-
封闭你的信标节点以及机器1上的验证器,保证它没有作为体系进程运转。你能够运用操作体系的进程监督器工具或命令行工具(例如top或htop)进行检查,并检查是否包含名称“ prysm”,“ validator”或“ beacon”。
-
请留意你的钱包目录位置。 假如你在发动Prysm时运用默许值,则能够在“验证者帐户列表”输出的顶部检查其途径,该途径因操作体系而异。
-
获取整个目录并将其搬迁至你的下一台计算机。
-
假如你修改了验证器的datadir,也请将该目录搬迁到下一台计算机。
-
至少等待几个epoch时间段,在第二台机器上同步信标节点,然后在第二台机器上发动验证器客户端。
-
保证不在机器1或其他任何地方运转相同的密钥。
视野开拓
世界上有一些国家,造物主在赐予它们面积、地理位置和人民思想素质时,并没有期望他们创造出英雄般的事迹,它们注定要被历史忽略,古巴是其中之一,越南也是,但这两个国家在那些年中对于我们所关心的问题却产生了决定性影响。-《不确定的时代》