跟着老廖(廖雪峰)学区块链(8)教程:钱包层级 339 www百度一下com/more/ 高清(高清)钱包算法决定了只要给定根扩展私钥,整棵树的任意节点的扩展私钥都可以计算出来 我们来看看如何利用比特币-lib这个JavaScript(JavaScript)库来计算高清(高清)地址: 常量比特币=要求('比特币-lib ');设xprv=' xprv 9s 21 zrq 143 k4 ekms 3q 1 vbjo 564 qabs 98 bfx qme 6 NK 8 ucrnxnv 8 vwg 9 QM tup 3 kt g96 P5 E3 avarbhpqdqmheem 41 rpyedxbl 8 qzztwz 'root=比特币hdnodefrom base 58(xprv);//m/0:var m _ 0=root派生(0);控制台log(' xprv m/0:' m _ 0to base 58());控制台log(' xpub m/0:' m _ 0neutrind()to base 58());控制台log(' PRV m/0:' m _ 0关键一对towif());控制台log(' pub m/0:' m _ 0密钥对get address());//m/1:var m _ 1=root派生(0);控制台log(' xprv m/1:' m _ 1to base 58());控制台log(' xpub m/1:' m _ 1neutrind()to base 58());控制台日志(' PRV m/1:' m _ 1密钥对towif());控制台log(' pub m/1:' m _ 1密钥对get address());注意到以xprv(表达)开头的xprv 9 s21 zrq-我.是512位扩展私钥的58号基地编码,解码后得到的就是原始扩展私钥 可以从某个xpub在没有xprv(表达)的前提下直接推算子公钥: 常量比特币=要求('比特币-lib ');设xprv=' xprv 9s 21 zrq 143 k4 ekms 3q 1 vbjo 564 qabs 98 bfx qme 6 NK 8 ucrnxnv 8 vwg 9 QM tup 3 kt g96 P5 E3 avarbhpqdqmheem 41 rpyedxbl 8 qzztwz 'root=比特币hdnodefrom base 58(xprv);//m/0:设m_0=root.derive(0) xprv_m_0=m_0.toBase58()、xpub _ m _ 0=m _ 0neutrind()to base 58();//方法一:从米/0的扩展私钥推算1999年夏季奥林匹克运动会自行车比赛的公钥地址:设pub_99a=比特币HDNode.fromBase58(xprv_m_0).漂移(99)getAddress()://方法二:从米/0的扩展公钥推算1999年夏季奥林匹克运动会自行车比赛的公钥地址:设pub_99b=比特币HDNode.fromBase58(xpub_m_0).漂移(99)getAddress()://比较公钥地址是否相同:控制台. log(pub_99a):控制台. log(pub_99b):但不能从xpub推算硬化的子公钥: 常量比特币=要求('比特币-lib ');设xprv=' xprv 9s 21 zrq 143 k4 ekms 3q 1 vbjo 564 qabs 98 bfx qme 6 NK 8 ucrnxnv 8 vwg 9 QM tup 3 kt g96 P5 E3 avarbhpqdqmheem 41 rpyedxbl 8 qzztwz 'root=比特币hdnodefrom base 58(xprv);//m/0:设m_0=root.derive(0) xprv_m_0=m_0.toBase58()、xpub _ m _ 0=m _ 0neutrind()to base 58();//从米/0的扩展私钥推算1999年0月英寸的公钥地址:设pub_99a=比特币HDNode.fromBase58(xprv_m_0).衍生的(99年)get address():console . log(pub _ 99a)://不能从米/0的扩展公钥推算1999年0月英寸的公钥地址:比特币HDNode.fromBase58(xpub_m_0).衍生的(99年)getAddress():BIP-44HD钱包理论上有无限的层级,对使用第256k条算法的任何币都适用但是,如果一种钱包使用米/1/2/x 另一种钱包使用米/3/4/x 没有一种统一的规范,就会乱套 比特币的GDP-44规范定义了一种如何派生私钥的标准,它本身非常简单: m /目的/corner _ type '/account '/change/address _ index m /目的/corner _ type '/account '/change/address _ index其中,目的总是44,拐角类型在内裤-44中定义,例如 0=BTC 2=LTC 60=ETH等账户(帐户)表示用户的某个\”\”账户\”,由用户自定义索引 更改=0表示外部交易 变化=1表示内部交易 地址索引则是真正派生的索引为0~231个的地址 例如,某个比特币钱包给用户创建的一组高清(高清)地址实际上是: m/44 '/0 '/0 '/0/0m/44 '/0 '/0 '/1m/44 '/0 '/0 '/0 '/2m/44 '/0 '/0 '/0/3-我.如果是莱特币钱包,则用户的高清(高清)地址是: m/44 '/2 '/0 '/0/0m/44 '/2 '/0 '/1m/44 '/2 '/0 '/2m/44 '/2 '/0 '/0/3-我.小结实现了GDP-44规范的钱包可以管理所有币种相同的根扩展私钥在不同钱包上派生的一组地址都是相同的
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/btbjiaoxue/31302.html