Eth2 Staking 系列:密钥篇

感谢 Sacha Yves Saint-Leger 和 Danny Ryan 对本文的审校。

无论是哪一个权益证明 (PoS) 系统,其核心都是签名方案。签名用于识别验证每个验证者的身份,从而我们将验证者行为 (无论好坏) 追溯到验证者本身。

我们可以通过查看验证者签名的消息验证其是否诚实,也可以将违反共识规则的消息作为其恶意行径的证明。

在 eth2 中,每个验证者的身份标识便是他们的公钥。具体来说,每个验证者会有两组密钥:签名密钥和提款密钥

签名密钥

签名密钥是验证者需要用于签名证明 (attestation)提议区块的密钥。由于一个验证者在每个 epoch 内至少需要对一条消息进行签名,客户端软件必须对签名密钥进行托管 .

提款密钥

客户端软件始终保持互联网连接,因此验证者的签名密钥是完全有可能受到威胁的。为了减轻相应影响,验证者的操作需要通过两种密钥来实现。

如上所述,验证者通过签名密钥履行其职责。而提款密钥可以控制验证者的资金 (转移和提取 ETH)。

验证者在其整个生命周期内需要使用提款密钥的次数很少。也就是说,可以将提款密钥可以使用冷存储方式,以极高的安全性进行存储 (脱机)。

*最早在阶段 1 才能进行转账和提款

签名密钥

如果每质押 32 ETH,质押者都需要保存并且使用两种不相关的密钥来进行存款,那么局面很快就会失控。

幸运的是,对此我们有一个解决方案:为密钥设置一个共用密钥,这样一来仅需存储一个密钥就可以访问多个密钥

在 eth2 中,这个解决方案通过 EIP 2333 和 2334 实现:这组标准描述了提款密钥和签名密钥之间的关系,以及如何从单个助记符中导出它们。

助记符

助记符是对密钥进行编码的另一种方法,使得人们在存储和备份其私钥时更为简便。

举个例子,记录一组助记符 sausage solution loud isolate focus glide frame door clown million shuffle impulse 比准确地记录一串密钥 0x1e9f2afcc0737f4502e8d4238e4fe82d45077b2a549902b61d65367acecbccba

**
**

从共用密钥导入密钥

与钱包互动时,你可能会碰到格式为 m/44'/60'/0'/0/0 的“路径”。这些路径描述了密钥之间的关系。

根据 EIP 2333,其关系采用树结构的形式,其中密钥由熵源 (树的 seed) 和树路径确定。

我们使用种子来计算树根,然后在基于树根层层构建。该密钥树完全根据其后分支之间的关系和树根来进行定义。

实际上,这使得我们可以从树的根部开始,并在每个分支上计算中间键,然后抵达相关叶子节点,从而在树中找到需要的任何键。

奇妙之处在于,我们可以从单个熵源 (比如一个助记符) 开始,然后基于此衍生出实际上无限数量的密钥。

此外,通过仅存储该助记符,你可以备份作为验证者所使用的每个密钥。

Eth2 就运用了这种理念,允许通过单个助记符来生成验证者需要的任意数量的密钥。举个例子,如果你想运行 3 个验证者节点,那么你可以借助单个助记符来生成位于 m/0, m/1, m/2 的 3 个提款密钥。

每个分支都由 / 隔开,因此 m/2 表示从主密钥开始并跟随第 2 条分支。

在 EIP 2334 中,验证者的签名密钥是提款密钥的第 0 个子分支。也就是说,在实际情况中,当你遵循这个标准时,如果知道了用于提款的私钥,那么你可以计算出相应的签名私钥。

继续上方的例子,我们可以在 m/0/0, m/1/0, m/2/0 找到相应的三个签名密钥。

为了阐明概念,上面的例子尽可能简化了,但实际上涉及的路径要长一些 (EIP 2334 要求分别使用 m/12381/3600/i/0 和 m/12381/3600/i/0/0 的路径来获得提款密钥和签名密钥)。但其中的逻辑和上面的例子相同。

总而言之,需要记住的要点就是:如果你知道助记符,那你就可以计算出提款密钥,继而通过提款密钥得到你的签名密钥。

**
**

存储密钥

验证者客户端使用 keystore 文件作为交换密钥的方式。

Keystore 是经由用户密码加密的包含私钥的文件。只要该密码不是存储在同一台计算机上,Keystore 就可以在不同的计算机之间安全进行存储和传输。

当准备开始验证时,要向你的验证者客户端提供 Keystore 和对其进行加密的密码,客户端需要这两条信息才能导入私钥。

成为验证者

要成为验证者,首先要生成适当的密钥。当你记下自己的助记符,密钥就能够生成。

由于在阶段 0 期间无法提取或转移 ETH,所以不需要通过 Keystore 来获取提款密钥,只需保证助记符以安全方式进行存储就够了。

当验证者客户端需要用到签名密钥时,你的每个验证者节点都会收到一个存储相应密钥的 Keystore 文件。

生成密钥后,就是质押时刻了!每个验证者都需要质押 32 ETH,以及质押数据,其中包含你所有的验证者公钥。

之后质押数据将会被记录在 eth1 的存款合约中。存款合约会由 eth2 节点进行监控,以便之后将质押数据复制到 eth2 中。一旦你的质押数据被成功转移到 eth2 上,那么你就正式成为了一名验证者!

成为验证者的捷径

我们一直致力于构建一个友好的界面来引导用户成为验证者。很快我们就会发布一篇博文介绍什么是 Eth2 Launchpad 及其使用指南!

点击“阅读原文”获取文章内部链接!

原文链接:https://blog.ethereum.org/2020/05/21/keys/

往期系列推荐[

Eth2 Staking 系列:分片共识

2020-03-30

Eth2 Staking 系列:密钥篇](http://mp.weixin.qq.com/s?__biz=MzU2NDcyOTc2NA==&mid=2247484211&idx=1&sn=427ca6c0a108fb2f3d2fb592e1a2a5f5&chksm=fc47c1f8cb3048ee13ec03a5187266bc6aaa6b4699cd213f3b110c5f2c464e817c1753c1a0bf&scene=21#wechat_redirect)[

Eth2 Staking 系列:共识机制篇

2020-02-14

Eth2 Staking 系列:密钥篇](http://mp.weixin.qq.com/s?__biz=MzU2NDcyOTc2NA==&mid=2247484153&idx=1&sn=28912a72adbcd0614497c2721f7b02e6&chksm=fc47c032cb30492442d05cda64046866eab1794913b09ed688ea580f8f4fa9eab73e72462c44&scene=21#wechat_redirect)[

参与 Eth2 Staking 系列:激励篇

2020-01-17

Eth2 Staking 系列:密钥篇](http://mp.weixin.qq.com/s?__biz=MzU2NDcyOTc2NA==&mid=2247484132&idx=1&sn=3e8f542b18d9c5c830be986d85f3c52d&chksm=fc47c02fcb304939dc83c56d80cb4e4de01aa21bfad685dc49c4ee7a2b43f18a33abf288bf6d&scene=21#wechat_redirect)[

如何参与 eth2 Staking 系列(开篇)

2019-11-28

Eth2 Staking 系列:密钥篇](http://mp.weixin.qq.com/s?__biz=MzU2NDcyOTc2NA==&mid=2247484040&idx=1&sn=1fce7cdea63b6c3c1a58895c83041b5e&chksm=fc47c043cb3049554ae2da8a10ad2dd5c5e946fac5156c0c19e94334bf2ae919a3aab6c6166e&scene=21#wechat_redirect)

Eth2 Staking 系列:密钥篇

声明:ECN 的翻译工作旨在为中国以太坊社区传递优质资讯和学习资源,文章版权归原作者所有,转载须注明原文出处以及 ETH 中文网,若需长期转载,请联系 ethereumcn@gmail.com 进行授权。

来源链接:mp.weixin.qq.com