今日,Eth2.0团队核心开发者,Eth2.0开发负责人Carl发布了一篇解读Eth2.0中权益证明签名方案的文章。以下为文章内容整理。
每个权益证明系统的核心是签名方案。签名用于验证每个验证器的身份,从而允许将其行为(无论好坏)归因于它们。
我们可以通过查看验证者签名的消息来验证诚实,也可以通过显示违反共识规则的消息来证明恶意。
实际上,在eth2中,验证者的身份就是其公钥。具体来说,每个验证器都有两组密钥:签名密钥和提取密钥。
签名密钥
一个签名密钥是一个验证需要签上作证,并提出块的关键。由于验证者需要每个时期至少签名一次消息,因此客户端软件必须拥有密钥的保管权。
ShuttleFlow 2.0版本跨链协议上线:官方消息,近日,ShuttleFlow跨链协议发布2.0版本,将实现Conflux网络上资产反向跨到主流公链的功能,同时完成与OKExChain、火币生态链(Heco)、币安智能链(BSC)三家交易平台公链双向互操作功能。ShuttleFlow将成为首个同时支持OKExChain、火币生态链及币安智能链的多链同质资产融合治理解决方案。2020年第一季度,ShuttleFlowV1.0正式上线并成立Conflux跨链联盟,做为跨链资产的发行承兑方,支持了49种资产从主流公链跨到Conflux网络当中。同年9月,Conflux网络上首个DEX项目MoonSwap完成全球首次跨链资产迁移,迁移资产总计760万USDT。截止到2021年3月4号,ShuttleFlow引入跨链资产总量高达$2500万。[2021/3/5 18:17:38]
提款密钥
上周Bakkt比特币月度期货交易额较前一周下跌47%:数据显示,上周(2月22日至2月28日)Bakkt比特币月度期货总交易额为2.25亿美元,较前一周下跌47%。[2021/3/1 18:01:56]
由于客户端软件始终连接到Internet,因此当然有可能会破坏其签名密钥。为了减少这种破坏的影响,验证者可以执行的操作被划分在两个密钥之间。
如上所述,签名密钥用于验证程序执行其职责。另一方面,提款密钥具有控制验证者资金的权力(转移和提取ETH)。
验证者在成为验证者的整个生命周期内仅需要使用其提款密钥几次。这意味着可以将它们放入冷藏库并以高度的安全性进行存储(脱机)。
YFI突破46500美元关口 日内涨幅为5.02%:火币全球站数据显示,YFI短线上涨,突破46500美元关口,现报46508.6美元,日内涨幅达到5.02%,行情波动较大,请做好风险控制。[2021/2/20 17:33:19]
此外,至少在第1阶段才能启用转账和提款。
密钥很多
如果每投入32ETH,需要保存并使用2个不相关的密钥进行存款,这中方式会很快消失。
幸运的是,我们有一个解决方案。补救措施是使用公共密钥,以便存储单个密钥可以访问多个密钥。
在eth2中,这是通过EIP 2333和2334实现的,描述取款和签名密钥之间的关系,以及如何从单个助记符派生它们。
助记符
助记符是编码机密的另一种方法,是人们存储和备份其私钥的一种简单得多的方法。
从其他键派生密钥
与钱包互动时,您可能会遇到表单的“路径” 。
根据EIP 2333,这种关系采用树结构的形式,其中密钥由熵的源(树的种子)和树路径确定。
我们使用种子来计算树的根,然后在该根的顶部分层构建树。密钥树完全是通过树中跟随的分支与树的根之间的关系定义的。
实际上,它使我们可以从树的根部开始,并在跟随的每个分支上计算中间键,直到找到感兴趣的叶子,从而在树中找到任何键。
这样做的一个奇妙结果是,我们可以从一个单一的熵源(例如助记符)开始,然后从中构建出几乎无限数量的密钥。
此外,通过仅安全地存储助记符,您可以备份验证程序使用的每个密钥。
eth2中使用了此想法,以允许单个助记符生成验证程序所需的任意多个密钥。
EIP 2334指出,验证者的签名密钥是0提取密钥的第三个子分支。实际上,这意味着遵循该标准时,如果您知道要撤消的私钥,则可以计算相应的用于签名的私钥。
要记住的重要一点是,如果您知道助记符,则可以计算出提取密钥,然后从中导出签名密钥。
存放密钥
验证程序客户端使用密钥库作为交换密钥的方法。
密钥库是包含用用户密码加密的私钥的文件。如果密码未存储在同一台计算机上,则可以在计算机之间安全地存储和传输它们。
准备开始验证时,可以为客户端提供密钥库和加密它们的密码(它需要两条信息来导入密钥)。
成为验证者
成为验证者的第一步是生成适当的密钥。一旦记下了助记符,它们就会生成。
由于第0阶段没有提款或转账,因此您不需要为提款密钥设置密钥库;安全地存储您的助记符就足够了。
由于验证者客户需要您的签名密钥,因此您将为每个验证者收到一个密钥库,用于存储这些密钥。
现在是存款时间,要成为验证者,除了包含所有验证者公共密钥的存款数据之外,每个验证者还需要发送32 ETH 。
然后将存款数据记录在eth1的存款合同中,eth2节点负责监视此合同,该节点负责复制存款数据。一旦您的存款数据被复制完,您现在正式成为验证者!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。