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