1. 首页
  2. 区块链资讯

Eth2 验证者如何生成和保护取款密钥

取款密钥是什么?

取款密钥(withdrawal key)是以太坊 2.0 中的验证者用来提现以太币的密钥 1

以太坊 2.0 的密钥与以太坊 1.0 的密钥在天生和使用方式上大致相同,但二者并不兼容,也就是说,在以太坊 1.0 上天生的密钥不能在以太坊 2.0 上使用

以太坊 2.0 中的密钥总是以公钥与私钥的形式成对泛起。取款密钥由 权益人(staker) 自己持有,由于他们是资金的提供者,固然也想保有撤资的权力。

取款密钥是用来干什么的?

在以太坊 2.0 中,取款密钥的信息主要用于以下两种情形:在以太坊 1.0 中建立押金存入买卖;在以太坊 2.0 中提现以太币。

当用户在以太坊 1.0 上存入押金时,取款公钥的作用是使该笔押金与取款私钥关联起来。这就是为什么以太坊 2.0 能通过取款公钥知道谁有权提款(与该取款公钥对应的取款私钥才有权提取该笔保证金)。取款公钥还用于将数据整合到以太坊的押金存入买卖中,如下图所示:

Eth2 验证者如何生成和保护取款密钥

– 图一:在存款流程中使用取款公钥-

要注意的一点是,每个押金要约(deposit agreement)中都要用到取款公钥

在以太坊 2.0 上提现以太币的操作细节还未确定,但无论未来接纳怎么样的方式,都需要提款私钥来署名授权。

Eth2 验证者如何生成和保护取款密钥

– 图二:提现操作框架 –

在上图的示例中,权益人使用提款私钥对提现操作的细节举行署名。然后,以太坊 2.0 网络就可以对照提款操作中的署名授权与存款协议中的提款身份标识(withdrawal identification)(如图一所示)。若是两者匹配,提款操作就能举行下去。

直到可以使用提款功效之前,我们都无需用到提款私钥。提款功效可能要等存入押金后一年以上才可以使用。纵然功效可用后,也纷歧定要使用。对于那些想要历久获得奖励的权益人来说,能否提款对他们的一样平常操作几乎没有影响。

这就意味着,我们应该珍爱好自己的提款私钥,短期内不需要使用它,纵然从历久来看也只需要偶然使用它。也就是说,在平衡密钥的平安性和可用性时,平安性应该是我们更看重的。

要珍爱多少个私钥?

另有一个需要回覆的问题是:我们一共需要珍爱多少个私钥?

若是你只建立一个验证者身份,那么谜底很简单:一个私钥。若是你要建立多个验证者身份,那么谜底会变得复杂起来。我们可以为每个验证者身份建立一个差别的提款私钥,但这不是必须的。那么,每个验证者身份的提款私钥应该是唯一的吗?

使用多个提款私钥的理由主要有两个。第一个原因是,若是差别的验证者身份共享一个密钥,这些验证者身份之间就有了联系:显然,这些账号下的押金同属一个实体。由此,也就很容易计算出使用这个私钥可以接见的资金量,以及该实体持有的以太币总量。不外,使用差别的私钥并不能防止他人从其它渠道获取这些信息,例如,提议这些存款买卖的以太坊 1.0 地址同样反映了这些信息。因此,除非我们在使用以太坊 1.0 地址时足够郑重,否则使用多个提款私钥对平安性的提升不值一提。

第二个原因是,使用同一个私钥会让这个私钥的价值过高,也就更容易遭窃。然则,若是将差别的私钥存放在同一个地方,也会导致相同的问题。也就是说,应该从物理和逻辑上将差别的私钥离开,以削减丢失所带来的影响。

总之,若是你想防止其他人发现多个验证者身份背后的同一个实体(假设你的每笔存款来自差别的以太坊 1.0 地址),而且将你的每个提款私钥划分储存在差别地方,或者采用了差别的密钥珍爱机制,那么使用多个私钥会带来实质性的利益。由于普通用户一样平常不会这样操作,本文的余下部门只先容了单个提款私钥是若何使用的,若有需要,本文内容也将适用于持有多个私钥的情形。

步骤

我们已经了解了基本要求,现在来看看怎么建立并珍爱取款密钥。建立新密钥的步骤如下:

  1. 建立提款钱包;

  2. 建立提款账户;

  3. 纪录取款公钥;

  4. 删除提款钱包;

  5. 确认提款钱包可以恢复。

我们来看一下图解:

Eth2 验证者如何生成和保护取款密钥

BTC持有者为啥对DeFi极高的利息不感兴趣?

利息低了,没兴趣。利息高了,很警惕。

– 图四:建立并珍爱取款密钥的步骤 –

这些步骤必须在电脑上完成,要小心防止电脑被入侵。本文篇幅有限,不展开讨论若何防止电脑遭到入侵,然则用户至少要做到的一点是:在执行上述历程时,电脑不能联网。

建立提款钱包

本文截稿时,尚未开发出基于 BLS12-381 曲线的以太坊 2.0 密钥硬件钱包,也就是说,现在还没有可以储存以太坊 2.0 密钥的硬件钱包(编者注:在本译本出书时似乎已经有了)。因此,密钥必须在软件中天生。本文以 ethdo 下令行工具为例,你也可以使用其它工具来实现。

ethdo 采用了 钱包 的观点。一个钱包可以包罗一个或多个账户,而且可以从逻辑上将差别账户分开开来(例如,将提款账户和验证账户离开)。一个账户包罗私钥、公钥以及其它一些数据(如,一个好记的账户名),这样就不用直接使用公钥上岸了 3。若是要为提款账户建立钱包,请运行以下代码:

ethdo wallet create --wallet="Staking wallet" --type=hd --walletpassphrase=secret1

这行代码会建立一个带有 助记词 的钱包。助记词由 24 个单词组成,可用来恢复之前建立的钱包和钱包内的所有账户,应该立刻珍爱好。上述下令会输出助记词,应该离线保留好。若是输入下令后并没有显示助记词,说明钱包无法恢复,那么我们不应使用这个钱包。

保留助记词的方式有许多,如 Blockplate 和 Cryptosteel,但你也可以把它抄下来,放在一个平安(最好防火)的地方。记着,一旦助记词丢失,你就无法提款,因此要接纳适当的措施保留好助记词。

助记词保留好后,我们就可以最先建立提款账户了。

建立提款账户

建立提款账户的下令如下:

ethdo account create --account="Staking wallet/Withdrawal account" --walletpassphrase=secret1 --passphrase=secret2

钱包口令(walletpassphrase)必须与你在上一部门提供的口令保持一致。后面一个口令则仅仅是这个账户的口令,只在删除账户前暂时使用。

纪录取款公钥

顾名思义,公钥是 公然 的,无需接纳特殊的平安珍爱措施。运行下列代码查看公钥:

ethdo account info --account="Staking wallet/Withdrawal account"

若是该代码没有输出取款公钥,可能说明账户建立历程失足。仔细查看之前运行的代码是否有错。

请注意,虽然公钥不是私密的,但我们应该接纳合理措施保证恶意攻击者无法将你的公钥换成他们的公钥。

删除提款钱包

若是上述步骤均准确执行,我们就可以平安地删除这个提款钱包了。请运行下方代码:

ethdo wallet delete --wallet="Staking wallet"

随后,你可以运行下方代码来接见钱包,以确认该钱包是否已经删除:

ethdo wallet info --wallet="Staking wallet"

正常情形下,会返回一条错误新闻,原因是无法找到钱包。

确认提款钱包可以恢复

在用取款密钥举行任何存款前,最好先重修提款钱包。这不仅可以保证我们熟悉操作流程,还可以在你放入资金之前最后检查一遍可能泛起的错误。

首先使是用助记词重修钱包。请运行下方代码:

ethdo wallet create --wallet="Recovery wallet" --type=hd --walletpassphrase=temp1 --mnemonic="MNEMONIC"

将上方代码中的 mnemonic 换成你的助记词。

然后运行下方代码重修提款账户:

ethdo account create --account="Recovery wallet/Withdrawal account" --walletpassphrase=temp1 --passphrase=temp2

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

ethdo account info --account="Recovery wallet/Withdrawal account"

这时,要注意确认该下令输出的公钥与之前抄下来的公钥一致。若一致,则解释你的助记词是准确的。

若要再次删除该钱包,请运行下方代码:

ethdo wallet delete --wallet="Recovery wallet"

然后运行下方代码来实验接见钱包,确认其是否已经删除:

ethdo wallet info --wallet="Recovery wallet"

正常情形下,会返回一条错误新闻,原因是无法找到钱包。

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

不可以。以太坊 2.0 的验证者密钥与取款密钥在使用方式上差异很大,而且与你熟悉的绝大多数密钥都不相同。我们将在下一篇文章中细述验证者密钥,及其用法和珍爱措施。

脚注

注 1:取款密钥和以太坊 2.0 的其它密钥并无特殊区别,我们使用这个名字只是为了直观地表达出其用途。
注 2: 如图所示,实际操作中我们只需要提款身份标识。然则,我们建议也要保留好取款公钥,由于公钥可能有其他用途(如,验证署名)。
注 3: 由于公钥长这样:0xa9ca9cf7fa2d0ab1d5d52d2d8f79f68c50c5296bfce81546c254df68eaac0418717b2f9fc6655cbbddb145daeb282c00,所以会很贫苦。

原创文章,作者:链大大,如若转载,请注明出处:http://www.chaindada.com/chain/16145.html