探索比特币源码1-运行 Bitcoin Core Node

探索比特币源码1-运行 Bitcoin Core Node

上一文我们已经编译好了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 Core节点

现在,在主目录~下,存在.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 第三章

目前,先忽略这个配置文件,你可以直接命令运行比特币客户端了。

运行Bitcoin Core节点

使用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进行一些交互实验

猜你喜欢

转载自blog.csdn.net/u011583927/article/details/81122895