上一文我们已经编译好了Bitcoin Core的可执行文件
本文,我们来尝试运行一个Bitcoin Core
注:本文是在学习Mastering Bitcoin过程中的记录,由于代码的快速迭代,在笔者写下本文的时刻(2018/7/18),书中给出的包括配置、示例、命令调用等都发送了一定程度的改变。作为一个初学者,我尽可能的探索了改变后的用法及其原因,如有疏漏和错误望及时指出,期待和各位的交流。
比特币的点对点网络由节点组成,为了更好的学习比特币的原理以及如何开发比特币软件,我们需要运行一个自己的比特币节点。
但是,运行节点需要一个具有足够资源来处理所有比特币交易的系统。根据您是否选择索引所有交易并保留块的完整副本,您可能还需要大量的磁盘空间和RAM。Bitcoin Core默认情况下保留区块链的完整副本。在16年底时,全索引节点需要2GB的RAM和125GB的磁盘空间,并且在不断增长。
直到完整的块链数据集被下载完成之前,Bitcoin Core将无法处理交易或更新帐户余额。
为了运行我们自己的Bitcoin Core节点,首先要确保有足够的磁盘空间来完成初始同步。
如果你的电脑磁盘剩余空间充足,那就直接进行下一环节吧。
这里我记录了我是如何找到最占用空间的文件并给电脑瘦身的,以供参考。
首先使用df -hl
命令查看磁盘占用情况
$ df -hl
文件系统 容量 已用 可用 已用% 挂载点
udev 1.9G 0 1.9G 0% /dev
tmpfs 390M 6.4M 384M 2% /run
/dev/sda5 459G 392G 44G 90% /
tmpfs 2.0G 22M 1.9G 2% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 296M 296M 0 100% /snap/pycharm-professional/66
/dev/loop3 300M 300M 0 100% /snap/pycharm-professional/68
/dev/loop4 79M 79M 0 100% /snap/vscode/37
/dev/loop7 304M 304M 0 100% /snap/pycharm-professional/64
/dev/loop8 87M 87M 0 100% /snap/core/4650
/dev/loop1 79M 79M 0 100% /snap/vscode/38
/dev/loop2 87M 87M 0 100% /snap/core/4830
/dev/loop6 87M 87M 0 100% /snap/core/4917
tmpfs 390M 80K 390M 1% /run/user/1000
/dev/loop9 80M 80M 0 100% /snap/vscode/42
/dev/sda6 452G 163G 266G 38% /media/lsgo-as/Data
这是我的磁盘占用情况,可以发现,其中挂载在根目录/
下的SD磁盘居然占用了392G的空间
/dev/sda5 459G 392G 44G 90% /
使用sudo du -sh *
命令查看当前目录下文件的大小
使用du -sh .[!.]*
命令查看所有隐藏文件的大小
频繁利用这两个命令,最终追溯到目录~/.local/share/Trash/files
占用了312G空间
原来是回收站占用了大量空间-_-|
仔细一看,都是团队小伙伴跑深度学习时删除的数据集和模型文件。
使用下面命令将回收站清空
$ rm -rf ~/.local/share/Trash/files/*
现在,在主目录~
下,存在.bitcoin
目录
这应该是我们的Bitcoin Core节点的路径,钱包、区块链等都会存放在这里
注:按照Mastering Bitcoin的说法,我们首次尝试运行bitcoind时会报错,提醒你用一个安全密码给JSON-RPC接口创建一个配置文件.bitcoin/bitcoin.conf
。该密码控制对Bitcoin Core提供的应用程序编程接口(API)的访问。但在笔者写下本文的时刻(2018/7/18),发现这个设定已经不存在了,这样做应该是为了让bitcoind的使用更加简洁。
我们可以使用bitcoind --help
来查看帮助
$ bitcoind --help
Bitcoin Core Daemon version v0.16.1
Usage:
bitcoind [options] Start Bitcoin Core Daemon
Options:
-?
Print this help message and exit
-version
Print version and exit
...
...
-conf=<file>
Specify configuration file (default: bitcoin.conf)
...
...
看来仍然存在对于.conf的使用,可以使用-conf=<file>
指明配置文件的路径。
如果你想自定义一些配置,可以详细阅读Mastering Bitcoin 第三章
目前,先忽略这个配置文件,你可以直接命令运行比特币客户端了。
使用bitcoind -printtoconsole
命令在前台运行,并打印信息到终端
$ bitcoind -printtoconsole
或者使用bitcoind -daemon
命令,使用守护进程在后台运行
$ bitcoind
如果想要终止Bitcoin Core客户端的运行,可以使用如下命令:
$ bitcoin-cli stop
其中bitcoin-cli
是命令行帮助程序,我们可以通过它访问比特币核心客户端实现的JSON-RPC接口。
注:如果想要停止客户端,千万不要用Ctrl + C
这种方法。我试了一次,客户端就无法再次正常运行了,所以一定记住要用上面的方法。
当我们第一次运行客户端后,实际上Bitcoin Core先要做的是努力同步从创世快以来的所有区块链数据,根据网速,这可能需要几天甚至几周。
所以我们赶紧再次把客户端运行上,开始同步数据。
这个过程中,我们可以随时使用bitcoin-cli getblockchaininfo
查看区块链信息,从而查看同步进度,类似如下:
$ bitcoin-cli getblockchaininfo
{
"chain": "main",
"blocks": 31452,
"headers": 532626,
"bestblockhash": "0000000091e5e4985852a04cfd3032f8be7debfda8a8d1bb8e11beffd0e1fdf4",
"difficulty": 1,
"mediantime": 1261716777,
...
...
}
其中”blocks”: 31452是块高度,也就对应了同步的进度。
注:Mastering Bitcoin 第三章中给出的bitcoin-cli getinfo
命令在我写作时,已经改为了上面给出的bitcoin-cli getblockchaininfo
命令。
已经确认程序正在正确同步了,慢慢运行把,我们下一次来使用bitcoin-cli
进行一些交互实验