主页 > imtoken官网钱包app > 以太坊2.0 staking关键原理分析

以太坊2.0 staking关键原理分析

imtoken官网钱包app 2023-02-20 07:44:13

翻译:阿健

感谢 Sacha Yes Saint Leger 和 Danny Ryan 审阅本文。

权益证明系统的核心是其签名方案。 签名用于验证发出操作的验证者的身份,即确定哪个操作是由哪个验证者发出的(是好操作还是坏操作)。

我们不仅可以根据验证者的签名消息来确认 Ta 符合协议,还可以通过展示一条违反共识规则的消息来证明验证者的恶意。

事实上,在 ETH2 系统中,验证者的身份是由其公钥决定的。 每个验证器都有两组密钥:签名密钥对和撤销密钥对。

签名密钥对

所谓“签名密钥”是指验证者在对证明消息和提议区块进行签名时使用的密钥。 因为验证者必须在每个时期至少签署一条消息,所以客户端软件必须托管签名密钥。

提现密钥对

因为客户端软件一直处于联网状态,所以签名密钥肯定有丢失和被盗的可能。 为了减少此类事件的影响,验证器可以执行的操作分为两组不同的密钥。

如上所述,签名密钥用于履行验证者的角色。 另一方面,取款密钥用于控制验证者的资金。

在验证者的整个生命周期中,验证者只需要在少数情况下使用取款密钥。 这意味着取款密钥可以保存在冷钱包中的安全位置。

注意:验证者的资金转账和取款功能要到第 1 阶段才会上线。

译者注:对于签名密钥和提款密钥,作者在原文中通常使用单数形式“签名密钥”和“提款密钥”,这里我将其转换为“签名密钥对”和“提款密钥”密钥对” 因为根据我们对密码学的理解以太坊密钥,为了保证身份的一致性,我们需要使用公钥密码学(公钥-私钥对):验证者使用签名私钥和取款私钥对应的两把公钥在注册表中预先注册,然后在其生命周期内,当使用其私钥对消息进行签名时,可以确认其身份。 提款流程与我们目前对以太坊账户的提款流程相同。

怎么有这么多钥匙!

如果你想抵押 32 个 ETH,你需要保存并使用两组不相关的密钥,太麻烦了。

在 ETH2 中,我们可以使用 eip-2333 和 eip-2334 来解决这个问题:这两个 eips 提出了一套标准,描述了如何关联签名和撤销密钥,以及如何从相同的助记符中导出这两组密钥。

助记词

助记词是另一种通过编码来保护密码的方法,是普通用户最简单的存储和备份私钥的方式。简而言之,这意味着

 0x1e9f2afcc0737f4502e8d4238e4fe82d45077b2a549902b61d65367acecbccba 

这样一个私钥,转换为

sausage SOLution loud iSOLate focus glide frame door clown million shuffle impulse 

这种文字可读性强,再写下来或写下来,更容易保存,更不容易出错。

从一个密钥派生出其他密钥

使用钱包时,您可能会遇到 m/44'/60'/0'/0/0 等路径。 该路径用于描述键之间的关系。

根据EIP 2333以太坊密钥,由一个密钥(即一组助记词)衍生出其他密钥所形成的系统类似于一棵树,衍生密钥由树的“种子”(即原始密钥)和树的路径构成.

树的根是使用种子计算的,密钥是从树的根和分支中导出的,整个密钥树是逐层构建的。 因此,可以认为整棵密钥树完全由树的分支与根的关系决定。 根据这个描述,我们可以看出整个密钥树是无限的,因为它可以无限地推导出来。 使用时,请记住哪些分支机构使用并资助了密钥。 )

在使用中,这种密钥派生方法使我们能够找到我们想要使用的任何密钥:从树的根开始,逐个分支计算中间密钥,最后计算我们要使用的密钥(叶子)。

一个有趣的结果是我们可以从一个随机数(例如一组助记符)开始并得到无限数量的密钥。 在 ETH2 中,一组助记符可以根据验证者的需要生成尽可能多的密钥。 例如,如果需要使用一组助记词生成 3 个私钥提取,则可以推断如下:

科普 | ETH2 Staking 指南 #4:密钥

每个分支都标有“/”,因此“m/2”表示从主密钥派生的分支2。

EIP 2334表示验证者的签名密钥可以使用提现私钥的0分支。 实际上,这意味着只要你按照这个标准,知道提款的私钥,就可以计算出对应的私钥进行签名。 计算过程如上图所示:

科普 | ETH2 Staking 指南 #4:密钥

为了尽量简化,我们举这样一个例子。 实际上,路径会更长(例如,EIP 2334 需要像 m/12381/3600/I/0 和 m/12381/3600/I/0 这样的长路径来导出用于提取和签名的私钥)。 但逻辑是完全一样的。

记住:如果你知道你的助记词,你可以推导出提款私钥,然后推导出签名私钥。

存储密钥

身份验证器客户端使用密钥库文件交换密钥。

Keystore 是一种包含由用户密码加密的私钥的文件格式,因此它们可以在计算机之间安全地存储和传输(只要密码不存在于同一台计算机上)。

当您准备好开始身份验证时,您可以将密钥库导入客户端(当然,使用密码短语,以便客户端可以导出私钥)。

成为验证者

成为验证者的第一步是生成密钥。 请确保使用安全软件在安全环境中生成私钥,并在生成后记录下来。

因为0阶段没有提现功能,不能转账到账户,所以您不需要使用keystore存储提现私钥,保证您的助记词安全。

如果认证客户端需要你的签名私钥,你输入私钥(和自己加密的密码)后就可以得到对应的keystore文件。 在运行密钥库时,您可以获得任意数量的验证器。

为了注册成为验证者,您需要为每个验证者准备 32 ETH 的保证金,加上您的保证金数据(包括验证者的公钥),并将其发送到 ETH1 链上的保证金合约。

保证金数据将记录在保证金合约中。 ETH2节点可以通过观察合约获取保证金数据。 当你的存款数据链接到 ETH2 后,你将正式成为验证者。

最简单的方法

我们一直在开发一个友好的界面来帮助验证者完成注册过程。 我们的下一次更新将涵盖 ETH2 launchpad 及其使用方法。

以太坊经典和以太坊_以太坊和以太经典未来哪个好_以太坊密钥