科普 | Eth2.0验证者如何生成和保护取款密钥_MEL:DEFI

取款密钥是什么?

取款密钥是以太坊2.0中的验证者用来提现以太币的密钥。

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

以太坊2.0中的密钥总是以公钥与私钥的形式成对出现。取款密钥由权益人自己持有,因为他们是资金的提供者,当然也想保有撤资的权利。

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

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

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

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

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

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

国务院:推进科普与区块链技术深度融合:为贯彻落实党中央、国务院关于科普和科学素质建设的重要部署,依据《中华人民共和国科学技术进步法》、《中华人民共和国科学技术普及法》制定《全民科学素质行动规划纲要(2021-2035年)》,其中要求实施智慧科普建设工程。推进科普与区块链等技术深度融合,强化需求感知、用户分层、情景应用理念,推动传播方式、组织动员、运营服务等创新升级,加强“科普中国”建设,强化科普信息落地应用,与智慧教育、智慧城市、智慧社区等深度融合。(新华社)[2021/7/10 0:40:52]

-图二:提现操作框架-

在上图的示例中,权益人使用提款私钥对提现操作的细节进行签名。然后,以太坊2.0网络就可以比较提款操作中的签名授权与存款协议中的提款身份标识。如果两者匹配,提款操作就能进行下去。

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

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

TRON数字钱包科普资料《波场钱包的现在过去与未来》已上线:据最新消息显示,由TokenPocket联合波场TRON官方,以及 TokenPocket 社区志愿者共同撰写的《波场钱包的现在过去与未来》已正式上线。《波场钱包的现在过去与未来》又称为波场钱包小白书,详细介绍了当前TRON钱包与TRON生态密切结合的实例,是目前市面上最为详细的TRON数字钱包科普资料。波场钱包作为波场公链生态中极为重要的入口,是波场生态的重要构成要素。波场钱包从一开始只提供权限管理、转账收款、节点投票等基础功能,到如今不仅可以为用户提供法币交易、闪兑和去中心化交易所等方便快捷的交易服务,还能让用户直接在钱包上体验波场上DApp,挖矿、DeFi、Staking等资产增值服务。详情见原文链接。[2020/8/20]

要保护多少个私钥?

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

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

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

人大附中物理老师李永乐科普拜占庭将军问题和区块链:5月14日,人大附中物理老师、科普视频网红李永乐在其公众号发布视频《拜占庭将军问题是什么?区块链如何防范恶意节点?》。李永乐老师在视频中对拜占庭将军问题和区块链进行了讲解,他表示,拜占庭将军问题本质上指的是,在分布式计算机网络中,如果存在故障和恶意节点,是否能够保持正常节点的网络一致性问题。在近40年的时间里,人们提出了许多方案解决这一问题,称为拜占庭容错法。例如兰波特自己提出了口头协议、书面协议法,后来有人提出了实用拜占庭容错PBFT算法,在2008年,中本聪发明比特币后,人们又设想了通过区块链的方法解决这一问题。区块链通过算力证明来保持账本的一致性,也就是必须计算数学题,才能得到记账的权力,其他人对这个记账结果进行验证,如果是对的,就认可你的结果。与拜占庭问题比起来,就增加了叛徒的成本。[2020/5/14]

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

总之,如果你想防止其他人发现多个验证者身份背后的同一个实体,并且将你的每个提款私钥分别储存在不同地方,或者采用了不同的密钥保护机制,那么使用多个私钥会带来实质性的好处。由于普通用户一般不会这样操作,本文的余下部分只介绍了单个提款私钥是如何使用的,如有需要,本文内容也将适用于持有多个私钥的情况。

动态 | 报告:区块链等热点词促使童书科普百科类成交额同比增速最高:近日,京东图书与艾瑞咨询联合发布了《2019中国图书市场报告》。报告指出,AI、5G、区块链、机器人、VR、智能家居、AR这些热点词,不断点燃科技热潮,科技在改变大众生活的同时,也吸引了越来越多家长的关注,从小培养孩子对科技的兴趣和热爱。因此童书中科普百科类成交额同比增速最高,占比将近40%。[2020/1/8]

步骤

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

创建提款钱包;

创建提款账户;

记录取款公钥;

删除提款钱包;

确认提款钱包可以恢复。

我们来看一下图解:

-图三:创建并保护取款密钥的步骤-

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

动态 | 美国演说家Anthony Robbins开始科普什么是比特币:美国演说家安东尼·罗宾(Anthony Robbins)在自己的网站上发布了一篇比特币的科普文章,并在推特上向自己的粉丝介绍什么是比特币,目前他的推特账户共有粉丝304万人。[2019/1/1]

创建提款钱包

本文截稿时,尚未开发出基于BLS12-381曲线的以太坊2.0密钥硬件钱包,也就是说,目前还没有可以储存以太坊2.0密钥的硬件钱包。因此,密钥必须在软件中生成。本文以ethdo命令行工具为例,你也可以使用其它工具来实现。

ethdo采用了钱包的概念。一个钱包可以包含一个或多个账户,而且可以从逻辑上将不同账户分隔开来。一个账户包括私钥、公钥以及其它一些数据,这样就不用直接使用公钥登陆了。如果要为提款账户创建钱包,请运行以下代码:

ethdowalletcreate--wallet="Stakingwallet"--type=hd--walletpassphrase=secret1

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

保存助记词的方法有很多,如Blockplate和Cryptosteel,但你也可以把它抄下来,放在一个安全的地方。记住,一旦助记词丢失,你就无法提款,因此要采取恰当的措施保存好助记词。

助记词保存好后,我们就可以开始创建提款账户了。

创建提款账户

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

ethdoaccountcreate--account="Stakingwallet/Withdrawalaccount"--walletpassphrase=secret1--passphrase=secret2

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

记录取款公钥

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

ethdoaccountinfo--account="Stakingwallet/Withdrawalaccount"

如果该代码没有输出取款公钥,可能说明账户创建过程出错。仔细查看之前运行的代码是否有错。

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

删除提款钱包

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

ethdowalletdelete--wallet="Stakingwallet"

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

ethdowalletinfo--wallet="Stakingwallet"

正常情况下,会返回一条错误消息,原因是无法找到钱包。

确认提款钱包可以恢复

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

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

ethdowalletcreate--wallet="Recoverywallet"--type=hd--walletpassphrase=temp1--mnemonic="MNEMONIC"

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

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

ethdoaccountcreate--account="Recoverywallet/Withdrawalaccount"--walletpassphrase=temp1--passphrase=temp2

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

ethdoaccountinfo--account="Recoverywallet/Withdrawalaccount"

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

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

ethdowalletdelete--wallet="Recoverywallet"

然后运行下方代码来尝试访问钱包,确认其是否已经删除:

ethdowalletinfo--wallet="Recoverywallet"

正常情况下,会返回一条错误消息,原因是无法找到钱包。

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

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

脚注

注1:取款密钥和以太坊2.0的其它密钥并无特殊区别,我们使用这个名字只是为了直观地表达出其用途。

注2:如图所示,实际操作中我们只需要提款身份标识。但是,我们建议也要保存好取款公钥,因为公钥可能有其他用途。

注3:因为公钥长这样:0xa9ca9cf7fa2d0ab1d5d52d2d8f79f68c50c5296bfce81546c254df68eaac0418717b2f9fc6655cbbddb145daeb282c00,所以会很麻烦。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-8:187ms