主页 > imtoken钱包劫持 > 【比特币钱包开发7】新建子账户并导出子账户私钥

【比特币钱包开发7】新建子账户并导出子账户私钥

imtoken钱包劫持 2023-04-08 07:22:54

作者:ChainDesk 李旭,ChainDesk 区块链行业分析师,ChainDesk 区块链工程师

课程目标

获取钱包子账户地址

获取钱包余额

申请 BTC 测试币

新钱包子账户地址

导出子账号私钥

前言

在前面的内容中,我们已经拿到了我所有的钱包。 本章内容为操作我的钱包,如:获取钱包子账户地址、获取钱包余额、新建钱包子账户地址、导出子账户私钥等功能。

1.获取钱包子账户地址

在每笔交易中,余额都会转移到一个新的子地址,交易会通过新的子地址产生。 这样做的目的是提高账户的安全性。 同样,在接受他人转账时,也最好提供一个新的子账户地址进行接受。 那么我们先获取钱包拥有的子账户地址。

bitcore-wallet-client库提供的获取子账户地址的API是getMainAddresses()方法。 具体参数请参考文档详情。 这里我们不能传递参数。 例子如下

如何注销比特币账户_比特币账户注册_怎么开比特币账户

输出如下

如何注销比特币账户_比特币账户注册_怎么开比特币账户

注意:在钱包上操作货币时,必须使用import()方法解锁钱包。

返回的数据地址是一个数组,元素是账户地址对象。 Wallet1钱包目前只有一个word账户地址,路径为“m/0/0”,地址为“moveF5KCAs5ZLwu9Cgwtw3Gh25CiC51KQz”。

2.获取钱包余额

bitcore-wallet-client库提供的获取钱包余额的API是getBalance()方法。 具体参数请参考文档详情。 这里我们不能传递参数。 例子如下

如何注销比特币账户_比特币账户注册_怎么开比特币账户

输出如下

如何注销比特币账户_比特币账户注册_怎么开比特币账户

返回的数据是一个包含以下分词的对象

totalAmount:总余额。

lockedAmount:锁定余额。

totalConfirmedAmount:总确认余额。

lockedConfirmedAmount:锁定的余额。

availableAmount:可用余额。

availableConfirmedAmount:可用确认余额。

byAddress:金额来自哪个子地址,是一个数组,元素是对象,包含的词是

地址:持有余额的地址。

path:地址的路径。

amount:地址的余额。

从输出中可以看出余额为0,如何获取BTC余额?

在主网上可以通过以下方式获取BTC:

提供自己的任意子账户地址,通过他人转账获取。

通过钱包应用程序中的货币交易获得。

通过BTC在交易所获得。

在测试网中,BTC可以通过以下方式获取:

提供自己的任意子账户地址,通过他人转账获取。

前往coinfaucet网站领取BTC测试币。

下面介绍测试网中的第二种方法“从coinfaucet网站申请BTC测试币”,第一种方法将在下一章介绍。

3.申请BTC测试币

在开发过程中,需要有一个BTC余额,方便开发和测试。 在官网测试怎么开比特币账户,转账需要消耗gas,速度慢,所以我们会在测试网开发测试。 调试成功后,网络类型就断了。 将其替换为“livenet”以切换到官方比特币网络。

第一步:打开coinfaucet网站,如下图

如何注销比特币账户_比特币账户注册_怎么开比特币账户

第二步:将上面解锁的“wallet1”钱包的地址“moveF5KCAs5ZLwu9Cgwtw3Gh25CiC51KQz”粘贴到上面的输入框中。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

第三步:验证码通过后会提示币已转入指定账户地址,然后提示该IP地址需要12小时才能再次领取BTC测试币。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

第四步:我们再次运行代码获取钱包余额,输出如下。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

可以看到账户“moveF5KCAs5ZLwu9Cgwtw3Gh25CiC51KQz”的可用余额为12121737。

注意:代码中的比特币余额是以聪为单位进行计算和传输的,所以我们的前端在显示时需要将其转换为BTC单位,进位为10^8。 因此,该账户目前的余额为 0.12121737 BTC。

4.新建钱包子账户地址

至此,我们的钱包只有一个子账户地址。 获取更多的子账户地址,我们需要获取路径“m/0/1”,“m/0/2”...“m/0/ 2^31”的子地址,可以通过调用createAddress实现() 通过 API。 会根据路径按照0到2^31的顺序创建。 它的用法很简单,在创建钱包的时候已经调用过了。 让我们看一下它的完整实现。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

输出如下

如何注销比特币账户_比特币账户注册_怎么开比特币账户

再次为“wallet1”钱包创建一个子账户地址,因为只为这个钱包创建了路径“m/0/0”的地址,所以现在创建的地址路径为“m/0/1”,并且地址是“mwtTPpQWGkQabUqgAwSN62SfhNYVV76BHZ”。

接下来我们查看子账户地址和钱包余额。

验证一:使用代码

如何注销比特币账户_比特币账户注册_怎么开比特币账户

输出如下:

如何注销比特币账户_比特币账户注册_怎么开比特币账户

可以看出,0.12121737 BTC的钱包余额仍归第一账户所有怎么开比特币账户,其子账户地址有两个,分别是“m/0/0”和“m/0/1”。

验证二:使用助记词转换网站

然后打开助记词转换网站验证wallet1钱包,其助记词为“same subway develop fun

花式库沙雨仓鼠船底定义,密码为“1234qwer”。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

可以看出结果和代码是一致的。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

5.导出子账户私钥

现在我们导出“wallet1”钱包中“m/0/1”路径的私钥。 需要通过credentials认证对象调用getDerivedXPrivKey()方法获取derivedXPrivKey,derivedXPrivKey通过路径获取指定账户的keyPair,keyPair中包含私钥。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

输出如下

如何注销比特币账户_比特币账户注册_怎么开比特币账户

根据输出可以看出,成功获取了“m/0/1”路径的私钥、公钥和地址数据,这也与助记词转换网站上的数据一致。

6.完整的源代码

1.控制器/wallet.js

编辑controllers文件夹下的wallet.js文件,实现获取钱包子账户地址、获取钱包余额、新建钱包子账户地址、导出子账户私钥等功能。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

2.控制器/web.js

编辑controllers文件夹下的web.js文件,后台实现返回钱包账户详情页面。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

3.路由器/router.js

绑定获取钱包子账户地址、获取钱包余额、新建钱包子账户地址、导出子账户私钥到路由的接口。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

4.静态/js/walletInfo.js

新建walletInfo.js文件,处理获取钱包子账户地址、获取钱包余额、创建新钱包子账户地址、导出子账户私钥等网络请求和界面渲染。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

5.views/walletInfo.html

新建walletInfo.html文件,前端会显示钱包账户详情页面。

如何注销比特币账户_比特币账户注册_怎么开比特币账户

七、项目运行效果

如何注销比特币账户_比特币账户注册_怎么开比特币账户

ChainDesk,一种学习方式

chaindesk.cn,首个基于区块链的多相脑图分割模型学习社区

独创专业体系是高效率的代名词,学你想学,想你所想

在这里,找到你的朋友,一起学习,一起成长