上文中,我们讲解了btcd跟btcwallet在Mac上的安装,本文我们将讲解它们的启动与交互。
1 启动btcd
如上文所述,启动过程如下:
btcd --simnet --rpcuser=rpcuser --rpcpass=rpcpass --rpclisten=0.0.0.0:18556 --listen=0.0.0.0:18555
其中:
- simnet 表示是当前节点链接的网络是测试网络。比特币中有mainnet、testnet、Regression和simnet 。 mainnet 表示是主网,testnet 是一个模拟真实网络的测试网络,功能上线前一般会在这个网络里面玩。Regression 表示是回归验证,而simnet 就表示本地测试网络。btcd中默认使用的是mainnet.
如果想了解 这四个网络具体的差别在哪儿,可以看下btcd的源码。这儿是mainnet的代码链接。其他环境的代码也在这个文件中,可以自己看哈。至于在哪儿指定了默认使用mainnet的环境,我们在之后的启动分析文章中将会贴出链接。 - rpcuser、rpcpass、rpclisten 是指当前节点提供rpc服务,供后面的btcctl(btcd的客户端)使用。如果不配置这个,则默认表示不提供rpc服务。后续btcctl跟btcwallet如果要连接这个节点,则需要提供相同的rpcuser跟rpcpass,否则校验不通过。rpclisten 表示rpc服务的端口。
- --listen 表示当前节点服务所占用的端口。
还有一些其他的配置参数,这儿就不一一讲解了,在讲解btcd启动细节的文章中,我们会提到一些。
启动服务之后,是这个样子的:
2 启动btcwallet
2.1 首先要创建一个钱包
btcwallet --simnet --create
结果如下:
这个图表示已经有了钱包,我们可以先把钱包数据删了,然后重新创建。
Mac下数据在如下这个目录存放,删掉里面的wallet.db即可。
~/Library/Application\ Support/Btcwallet/simnet/
我们再次执行
btcwallet --simnet --create
首先是让我们输入私钥短语。
记号这个短语,后面在钱包操作解锁时会用到。这儿我默认填了"root"。
接下来会问
Do you want to add an additional layer of encryption for public data? (n/no/y/yes) [no]:
就是跟公钥数据加个层,默认选择no
接下来是问你是否使用已有的seed?
Do you have an existing wallet seed you want to use? (n/no/y/yes) [no]:
默认选择no.
接下来生成了seed, 这个是生成私钥时使用的,一定要记录就好哦,要把它放在一个安全的地方,没有了seed , 一切都不是你的了。不过测试系统无所谓。系统比较人性化,会问你是否存好?
Once you have stored the seed in a safe and secure location, enter "OK" to continue:
直接输入OK即可。
等一小会,钱包就创建好了。整个交互过程看下图。
2.2 钱包启动
前面已经完成了btcd的启动,btcwallet的创建,下面新开一个窗口,启动钱包服务。指令如下:
btcwallet --simnet --username=rpcuser --password=rpcpass
- simnet 上面已经讲过,测试网络。
- username跟password 就是btcd 的rpcuser跟rpcpass. 前面已经讲过,如果匹配不上,会提示授权失败。
如果成功,则会显式这么几部分信息:
- 启动钱包自身的rpc服务,供btcctl使用
- 链接BTC的节点
- 跟BTC进行交互,为了统计当前钱包所包含地址的余额。
截图是这样的:
如果是授权失败呢?先看截图:
只做了一个钱包自身RPC服务的启动,然后去链接BTC的节点,但是一直没有得到响应。那我们看下我们已经启动的BTC窗口上输出了什么呢?
授权失败。
3 使用btcctl 交互
上述两部分其实也简单提到了btcctl, 其实你可以认为它就是个cmd 客户端,啥主要逻辑也没干。支持btc指令操作跟btcwallet指令操作。如果指令中带着“--wallet”就说明是调用btcwallet, 不带则是操作btc节点。其核心逻辑就是根据是否带有"--wallet" 去判断是调用btcRpc 服务,还是btcwalletRpc服务。jsonRpc服务哦~后面我们也会有专门的一节讲解btcctl的启动过程,跟解析指令的过程。
本文中先看一个简单操作吧。(保证前面的BTCD、btcwallet窗口都打开,且服务启动哦~,然后新开一个窗口操作btcctl)
操作钱包的指令举例:
操作btcd节点的指令举例:
如果后续有时间,会有一系列的文章去讲解btcctl 每个指令背后对应的逻辑是什么。如果要查看btcctl支持哪些指令,可以使用如下指令:
btcctl --simnet --rpcuser=rpcuser --rpcpass=rpcpass -l
4 总结
本文讲解了btcd、btcwallet的启动,以及使用btcctl跟btcd、btcwallet进行交互的简单操作。希望对你有用。
5 参考文献
btcd simnet(模拟环境下)单节点与双节点的运行
6 其他
本文是《循序渐进比特币》的第二篇-《btcd、btcl、btcwallet的启动与交互》。
如果有疑问,可以直接留言,也可以关注公众号 “链人成长chainerup” 提问留言,或者加入知识星球“链人成长”~