探索比特币源码1-运行比特币核心

1LSGO软件技术团队

贡献人:马燕鹏

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。

If you like the content here, the greatest helpyou can give meis forwarding, so tell your friends and encourage them to learn together.

上一文《探索比特币源码0 -- bitcoin的编译》中我们已经编译好了Bitcoin Core的可执行文件。

本文,我们来尝试运行一个Bitcoin Core

注:本文是在学习 Mastering Bitcoin ( https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch03.asciidoc ) 过程中的记录,由于代码的快速迭代,在笔者写下本文的时刻(2018/7/18),书中给出的包括配置、示例、命令调用等都发生了一定程度的改变。作为一个初学者,我尽可能的探索了改变后的用法及其原因,如有疏漏和错误望及时指出,期待和各位的交流。

前言

比特币的点对点网络由节点组成,为了更好的学习比特币的原理以及如何开发比特币软件,我们需要运行一个自己的比特币节点。

但是,运行节点需要一个具有足够资源来处理所有比特币交易的系统。根据您是否选择索引所有交易并保留块的完整副本,您可能还需要大量的磁盘空间和 RAM。Bitcoin Core 默认情况下保留区块链的完整副本。在 16 年底时,全索引节点需要 2GB 的 RAM 和 125GB 的磁盘空间,并且在不断增长。

直到完整的块链数据集被下载完成之前,Bitcoin Core 将无法处理交易或更新帐户余额。

为了运行我们自己的 Bitcoin Core 节点,首先要确保有足够的磁盘空间来完成初始同步。

预留充足的磁盘空间

如果你的电脑磁盘剩余空间充足,那就直接进行下一环节吧。

这里我记录了我是如何找到最占用空间的文件并给电脑瘦身的,以供参考。

首先使用命令查看磁盘占用情况

这是我的磁盘占用情况,可以发现,其中挂载在根目录下的 SD 磁盘居然占用了 392G 的空间

使用 命令查看当前目录下文件的大小

使用 命令查看所有隐藏文件的大小

频繁利用这两个命令,最终追溯到目录 占用了312G空间

原来是回收站占用了大量空间-_-|

仔细一看,都是团队小伙伴跑深度学习时删除的数据集和模型文件。

使用下面命令将回收站清空

配置Bitcoin Core节点

现在,在主目录 下,存在 目录

这应该是我们的 Bitcoin Core 节点的路径,钱包、区块链等都会存放在这里

注:按照 Mastering Bitcoin ( https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch03.asciidoc ) 的说法,我们首次尝试运行 bitcoind 时会报错,提醒你用一个安全密码给 JSON-RPC 接口创建一个配置文件 。该密码控制对 Bitcoin Core 提供的应用程序编程接口(API)的访问。但在笔者写下本文的时刻(2018/7/18),发现这个设定已经不存在了,这样做应该是为了让 bitcoind 的使用更加简洁。

我们可以使用 来查看帮助

看来仍然存在对于 的使用,可以使用 指明配置文件的路径。

如果你想自定义一些配置,可以详细阅读 Mastering Bitcoin 第三章 ( https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch03.asciidoc )

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

运行Bitcoin Core节点

使用 命令在前台运行,并打印信息到终端

或者使用 命令,使用守护进程在后台运行

如果想要终止Bitcoin Core客户端的运行,可以使用如下命令:

其中 是命令行帮助程序,我们可以通过它访问比特币核心客户端实现的 JSON-RPC 接口。

注:如果想要停止客户端,千万不要用 这种方法。我试了一次,客户端就无法再次正常运行了,所以一定记住要用上面的方法。

当我们第一次运行客户端后,实际上 Bitcoin Core 先要做的是努力同步从创世快以来的所有区块链数据,根据网速,这可能需要几天甚至几周。

所以我们赶紧再次把客户端运行上,开始同步数据。

这个过程中,我们可以随时使用 查看区块链信息,从而查看同步进度,类似如下:

其中 "blocks": 31452 是块高度,也就对应了同步的进度。

注:Mastering Bitcoin 第三章 ( https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch03.asciidoc ) 中给出的 命令在我写作时,已经改为了上面给出的 命令。

已经确认程序正在正确同步了,慢慢运行吧,我们下一次来使用 进行一些交互实验

从当前来看,我觉得对编程爱好者最友好的就是区块链领域了,因为这个领域中所有的代码都是开源的,代码决定一切!哪怕项目方牛皮吹得天花乱坠,也不可能忽悠到我们,只有代码最可靠!为了更好的了解区块链这个领域,目前 LSGO软件技术团队 的一个小组,正在看BTC的源码,这是他们提交的学习成果!如果你对区块链领域感兴趣,可以加入进来,大家一起学习!

经过8年多的发展,LSGO软件技术团队在地理信息系统、数据统计分析、计算机视觉领域积累了丰富的研发经验,也建立了人才培养的完备体系。

欢迎对算法设计与实现感兴趣的同学加入,与我们共同成长进步。

本微信公众平台长期系统化提供有关机器学习、软件研发、教育及学习方法、数学建模的知识,并将以上知识转化为实践。拒绝知识碎片化、耐心打磨技能、解决实际问题是我们的宗旨和追求。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180801B00JCC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券