Bitcoin Vault -比特币保险库

教程

科普验证者如何生成和保护撤回密钥

什么是取款钥匙?

提取密钥是以太网2.0中验证者用来提取以太网的密钥(注1)。

以太网2.0和以太网1.0的密钥是以相同的方式生成和使用的,但是它们是不兼容的,即在以太网1.0上生成的密钥不能在以太网2.0上使用。

以太网2.0中的密钥总是以公钥和私钥的形式成对出现。退出的关键在于利益相关者自己,因为他们是资金的提供者,当然他们希望保留退出资金的权利。

取款钥匙是干什么用的?

在以太网2.0中,取款关键信息主要用于以下两种情况:在以太网1.0中创建存款交易;在以太网2.0中退出以太网。

当用户在以太网1.0上存款时,取款公钥的功能是将存款与取款私钥相关联。这就是为什么以太网2.0可以知道谁有权通过取款公钥取款(只有对应于取款公钥的取款私钥才有权取款)。提取公钥也用于将数据集成到以太网的存款交易中,如下图所示:

-图1:在存款过程中使用取款公钥(详见本文)(编者按:参见文章末尾的超链接《验证者的生命流程》)

应该注意的是,每个存款协议中都使用取款公钥(注2)。

在以太网2.0上提取以太网的操作细节还没有确定,但是无论将来采用什么方法,都有必要提取私钥进行签名和授权。

-图2:取现操作框架-

在上图的例子中,权益持有人使用取款的私钥来签署取款操作的细节。然后,以太网2.0网络可以将取款操作中的签名授权与存款协议中的取款标识进行比较(如图1所示)。如果两者匹配,则可以继续进行提取操作。

在我们能够使用取款功能之前,我们不需要使用取款私钥。存款后一年以上方可使用取款功能。即使该功能可用,也没有必要使用它。对于那些希望获得长期回报的权利持有人来说,他们能否取钱对他们的日常运营影响不大。

这意味着我们应该保护我们的私钥以备提取,我们不需要在短期内使用它,即使从长期来看,我们只需要偶尔使用它。也就是说,在平衡密钥的安全性和可用性时,我们应该更加关注安全性。

您想要保护多少个私钥?

另一个需要回答的问题是:我们需要保护多少私钥?

如果您只创建一个验证者身份,答案很简单:一个私钥。如果您想创建多个验证者身份,答案将变得复杂。我们可以为每个验证者的身份创建不同的撤销私钥,但这不是必需的。那么,每个验证者的撤销私钥应该是唯一的吗?

使用多重提取私钥有两个主要原因。第一个原因是,如果不同的授权码共享一个密钥,则这些授权码之间存在联系:显然,这些帐户下的存款属于同一个实体。因此,使用这个私钥可以很容易地计算出可访问的资金量以及这个实体持有的以太网的总量。但是,使用不同的私钥并不能阻止其他人从其他渠道获得此信息。例如,发起这些存款交易的以太网1.0地址也反映了这一信息。因此,除非我们在使用以太网1.0地址时小心谨慎,否则使用多个提取私钥是不值得一提的。

第二个原因是,使用相同的私钥会使该私钥的值过高,从而更容易被窃取。但是,如果不同的私钥存储在同一个地方,将会导致相同的问题。也就是说,不同的私钥应该在物理上和逻辑上分开,以减少丢失的影响。

总之,如果你想防止别人发现多个验证者身份背后的同一个实体(假设每个存款来自不同的以太网1.0地址),并且把你取款的每个私钥存储在不同的地方或者采用不同的密钥保护机制,那么使用多个私钥将会带来实质性的好处。由于普通用户一般不会以这种方式进行操作,本文的其余部分仅介绍如何使用单个私钥进行取款。如有必要,本文还将适用于持有多个私钥的情况。

步骤

现在我们已经理解了基本要求,让我们看看如何创建和保护退出密钥。创建新密钥的步骤如下:

创建一个取款钱包;

创建取款账户;

记录撤回公钥;

删除取款钱包;

确认取款钱包可以恢复。

让我们看看这个图表:

-图3:创建和保护提取密钥的步骤-

这些步骤必须在计算机上完成,并且应该小心防止计算机被入侵。本文篇幅有限,所以我们不讨论如何防止计算机被入侵,但用户至少应该做一件事:当执行上述过程时,计算机不能联网。

创建提款钱包

在撰写本文时,基于BLS12-381曲线的Etherium 2.0密钥的硬件钱包还没有开发出来,也就是说,目前还没有能够存储Etherium 2.0密钥的硬件钱包(编者注:该译文发表时似乎已经存在)。因此,密钥必须在软件中生成。本文以ethdo命令行工具为例,但是您也可以使用其他工具来实现它。

Ethdo采用了钱包的概念。一个钱包可以包含一个或多个帐户,并且可以在逻辑上分隔不同的帐户(例如,分隔取款帐户和验证帐户)。帐户包括一个私钥、一个公钥和其他数据(例如,一个容易记住的帐户名),因此不需要使用公钥直接登录(注3)。如果您想为取款帐户创建钱包,请运行以下代码:

ethdo wallet create-wallet=' Staking wallet '-type=HD-wallet password=secret 1

这一行代码用助记符创建了一个钱包。助记词由24个单词组成,可用于恢复以前创建的钱包和钱包中的所有帐户,应立即受到保护。上述命令将输出助记符,这些助记符应该离线保存。如果在输入命令后没有显示助记符,这意味着钱包不能被找回,那么我们不应该使用这个钱包。

有很多方法可以保存记忆,比如木块板和密码钢,但是你也可以把它们复制下来,放在一个安全的(最好是防火的)地方。记住,一旦失忆,你就不能取钱,所以采取适当的措施保持失忆。

助记符保存后,我们可以开始创建取款账户。

创建取款账户

创建取款账户的命令如下:

ethdo帐户创建-帐户='保管钱包/取款帐户'wallet密码=密码1 -密码=密码2

wallet密码必须与您在上一节中提供的密码一致。后一个密码仅是该帐户的密码,仅在删除该帐户之前临时使用。

记录取款公钥

顾名思义,公钥是公开的,不需要采取特殊的安全措施。运行以下代码查看公钥:

ethdo帐户信息-帐户=“保管钱包/取款帐户”

如果代码没有输出提取公钥,则可能表示帐户创建过程中有错误。仔细查看之前运行的代码是否有错误。

请注意,虽然公钥不是私有的,但是我们应该采取合理的措施来确保恶意攻击者不能用他们的公钥替换您的公钥。

删除提款钱包

如果以上所有步骤都正确执行,我们可以安全地删除该取款钱包。请运行以下代码:

eth do wallet delete-wallet=' Staking wallet '

然后,您可以运行以下代码来访问钱包,以确认钱包是否已被删除:

ethdo钱包信息-钱包='Staking wallet '

在正常情况下,会返回一条错误消息,因为找不到钱包。

确认提款钱包可以恢复

在用取款钥匙进行任何存款之前,最好重建取款钱包。这不仅可以确保我们熟悉操作流程,还可以在您投入资金之前再次检查可能出现的错误。

第一件事是用助记符重建钱包。请运行以下代码:

ethdo钱包创建-钱包='恢复钱包'-类型=HD-wallet password=temp 1-助记符='助记符'

用你的助记符替换上面代码中的助记符。

然后运行以下代码重建取款账户:

ethdo帐户创建-帐户='恢复钱包/取款帐户'wallet密码=temp1 -密码=temp2

运行以下代码以获取其公钥:

ethdo帐户信息-帐户='回收钱包/取款帐户'

此时,请注意确认此命令输出的公钥与之前复制下来的公钥一致。如果他们是一致的,这表明你的记忆是正确的。

要再次删除钱包,请运行以下代码:

ethdo钱包删除-钱包='恢复钱包'

然后运行以下代码尝试访问钱包并确认它是否已被删除:

电子钱包信息-钱包='恢复钱包'

在正常情况下,会返回一条错误消息,因为找不到钱包。

以上步骤也能用于验证者密钥吗?

你不能。以太网2.0的验证者密钥和撤回密钥在用法上有很大的不同,它们不同于大多数常见的密钥。我们将在下一篇文章中详细说明验证者密钥、它的用法和保护措施。

脚注

注1:退出键与以太网2.0的其他键没有特殊区别。我们只是用这个名字来直观地表达它的目的。

注2:如图所示,实际上我们只需要取款标识。然而,我们建议撤回公钥也应该保存好,因为公钥可以用于其他目的(例如,验证签名)。

注3:由于公钥的长度与0xa 9 ca 9 cf 7 fa 2d 0 ab 1 D5 2d 8 f 79 f 68 c 50 c 5296 bfce 81546 c 254 df 68 eaac 0418717 B2 F9 fc 6655 cbbd db 145 daeb 282 c 00一样长,因此会非常麻烦。

Title