3)  实例演示

我们从BIP39生成的种子出发,逐步演绎一下BIP32是如何执行的。

(1)  种子:

0x5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570

(2)  派生主密钥

寻找在线工具生成512位的结果(找不到的话请私聊我)

0xb2a0d576b828b537688b561f2cfa8dac3602d54c62bde619ad5331e6c235ee26b70d675323c40ec461e0a6af603b1f135fb2af9ae753eeff18922732a73b0f05

得到主私钥:

0xb2a0d576b828b537688b561f2cfa8dac3602d54c62bde619ad5331e6c235ee26

主公钥:

0x03ca72b45eede592f059b7eaf3da13eb7d8d15aa472b6f79f74820bb22ff596186

主链码:

0xb70d675323c40ec461e0a6af603b1f135fb2af9ae753eeff18922732a73b0f05


(3)  派生子密钥

A. 硬化派生

按照上文描述的法则进行派生

data = 0x00 || ser256(k_par) || ser32(i)
I = HMAC_SHA512(key = c_par, msg = data)
I_L, I_R = I[:32], I[32:]
k_i = (I_L + k_par) mod n
c_i = I_R
其中:
c_par 就是主链码
k_par 就是主私钥
i 就是深度,硬化派生是从2^31开始

data = 0x00 || ser256(k_par) || ser32(i) = 

0x00b2a0d576b828b537688b561f2cfa8dac3602d54c62bde619ad5331e6c235ee2680000000

I = HMAC_SHA512(key = c_par, msg = data) =

0xfd61ec4eff9af45c137d8e49cd152c736284aab45469981358c9ee070c9c264fce62c620b7cd66e27f970d0f29e4f2082c6b7740bd184d0c9c61f79d819af563

I_L = 0xfd61ec4eff9af45c137d8e49cd152c736284aab45469981358c9ee070c9c264f

I_R = 0xce62c620b7cd66e27f970d0f29e4f2082c6b7740bd184d0c9c61f79d819af563

k_i = (I_L + k_par) mod n

其中n你是知道的:0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

使用在线工具生成结果

k_i (子私钥)= 0xb002c1c5b7c3a9937c08e468fa0fba20ddd8a31a07deddf1464ac160fe9bd334

c_i (子链码)= 0xce62c620b7cd66e27f970d0f29e4f2082c6b7740bd184d0c9c61f79d819af563

B. 普通派生

按照上文描述的法则进行普通派生

data = serP(K_par) || ser32(i)
I = HMAC_SHA512(key = c_par, msg = data)
I_L, I_R = I[:32], I[32:]
k_i = (I_L + k_par) mod n
c_i = I_R
其中:
c_par 就是主链码
K_par 就是主公钥
i 就是深度,硬化派生是从0开始

data = ser256(K_par) || ser32(i) = 

0x03ca72b45eede592f059b7eaf3da13eb7d8d15aa472b6f79f74820bb22ff59618600000000

I = HMAC_SHA512(key = c_par, msg = data) =

0xa195f406434d6609e583caa55322cea249820a439ad695101807bd9d6a784a71a74b758d3dc442f8620a2438f56629e62a743a4b4fe1ad02166185bf290b56d1

I_L = 0xa195f406434d6609e583caa55322cea249820a439ad695101807bd9d6a784a71

I_R = 0xa74b758d3dc442f8620a2438f56629e62a743a4b4fe1ad02166185bf290b56d1

k_i = (I_L + k_par) mod n

其中n你是知道的:0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

使用在线工具生成结果

k_i (子私钥)= 0x5436c97cfb761b414e0f20c4801d5c4fc4d602a94e4bdaee058890f75c77f756

c_i (子链码)= 0xa74b758d3dc442f8620a2438f56629e62a743a4b4fe1ad02166185bf290b56d1

$BTC

#钱包 #BTC走势分析