主页 > imtoken如何安装 > 区块链入门②——钱包
区块链入门②——钱包
区块链入门②——钱包 钱包概览
钱包类型
第二种是确定性钱包,其中所有私钥都来自主私钥,也就是种子。 此类钱包中的所有私钥都是相互关联的。 如果有原始种子,可以重新生成所有私钥。
注意单词
创建一个 128 到 256 位的随机数(熵)。 提取随机数的SHA256哈希值的前x位(x等于随机数除以32)作为校验码。 将校验和添加到随机序列的末尾。 将序列除以 11 位。 将每个 11 位值映射到一个包含 2048 (
) 在预定义的单词词典中。 生成的单词序列就是助记符。
PBKDF2密钥扩展函数的第一个参数是第6步生成的助记词。PBKDF2密钥扩展函数的第二个参数是salt。 由固定字符串“mnemonic”和可选的用户输入的密码字符串组成。 PBKDF2以助记词和盐为参数,调用HMAC-SHA512哈希算法2048次,生成一个512位的值作为其扩展的最终输出。 这个 512 位的值就是种子。创建主私钥和主链码
子密钥的推导
分层确定性钱包使用 CKD(子密钥派生)功能从父密钥派生子密钥。
因为导数方程是单向方程,所以不能使用子密钥来发现它们的父密钥。 子键也不能用于在同一级别发现它们的兄弟键。
没有子链代码比特币扩展公钥,子密钥不能用于派生任何孙子。 您需要子密钥和相应的链代码来创建新分支以派生孙密钥。
父私钥 -> 子私钥 -> 子公钥
扩展密钥
将密钥和链码这两个重要部分结合起来称为扩展密钥。 术语“扩展密钥”也被认为是“可扩展密钥”,因为这样的密钥可用于派生子密钥。 扩展密钥可以简单地表示为连接和存储的一系列密钥和链代码。
扩展公钥及其应用:
安全隐患
如果知道子私钥,可能会导致父私钥泄露。 推导如下:
两种子密钥推导方式的输入参数分别为父公钥、父链码、父索引号,导致输出相同512位,链码(右256位)也一致。 因为扩展公钥包含链码比特币扩展公钥,可以生成后代链码,所以可以得到左边的256位。 根据子私钥=左256bits+父私钥,如果对应的子私钥泄露,可以逆向推导出父私钥。 继续反推已知最早的扩展公钥对应的私钥。子私钥强推
这个强推导函数使用父私钥来推导子私钥。 这导致 512 位输出与通过派生子公钥生成的链代码(右 256 位)之间的不一致。 因此无法得到对应的左256位,也无法逆向父私钥。
因此强推导用于扩展密钥树中公钥的上层以创建“间隙/防火墙”。
为了避免主密钥的泄露,从主密钥派生的一级子密钥总是通过强化派生的。
索引代码、密钥标识符、路径
HD 钱包密钥标识符(路径)
高清路径键说明
米/0
从主私钥(m)导出的第一个子私钥(0)
米/0/0
从第一个子私钥(m/0)导出的第一个子私钥(0)
米/0'/0
从第一个加固子私钥(m/0')导出的第一个常规子私钥(0)
米/1/0
从第二个子私钥(m/1)导出的第一个子私钥(0)
男/23/17/0/0
第18个子公钥(M/23/)的第24个子公钥(M/23)导出的第1个子公钥(M/23/17/0)的第一个子公钥(0) 17)
HD钱包树结构导航
BIP-44 指定了一个具有 5 个预定义树级别的结构:
m /purpose'/coin_type'/account'/change/address_index
高清路径Key描述
M/44'/0'/0'/0/2
比特币主账户第三个接收公钥
M/44'/0'/3'/1/14
第四个比特币账户零钱收集的第15个公钥
米/44'/2'/0'/0/1
莱特币主账户中的第二个私钥,用于签署交易
同类热门推荐
本站仅用于信息传播,不对所发布内容本身负责。 如有版权等问题,请联系站长。