探索比特币源码2-配置Bitcoin Core节点

回顾上文探索比特币源码1-运行比特币核心

我们已经运行上了Bitcoin Core,开始同步区块链数据

这个过程会持续一两天,我也不能干等着,便开始进行一些小练习,比如区块信息的查询,交易信息的查询等等。

一个小插曲

一切本来很顺利,但是似乎是由于我运行如下命令后与Bitcoind产生了冲突

$ curl https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK

这个命令查询指定账户所有的可用未消费输出utxo

在这之后,我再运行命令行帮助程序bitcoin-cli访问比特币核心客户端的RPC接口时,如bitcoin-cli getblockchaininfo等命令,无一例外的报了如下的错误,甚至是bitcoin-cli stop

$ bitcoin-cli getblockchaininfo
error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set.  See -rpcpassword and -stdinrpcpass.  Configuration file: (/home/username/.bitcoin/bitcoin.conf)
$ bitcoin-cli stop
error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set.  See -rpcpassword and -stdinrpcpass.  Configuration file: (/home/username/.bitcoin/bitcoin.conf)

这个错误看似是由于我们之前没有配置bitcoin.conf导致的,我尝试配置了bitcoin.conf,但并没有效果

经过一番的探索,我发现了报错的真正原因是Bitcoin Core客户端意外的关闭了,很可能是刚刚执行的命令,即HTTP命令行客户端curl进行通信的过程中与比特币节点存在某些冲突(这仅仅只是我个人的猜测,还望了解的大佬告知)

但无论如何,问题被找到了,解决方案简单到爆炸,重新运行客户端即可…

因此,如果你也遇到了这个问题,首先检查客户端是否正在运行是个明智的举动。

配置bitcoind并重建索引

配置bitcoind

虽然刚刚的小插曲被证实与Bitcoin Core的配置无关,但为了避免后面还会遇到什么问题,这里还是打算将上一文忽略的配置问题解决。

这里手动创建并编辑配置文件bitcoin.conf,该文件通常要放在~/.bitcoin/bitcoin.conf路径下

无论进行何种配置,配置文件bitcoin.conf必须包含rpcuser和rpcpassword两个条目。

如下是一个完整索引节点的配置示例:

txindex=1
rpcuser=bitcoinrpc
rpcpassward=CHANGE_THIS

默认情况下,Bitcoin Core构建一个仅包含与用户钱包有关的交易的数据库。如果想要使用诸如getrawtransaction之类的命令访问任何交易的信息(后面会慢慢介绍),则需要配置Bitcoin Core以构建完整的交易索引,这可以通过在配置文件中设置txindex = 1来实现。

这里是一个当设备资源有限时的配置示例:

maxconnections=15
prune=5000
minrelaytxfee=0.0001
maxmempool=200
maxreceivebuffer=2500
maxsendbuffer=500
rpcuser=bitcoinrpc
rpcpassword=CHANGE_THIS

更多的配置选项及相关解释可以通过bitcoind --help命令查看

显然,为了拥有完整的功能我们需要配置一个完整索引节点。

重建索引

编辑好配置文件后,重新运行bitcoind客户端,并将输出打印到屏幕上

$ bitcoind -printtoconsole......2018-07-20 08:01:43 LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=1005, size=90286441, heights=182434...184177, time=2012-06-01...2012-06-12)2018-07-20 08:01:43 Checking all blk files are present...2018-07-20 08:01:43 LoadBlockIndexDB: transaction index disabled2018-07-20 08:01:43 : You need to rebuild the database using -reindex to change -txindex.Please restart with -reindex or -reindex-chainstate to recover.: You need to rebuild the database using -reindex to change -txindex.Please restart with -reindex or -reindex-chainstate to recover.2018-07-20 08:01:43 Aborted block database rebuild. Exiting.2018-07-20 08:01:43 Shutdown: In progress...2018-07-20 08:01:43 scheduler thread interrupt2018-07-20 08:01:43 Shutdown: done

可以看到,按照提示,我们需要使用-reindex选项重新启动bitcoind,并等待它重建索引

$ bitcoind -printtoconsole -reindex......2018-07-20 08:06:10 Reindexing block file blk00006.dat...2018-07-20 08:06:15 Loaded 7472 blocks from external file in 4869ms2018-07-20 08:06:15 Reindexing block file blk00007.dat...2018-07-20 08:06:19 Loaded 6097 blocks from external file in 4374ms2018-07-20 08:06:19 Reindexing block file blk00008.dat...2018-07-20 08:06:26 Loaded 6127 blocks from external file in 6473ms2018-07-20 08:06:26 Reindexing block file blk00009.dat.........

现在我们等待重建索引的完成就可以了。

注:当我们的bitcoind客户端出现过问题并尝试解决之后,一个好的习惯是首先使用bitcoind -printtoconsole将运行过程打印到终端上,这样可以直观的了解错误是否解决,确认无误后再重新运行,转为后台守护进程的模式。

探索比特币源码2-配置Bitcoin Core节点相关推荐

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

    探索比特币源码1-运行 Bitcoin Core Node 上一文我们已经编译好了Bitcoin Core的可执行文件 本文,我们来尝试运行一个Bitcoin Core 注:本文是在学习Masteri ...

  2. 探索比特币源码0-bitcoin的编译

    探索比特币源码0-bitcoin的编译 前言 区块链领域作为一个新兴的热点,迭代的实在是太快了,刚刚入门,必须要抓紧追赶. 在阅读了一些优秀的文档之后,已经对比特币及其背后的实现技术--区块链有了一定 ...

  3. 探索比特币源码7-哈希

    在之前的两篇文章中,我们已经大致了解了私钥和公钥相关的代码: 探索比特币源码5-私钥 探索比特币源码6-公钥 接下来,我们打算阅读生成比特币地址的相关代码. 比特币地址的生成过程中,涉及了哈希函数的计 ...

  4. 探索比特币源码4-JSON-RPC接口的其他调用方法

    探索比特币源码4-JSON-RPC接口的其他调用方法 上一文探索比特币源码3-熟悉RPC接口中练习了使用bitcoin-cli客户端调用JSON-RPC接口的方法. 本文探索JSON-RPC接口的其他 ...

  5. 探索比特币源码3-熟悉RPC接口

    探索比特币源码3-熟悉RPC接口 比特币核心客户端实现了JSON-RPC接口,这个接口可以通过命令行帮助程序bitcoin-cli访问,也可以通过编程的形式在程序中访问. 本文主要探索3点: * 什么 ...

  6. 探索比特币源码5-私钥

    经过一段时间的积累,终于来到了比特币源码阅读的环节.还是按照之前的节奏,我们就比对着精通比特币一书的进度,进行源码的阅读. 对于此文,只需你对比特币系统中私钥-公钥-地址的产生及关系有最基本的了解 因 ...

  7. 探索比特币源码6-公钥

    继续源码的阅读,本文将对比特币源码中的公钥相关部分进行梳理. 在阅读代码前,先明确一个概念:公钥是如何定义和产生的? 公钥如何产生 我们已经知道,比特币的私钥就是一个256位二进制数字. 通过椭圆曲线 ...

  8. 探索比特币源码8-哈希2

    上一文,我们介绍了Bitcoin Core中哈希相关的代码实现中的一部分 主要是存储哈希函数映射结果--哈希值的数据结构uint256.uint160及他们的基类base_blob 这篇文章我们继续来 ...

  9. 从源码开始运行Bitcoin Core

    安装Ubuntu 环境:虚拟机 网络连接:桥接 系统版本:16.04 源:ali 安装编译环境(依赖库) sudo apt-get update sudo apt-get install build- ...

最新文章

  1. springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题
  2. 这个需求很简单,明天上线没问题吧?要不要怼回去?
  3. python中文编辑器推荐-推荐10款最好的Python开发编辑器
  4. 线程的常用方法——currentThread方法||在main方法中直接调用run()方法,没有开启新的线程,以在run方法中的当前线程就是main线程||启动子线程,子线程会调用run方法
  5. JZOJ 3766. 【BJOI2014】大融合
  6. matlab 工具 安装包下载地址,安装 | MATLAB2018a (64位) 安装教程及安装包下载链接...
  7. 3 当某个应用的CPU使用达到100%,该怎么办?
  8. 研发项目管理中需注意的人性弱点(Z)
  9. 幻像类型提高了编译时的安全性
  10. layui弹出层:皮肤扩展(文档解读)
  11. ArcGIS没有或未启动Spatial Analyst许可
  12. java 泛型重载_Java泛型编程与多态、重载的同与不同
  13. 【clickhouse】Clickhouse 支持毫秒 纳秒数据
  14. C++之顺序性容器vector、list、deque的push_back、pop_back、push_front、pop_front、插入(insert)和删除(erase)通用操作及其变形
  15. JS分页控件,可用于无刷新分页
  16. Android Fragment 使用详解
  17. linux服务器无法登录,linux服务器账号密码正确无法登录-Go语言中文社区
  18. SQLSERVER查看阻塞和死锁的进程以及执行的语句
  19. linux android开发环境搭建
  20. Android 4.0.4模拟器安装完全教程(图文)

热门文章

  1. Git missing Change-Id in commit message footer解决方法
  2. 【Redis】三、Redis安装及简单示例
  3. 成都Uber优步司机奖励政策(3月17日)
  4. 错误 undefined reference to __cxa_guard_acquire/release
  5. 页面加载完时再动态添加脚步
  6. linux网络编程——boa移植
  7. plt.savefig 不保存边框_Matlab科研绘图 amp; 保存
  8. android studio 调试c/c++代码小记
  9. java 日期处理工具类_Java日期处理工具类DateUtils详解
  10. python生成文件夹并向文件夹写文件_python - 文件练习生成100个MAC地址写入文件