观察 | 解读Eth2.0验证者的资产签名方案?

金色财经 Taylor W · 5/22/2020, 12:56:40 PM分享

今日,Eth2.0团队核心开发者,Eth2.0开发负责人Carl发布了一篇解读Eth2.0中权益证明签名方案的文章。以下为文章内容整理。

每个权益证明系统的核心是签名方案。签名用于验证每个验证器的身份,从而允许将其行为(无论好坏)归因于它们。

我们可以通过查看验证者签名的消息来验证诚实,也可以通过显示违反共识规则的消息来证明恶意。

实际上,在eth2中,验证者的身份就是其公钥。具体来说,每个验证器都有两组密钥:签名密钥和提取密钥。

签名密钥

一个签名密钥是一个验证需要签上作证,并提出块的关键。由于验证者需要每个时期至少签名一次消息,因此客户端软件必须拥有密钥的保管权。

提款密钥

由于客户端软件始终连接到Internet,因此当然有可能会破坏其签名密钥。为了减少这种破坏的影响,验证者可以执行的操作被划分在两个密钥之间。

如上所述,签名密钥用于验证程序执行其职责。另一方面,提款密钥具有控制验证者资金的权力(转移和提取ETH)。

验证者在成为验证者的整个生命周期内仅需要使用其提款密钥几次。这意味着可以将它们放入冷藏库并以高度的安全性进行存储(脱机)。

此外,至少在第1阶段才能启用转账和提款。

密钥很多

如果每投入32ETH,需要保存并使用2个不相关的密钥进行存款,这中方式会很快消失。

幸运的是,我们有一个解决方案。补救措施是使用公共密钥,以便存储单个密钥可以访问多个密钥。

在eth2中,这是通过EIP 2333和2334实现的,描述取款和签名密钥之间的关系,以及如何从单个助记符派生它们。

助记符

助记符是编码机密的另一种方法,是人们存储和备份其私钥的一种简单得多的方法。

从其他键派生密钥

与钱包互动时,您可能会遇到表单的“路径” 。

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

我们使用种子来计算树的根,然后在该根的顶部分层构建树。密钥树完全是通过树中跟随的分支与树的根之间的关系定义的。

实际上,它使我们可以从树的根部开始,并在跟随的每个分支上计算中间键,直到找到感兴趣的叶子,从而在树中找到任何键。

这样做的一个奇妙结果是,我们可以从一个单一的熵源(例如助记符)开始,然后从中构建出几乎无限数量的密钥。

此外,通过仅安全地存储助记符,您可以备份验证程序使用的每个密钥。

eth2中使用了此想法,以允许单个助记符生成验证程序所需的任意多个密钥。

EIP 2334指出,验证者的签名密钥是0提取密钥的第三个子分支。实际上,这意味着遵循该标准时,如果您知道要撤消的私钥,则可以计算相应的用于签名的私钥。

要记住的重要一点是,如果您知道助记符,则可以计算出提取密钥,然后从中导出签名密钥。

存放密钥

验证程序客户端使用密钥库作为交换密钥的方法。

密钥库是包含用用户密码加密的私钥的文件。如果密码未存储在同一台计算机上,则可以在计算机之间安全地存储和传输它们。

准备开始验证时,可以为客户端提供密钥库和加密它们的密码(它需要两条信息来导入密钥)。

成为验证者

成为验证者的第一步是生成适当的密钥。一旦记下了助记符,它们就会生成。

由于第0阶段没有提款或转账,因此您不需要为提款密钥设置密钥库;安全地存储您的助记符就足够了。

由于验证者客户需要您的签名密钥,因此您将为每个验证者收到一个密钥库,用于存储这些密钥。

现在是存款时间,要成为验证者,除了包含所有验证者公共密钥的存款数据之外,每个验证者还需要发送32 ETH 。

然后将存款数据记录在eth1的存款合同中,eth2节点负责监视此合同,该节点负责复制存款数据。一旦您的存款数据被复制完,您现在正式成为验证者!

声明:蜂鸟财经转载此文出于传递更多信息之目的,内容仅供读者参考。若存在侵权行为,请联系我们删除。

相关文章推荐