特别感谢Sacha Yves Saint-Leger和Danny Ryan的评论。
每个损失系统证明的核心都是签名方案。签名用于验证每个验证者的身份,允许他们的行为(无论是坏事)归因于它们。
我们可以通过查看验证者的签名消息来验证诚实,我们可以通过显示违反共识规则的消息来证明恶意。
实际上,在ETH2中,验证者的身份 是 他们的公钥。具体来说,每个验证器都有两组键:签名密钥和一个提款密钥。
签名钥匙
一个 签名密钥 是验证者需要签署证明并提出块的关键。由于验证者需要每个时期至少签署一次消息,因此客户端软件必须对密钥进行监护。
取款键
由于客户端软件始终连接到Internet,因此当然有可能会损害一个人的签名密钥。为了减少这种违规的影响,验证器可以执行的操作分为两个键。
如上所述,签名密钥用于验证者执行其职责。另一方面, 提款键 有权控制验证者的资金(转移*和撤回* ETH)。
验证器只需要在验证器的一生中使用其提款键几次即可。这意味着它们可以放入冷藏库中并具有高度安全性(离线)。
*至少直到第1阶段才能启用转移和提款
那是很多钥匙!
如果每32th固定,就需要保存和使用2个无关的钥匙来存款,这将很快消失。
幸运的是,我们有一个解决方案。补救措施是让密钥使用一个共同的秘密,以便存储一个秘密可以访问多个密钥。
在ETH2中,这是通过EIPS实现的 2333 和 2334:一组标准,描述了如何相关的提取和签名键以及如何从单个助记符中得出。
mnemonics
助记符是编码秘密的另一种方式,是人们存储和备份私钥的一种简单方法。
这个想法是记住或写下更简单 香肠溶液响亮的孤立型焦点滑行框架门小丑百万 比 0x1E9F2AFCC0737F4502E8D4238E4FE82D4507B2A549902B61D653677777777777502E8D 没有犯任何错误。
从其他钥匙中得出键
与钱包互动时,您可能遇到了形式的“路径” M/44'/60'/0'/0/0。这些路径描述了密钥之间的关系。
根据 EIP 2333,这种关系采用了树结构的形式,其中键由熵(树的种子)和树路径确定。
我们使用种子来计算树的根,然后在该根顶部以层的形式构建树。这种钥匙的树纯粹是通过在树中跟随的分支与树根之间的关系来定义的。
实际上,它使我们能够通过从根部开始找到树中的任何钥匙,并在我们遵循的每个分支上计算中间密钥,直到到达感兴趣的叶子为止。
这样做的一个很棒的结果是,我们可以从单个熵来源开始(例如,助记符),然后从那里构建了几乎无限的键。
此外,通过仅安全存储助记符,您可以备份验证器使用的每个密钥。
该想法在ETH2中用于允许单个助记符生成与验证器需求一样多的键。例如,如果您想运行3个验证器,则可以使用一个助记符来生成位于
M/0,,,,
M/1,,,,
M/2。
[m / 0] / / [m] - [m / 1] \ \ [m / 2]
每个分支都被一个 / 所以 M/2 表示从主键开始,然后遵循分支2。
EIP 2334 指出验证器的签名密钥是 0戒断钥匙的儿童分支。在实践中,这意味着,当遵循标准时,如果您知道提款的私钥,则可以计算相应的私钥进行签名。
继续以上述示例,可以找到签名键:
M/0/0,,,,
M/1/0,,,,
M/2/0。
[m / 0] - [m / 0 / 0] / / [m] - [m / 1] - [m / 1 / 0] \ \ [m / 2] - [m / 2 / 0]
尽管我们试图使这个示例尽可能简单,但实际上,所涉及的路径稍长一些(EIP 2334 需要使用 M/12381/3600/I/0, 和 M/12381/3600/I/0/0 分别用于提款和签名键)。然而,逻辑保持不变。
重要的是要记住的是,如果您知道助记符,则可以计算出提款键,并且从那里得出签名键。
存储钥匙
验证器客户端将密钥库用作交换密钥的方法。
钥匙店 是包含使用用户密码加密的私钥的文件。如果密码未存储在同一台计算机上,则可以安全地存储并传输在计算机之间。
准备好开始验证时,您可以为客户提供密钥库和对其进行加密密码(它需要两个信息以导入键)。
成为验证者
成为验证器的第一步是生成适当的密钥。一旦您写下助记符,这些将生成。
由于第0阶段中没有提款或转移,因此您不需要为取款键提供钥匙店;安全地存储助记符就足够了。
由于您的验证器客户需要您的签名键,因此您将收到一个钥匙库,供每个验证者存储这些键。
现在是存款时间!要成为验证器,除了您的 存款数据 包含所有验证器公共密钥。
然后将存款数据记录在ETH1的存款合同中。该合同由ETH2节点观看,负责复制存款数据。复制存款数据后,您现在正式成为验证器!
以简单的方式成为验证器
我们很高兴地宣布,我们一直在为友好的界面进行努力,以使验证器完成此过程。保持发布,以更新有关ETH2 LaunchPad是什么以及如何使用它!