原标题:科普| ETH2分期指南4:key
作者:Carl beekhuizen
翻译:a Jian
感谢您Sacha Yes Saint Leger和Danny Ryan审阅本文。
利益证明制度的核心是其签名方案。签名用于验证发出操作的验证者的身份,即确定哪个操作是由哪个验证者发出的(是好操作还是坏操作)。
我们不仅可以根据验证者的签名消息来确认Ta符合协议,还可以通过显示违反协商一致规则的消息来证明验证者的恶意意图。
实际上,在ETH2系统中,验证者的身份由其公钥决定。每个验证者有两组密钥:签名密钥对和撤回密钥对。
签名密钥对
所谓“签名密钥”是指验证者在签署见证消息和建议的块时使用的密钥。因为验证器必须在每个epoch中对至少一条消息进行签名,所以客户端软件必须托管签名密钥。
取款密钥对
因为客户端软件总是连接到Internet,所以一定有丢失和窃取签名密钥的可能。为了减少此类事件的影响,验证器可以执行的操作被分为两组不同的密钥。
如上所述,签名密钥用于履行验证者的职责。另一方面,取款密钥用于控制验证者的资金。
在验证者的整个生命周期中,验证者只需在少数情况下使用取款密钥。这意味着取款钥匙可以放在冰冷的钱包里,存放在安全的地方。
注意:验证者的资金转移和提取功能在第一阶段之前不会上线。
译者注:对于签名密钥和取款密钥,作者通常在原始文本中使用单数形式“签名密钥”和“取款密钥”,但这里我将其转换为“签名密钥对”和“取款密钥对”因为根据我们对密码学的理解,为了保证身份的一致性,我们需要使用公钥密码学(公钥-私钥对):验证者使用两个公钥对应于签名私钥和撤回私钥预先在注册表中注册,然后在其生命周期中,当使用其私钥签署消息时,可以确认其身份。提款过程与我们目前使用以太坊账户的方法相同。
怎么会有这么多钥匙!
如果您要抵押32 ETH,您需要保存并使用两组不相关的密钥,这太麻烦了。
在ETH2中,我们可以使用eip-2333和eip-2334来解决此问题:这两个eip提出了一组标准,描述如何将签名密钥和撤回密钥关联起来,以及如何从同一助记键派生这两组密钥。
助记词
助记符是通过编码保护密码的另一种方法,也是普通用户存储和备份私钥的最简单方法。简而言之,这意味着
0x1e9f2afcc0737f4502e8d4238e4fe82d45077b2a549902b61d65367acecbccba
这样的私钥,转换为
sausage SOLution loud iSOLate focus glide frame door clown million shuffle impulse
这种文字可读性强,然后写下来或写下来,这样就更容易保存,也不容易出错。
从一个键派生其他键
使用钱包时,您可能会遇到类似于m/44’/60’/0’/0/0这样的路径。此路径用于描述键之间的关系。
根据EIP 2333,通过从一个密钥(即一组助记符)推导其他密钥而形成的系统类似于一棵树,派生密钥由树的“种子”(即原始密钥)和树的路径确定。
利用种子计算树的根,根据树的根和枝推导出密钥,并逐层构造整个密钥树。因此,可以认为整个密钥树完全由树的分支和根之间的关系决定。根据这个描述,我们可以看到整个密钥树是无限的,因为它可以无限地被推导出来。使用时,只需记住哪些分支使用和资助了密钥。)
在使用过程中,这种密钥派生的方法使我们能够找到任何我们想要使用的密钥:从树的根开始,逐个分支计算中间密钥,**计算出我们想要使用的密钥(叶)。
一个有趣的结果是,我们可以从一个随机数(例如一组助记符)开始,得到无穷多个键。在ETH2中,一组助记符可以生成验证器所需的任意多个密钥。例如,如果需要使用一组助记符生成3个私钥提取,可以推断如下:
每个分支都标有“/”,因此“m/2”表示从主密钥派生的分支2。
EIP 2334表示验证者的签名密钥可以使用取款私钥的0支行。在实践中,这意味着只要遵循这个标准,知道取款的私钥,就可以计算出相应的私钥进行签名。计算过程如上图所示:
为了尽可能地简化,我们给出了这样一个例子。实际上,路径将更长(例如,EIP 2334要求使用m/12381/3600/I/0和m/12381/3600/I/0等长路径来推导取款和签名的私钥)。但逻辑是完全一样的。
记住:如果你知道你的记忆法,你可以推断出取款的私钥,然后是签名的私钥。
存储密钥
验证程序客户端使用密钥库文件交换密钥。
Keystore是一种文件格式,它包含由用户密码加密的私钥,因此可以在计算机之间安全地存储和传播(只要密码不存在于同一台计算机上)。
如果准备好开始身份验证,则可以将密钥库导入到客户端(当然,还需要输入密码,以便客户端可以导出私钥)。
成为验证者
成为验证器的第一步是生成密钥。请确保使用安全软件在安全环境中生成私钥,并在生成后将其记录下来。
因为阶段0没有取款功能,无法转移到帐户,所以您不需要使用密钥库来存储取款的私钥,以确保您的助记符是安全的。
如果验证器客户端需要您的签名私钥,则在您输入私钥(加密密码也由您自己输入)后,可以获得相应的密钥库文件。您可以在运行keystore时获得尽可能多的验证器。
为了注册为验证者,您需要为每个验证者准备一份32 ETH存款,加上您的存款数据(包括验证者的公钥),并将其发送到ETH1链上的存款合同。
保证金数据将记录在保证金合同中。ETH2节点可以观察合同,从而获取保证金数据。在您的保证金数据链接到ETH2后,您将正式成为验证者。
最简单的方法
我们一直在开发一个友好的界面来帮助验证者完成注册过程。我们的下一次更新将介绍ETH2启动板以及如何使用它。
文章标题:以太坊2.0立桩关键原理分析
文章链接:https://www.btchangqing.cn/26511.html
更新时间:2020年05月26日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。