主页 > imtoken官网地址打不开 > 比特币钱包和密钥管理知识

比特币钱包和密钥管理知识

imtoken官网地址打不开 2023-03-28 05:10:24

前置知识

这部分主要介绍开发钱包前需要了解的几个知识点。

比特币私钥、公钥和地址的关系

在比特币中,使用椭圆曲线密码学作为公钥和私钥的核心算法(使用的椭圆曲线是Secp256k1),私钥本质上是一个很大的随机数,保密存储,用于签署交易,从而证明UTXO的所有权,公钥是椭圆曲线上一点的坐标,由私钥和它所在的曲线计算得出,这个计算是不可逆的,也就是没有计算方法来计算private key from the public key. 通常,这里的私钥是32Byte,公钥是33Byte(压缩公钥格式),比特币地址本质上是公钥的hash结果;这里使用的hash是sha256+ripemd16 0.,也就是常说的双哈希,或者也叫哈160. 地址通常表示为哈希结果的 Base58Check 编码。

比特币钱包及其功能到底是什么?

比特币钱包是一种存储和使用比特币的工具。定义简单明了,只是大家都比较复杂。

雷达币钱包里的比特币咋提现_比特币 钱包 未确认_如何安装比特币钱包

比特币钱包是电脑或手机的客户端。安装完成后,客户端会自动生成用户的比特币钱包文件来存储用户的比特币信息,包括支付地址和私钥。这个钱包文件就是用户的钱包。例如,如果您从 OKCoin 购买比特币,您可以将比特币转移到您自己的付款地址。网络确认后,比特币将存储在用户的钱包中。

简而言之,比特币钱包有两个基本功能:一是安全存储比特币私钥,二是发送和接收比特币。

实现钱包密钥管理的几个标准

现阶段,对于钱包的发展,有几个事实上的标准需要遵循和执行,市面上现有的所有钱包都执行这些标准。

BIP-0032:分层确定性钱包(HD Wallet)规范;

如何安装比特币钱包_比特币 钱包 未确认_雷达币钱包里的比特币咋提现

BIP-0039:私钥与助记码相互转换规范;

BIP-0043:多用途高清钱包规范;

BIP-0044:多账户多币种高清钱包规范;

这些规范基本上是由现有的钱包实现的。其中,BIP-0032、BIP-0038、BIP-0039相互独立,处于不同的钱包实现过程中;BIP-0043在BIP-0032中,BIP-0044在BIP-0043的基础上有了更详细的规范;与BIP-0044同类型的是BIP-0045、BIP-0047、BIP -0049等规格;

3. BIP-0032

如何安装比特币钱包_雷达币钱包里的比特币咋提现_比特币 钱包 未确认

比特币建议的相同地址被使用一次。相比普通的私钥->公钥->地址关系,钱包需要维护多个地址,所以钱包可以做两个方向。一是独立存储多个地址对应多个私钥,这也是一个非确定性钱包;另一种思路是,一个种子(Seed)可以扩展生成多个私钥如何安装比特币钱包,每个私钥都有自己对应的公钥、地址,这就是确定性钱包;BIP-0032 为具有层的确定性钱包建立了规范。

使用非确定性钱包有两个缺点。每个地址对应一个私钥,需要备份的私钥很多。丢失其中一个私钥也将丢失那部分比特币;不时需要备份。

HD钱包的种子本质上是一个随机数,或者说是其他规范生成的数字,最常见的是通过BIP-0039的助记词生成;

首先种子通过HMAC-SHA512(Key=”Bitcoin seed”, Data=Seed)哈希函数生成一个64Byte的主密钥(Key是某个字符串“比特币种子”),主密钥分为32Byte有两部分,左侧作为主私钥,右侧作为派生子密钥,称为链码。左侧的主私钥可以计算出公钥,从而计算出正常使用的地址;密钥和链码,结合子密钥索引(索引为4Byte序列号),通过HMAC-SHA512推导出子密钥,主要分为三种:

(1).父私钥->子私钥

如何安装比特币钱包_比特币 钱包 未确认_雷达币钱包里的比特币咋提现

这里仍然使用 HMAC-SHA512 哈希函数。父级的 ChainCode 用作哈希函数的键。通过父私钥和索引计算出来的公钥(33Byte)作为散列函数的数据。哈希函数还生成一个 64Byte 的子密钥,也分为 32Byte 的两部分。右边的ChainCode用于从子链中衍生出自己的子链;主私钥有椭圆曲线求和校验,看是否为零;如果验证通过,则为有效的子级私钥,如果无效,则跳过当前索引。

(2).父公钥->子公钥

这里HMAC-SHA512的计算和(1)中的计算一样,只是父公钥直接参与计算,而不是从私钥;同样的hash函数分为两部分,对边是ChainCode,左边是32Byte通过椭圆曲线计算公钥,然后通过椭圆曲线的点坐标加上父公钥得到子公钥;

因此,在使用中,只需要通过父公钥和链码,在不安全的环境下就可以导出所需的子公钥,全程不需要私钥;这里有一点要明白,得到的子公钥 私钥在使用中是需要解密的。通过(1)中的相同索引,计算得到的子私钥和这里计算的子公钥是公私钥对;因为这里的椭圆曲线是一个可交换的群,满足交换律和结合律,而椭圆曲线中私钥对公钥的计算是乘法(PubKey = PrevKey * P,P是特定椭圆曲线上的常数),所以满足ParentPrevKey * P + LeftBytes * P = (ParentPrevKey + LeftBytes) * P,

(3).父私钥->子公钥

如何安装比特币钱包_雷达币钱包里的比特币咋提现_比特币 钱包 未确认

父私钥有两种方式获取子公钥。一种是先通过(1),导出子私钥计算出子公钥;另一种是先计算父公钥,再通过(2);

增强推导

上面提到的父公钥和链码统称为扩展公钥,子公钥是在不安全的环境中导出的,但是一旦子私钥泄露如何安装比特币钱包,扩展公钥中的链码可以导出其全部子私钥,其他子私钥和父链码存在推断父私钥的风险,因此引入了增强派生的概念。

增强派生只能从父私钥派生出子私钥得到子公钥,而不能像上面那样做公钥派生(2),具体派生过程和(1)在HMAC -SHA512有细微差别,与(1)中父私钥计算得到的公钥(33Byte)不同,增强推导通过0x00这样1Byte拼写为私钥和索引为Data,和其他推导步骤相同。强化的 spawn 不会将父链代码暴露在不安全的环境中,因此比普通 spawn 更安全。

子键的索引号和路径表示

索引的范围是2^32,其中前2^31表示正态导数,通常用索引号表示;最后的2^31表示增强派生,增强派生序号也是从0开始,序号后面会加一个撇号表示增强派生,例如0x80000000是第一个增强派生的序号,通常表示为0',钱包里有i'=2^31+i这样的关系。

子键的路径由索引除以/表示;前缀分为m和M,其中m表示派生的子私钥,M表示派生的子公钥。例如,m/5/4'/0代表子私钥m/5/4'的第0个普通派生私钥,m/5/4'是子私钥的第4个增强派生子密钥私钥 m/5。私钥,m/5是主私钥的第5个正常派生的子私钥。

文章转载:eos柚子币-EOS币价格,今日EOS币实时行情走势EOS实时行情信息站