比特币钱包开发:新建子账号与导出子账号私钥
Target
获取钱包子帐户地址
获取钱包余额
获取BTC测试货币
创建新的钱包子帐户地址
导出子帐户私钥
前言
1 .获取钱包的子账户地址
余额会在每次交易时转移到一个新的子地址,交易会通过新的子地址生成。这样做的目的是为了提高帐户的安全性。同样,接受他人转账时,最好提供新的子账户地址来接受。那我们先获取钱包的子账户地址。
为获取bitcore-wallet-client库中的子账户地址而提供的API是getMainAddresses()方法。您可以检查特定参数的文档细节,我们不需要在这里传递参数。例子如下
?输出如下
c8d7b 051-47 E4-402d-B053-2b7e 512722 cf
注意:必须使用import()方法解锁钱包。蓑衣网小编2022
返回的数据地址是一个数组,元素是帐户地址对象。wallet1钱包目前只有一个word账户地址,路径为“m/0/0”,地址为“移动F5 KCAS 5ZL WU9CGW TW3G H25CIC 51kqz”。二获取钱包余额bit core-wallet-client库中为获取钱包余额提供的API是getBalance()方法。您可以查看特定参数的文档细节,这里我们不需要传递参数。示例如下。输出如下c 0ed 20 de-93 C1-44 蓑衣网小编2022 F6-BD8F-15115 e 62 e 56 b返回的数据是一个对象,包含以下连字符
totalAmount:总余额。
lockedAmount:锁定余额。
totalConfirmedAmount:所有确认的余额。
锁定确认金额:锁定余额。
可用数量:可用余额。
可用确认金额:可用确认余额。
byAddress:金额来自哪个子地址?它是一个数组,元素是对象,包含的字用
地址来断:地址有余额。
path:这个地址的路径。
amount:该地址拥有的余额。
从输出中可以看到,余额为0。我怎样才能得到BTC天平?
BTC可以通过以下方式在主网获得:
提供自己的任意子账号地址,通过他人转账获得。
通过钱包应用中的货币交易获得。
通过BTC在交易所获得。
BTC在考网可以通过以下方式获得:
提供自己的任意子账号地址,通过他人转账获得。
去coins水龙头网站获得BTC测试硬币。
测试网的第二种方式“从coins龙头网站获取BTC测试币”在下面介绍,第一种方式在下一章介绍。第三部分。求BTC测试币
在开发过程中,需要有BTC平衡,方便开发和测试,而且测试是在正规网络中进行的,传送需要气,速度慢,所以我们会在测试网络中开发和测试。调试成功后,将网络类型替换为“livenet”即可切换到比特币官方网络。
第一步:打开coin水龙头网站,如下图
76f 1075 f-FF34-4c f1-AFAE-75 c 49 fc 9545
第二步:说说上面解锁的钱包“wallet1”的地址。
8 a 461 cf 6-698 f-4b7b-92 F9-82c 73387006 e第三步:验证码通过后,会提示货币已经转账到指定账户地址,然后这个IP地址需要12个小时才能再次获得BTC测试货币。b7b 5d 886-C952-473d-815 b-ce 5a 10 bb 6082第四步:我们再次运行代码,获取钱包余额,输出如下。[X][X][X]3c 9 FB 67-7861-4d 27-860d-FEBC 8d 3 e 3a 59[X]可以看到,账号“Move F5 KCAS 5ZL Wu 9 cgw TW3G h 25 CIC 51k qz”的可用余额为12121737。注:代码中的比特币余额是以Satoshi单位计算和传输的,所以我们在前端显示时需要换算成BTC单位,进位数为10 ^ 8。 所以这个账户目前的余额是0.12121737BTC.
四、给钱包新建一个子账户地址
到目前为止,我们的钱包只有一个子账户地址。为了获得更多的子账户地址,我们应该获得路径“m/0/1”和“m/0/2”.“m/0/2 31。让我们看看它的完整实现。?输出如下e 79 CB 8 b 4-39AA-4ed 8-97DD-4 B3 db 718 e2a再次为wallet1 wallet创建一个子账户地址,因为只为这个wallet创建了路径“m/0/0”的地址。我们再核对一下这个钱包的子账户地址和余额。?可以看出,0.12121737BTC的钱包余额仍然归第一个账户所有,有两个子账户地址,分别是“m/0/0”和“m/0/1”。
验证2:使用助记符转换网站
然后打开助记符转换网站验证wallet1钱包。它的助记符是“同一个地铁开发趣味图书馆沙雨汉堡船楼层定义”,它的密码是“1234qwer”。
2be 72 ba 3-CB F4-46fc-a195-f 51388 ef 8 fc 8
可以看出结果与规范一致。五、导出子账户私钥现在我们来导出钱包“wallet1”中“m/0/1”路径的私钥。需要通过credentials authentication对象调用getDerivedXPrivKey()方法获取derivedXPrivKey,然后通过path获取指定账户的keyPair,这样keyPair中就有了私钥。?输出如下
40b 18343-5b 78-4a 70-9ce 8-f 5c 2e 60 b 5782
根据输出,我们可以看到已经成功获取了“m/0/1”路径的私钥、公钥和地址数据,这也与助记符转换网站的数据一致。
六。完整源代码1。controllers/wallet.js
编辑controllers文件夹下的wallet.js文件,实现获取钱包子账户地址、获取钱包余额、创建钱包子账户地址、导出子账户私钥的功能。
?
2。controllers/web.js
编辑controllers文件夹下的web.js文件,后端实现返回钱包账户详情页面。
???
?七。项目运营效果
786 e 6166-Fa63-4b 85-9486-6e 71 c8 CDC 8[X]项目来源Github地址[X][X]版权声明:博客中的文章归博主所有,未经授权禁止转载。请联系作者(微信
未经授权禁止转载和改编。转载请注明出处!