比特币技术算法(自己动手学习如何搭建比特币私有链)(1)

网管小贾

前文我们说到 bitcoin-core 已经安装完毕,使用默认配置风险极大,需要自己来定制配置。

在开始介绍配置之前,建议小伙伴们务必回顾一下前文,因为里面有大体的对区块链概念的介绍。

前文链接:https://www.sysadm.cc/index.php/xitongyunwei/869-practicing-how-to-build-bitcoin-private-blockchain-by-myself-1

有了概念,我们动起手来才能得心应手,理解飞快。

好,下面我们就来看看怎么配置 bitcoin-core 。

给它一个配置,让它按我们的意思行事

官方提供了一个原始的模板文件,我们可以按照它的样子给它装扮装扮。

https://github.com/bitcoin/bitcoin/blob/master/share/examples/bitcoin.conf

Windows 下配置文件应该在如下位置,第一行中使用了环境变量与第二行是等价的。

%APPDATA%\bitcoin\bitcoin.conf C:\Users\sysadm\AppData\Roaming\bitcoin\bitcoin.conf

诚然,你可以将这个文件整个拿过来用,不过你完全可以按我说的这样做,直接在空白文件中放上想要的参数即可,这样你就不会因为注释满天飞而眼花缭乱了。

需要特别注意的是,不同分类的参数应该放在相应分类名称的子区段中,比如本例有些参数应该放在 [regtest] 区段中。

# 告知 Bitcoin-QT 接受 JSON-RPC 命令 server=1 # 开启回归测试模式 regtest=1 [regtest] # 开启交易记录索引 txindex=1 # 开启挖矿 gen=1

设定好配置文件后,当你双击 bitcoin-qt.exe 时,它会启动并读取这个配置。

比特币技术算法(自己动手学习如何搭建比特币私有链)(2)

界面左下角显示它正在连接其他节点,这说明它已经开始工作了。

同时在 %APPDATA%\bitcoin 目录下自动生成了一个 regtest 的文件夹。

另外使用 netstat 命令也可以看到 18443 和 18444 两个端口已经开启。

(不同网络模式端口不同:default: 8333 , testnet: 18333 , signet: 38333 , regtest: 18444 )

比特币技术算法(自己动手学习如何搭建比特币私有链)(3)

这个时候,如果你还有一台安装了 Bitcoin Core 的电脑,那么你就可以拿来连接这个节点了。

只要输入带有以下参数的命令,或是直接在配置文件中添加相应的参数即可连接。

# 连接IP地址 x.x.x.x 的节点 bitcoin-cli -regtest -connect=x.x.x.x

配置文件则可以这样写。

# 开启回归测试模式 regtest=1 [regtest] # 连接IP地址 x.x.x.x 的节点 connect=x.x.x.x

不过此时即便连接好了,也是正在同步的状态,看样子接下来还要做点什么......

介绍几个命令程序

在 Bitcoin 安装目录下的 daemon 子目录中会有四个用于终端执行的命令行程序文件。

// 命令行客户端(也可做 rpc 客户端) bitcoin-cli.exe // 服务节点守护进程 bitcoind.exe // 比特币交易处理程序 bitcoin-tx.exe // 钱包入口 bitcoin-wallet.exe

实际上第一个 bitcoin-cli 程序也可以用图形程序 bitcoin-qt 来代替,所以说,bitcoin-qt 也可以在命令行中通过在其后面追加参数来使用,效果是一样的。

当你要以后台服务形式运行 bitcoin 时,可以像下面这样,这时你就不必纠结于图形界面了。

bitcoind --daemon

RPC服务的连接方法

这个我一开始也没搞懂,后来才慢慢了解到,这个 RPC 服务其实可以理解为远程服务端。

什么意思呢?

就是说,当有一个远程的 bitcoin-core 在运行,而我不在远程那台机器上,所以我就想用自己手头的电脑去连接那个远程的机器,进而管理远程的 bitcoin-core 。

远程的 bitcoin-core 可以是正在运行的 bitcoin-cli ,也可以是 bitcoin-qt 的图形界面,也可以是以后台守护进程运行的 bitcoind 。

说白了就是当我连接到远端的时候,我在本地电脑上操作的 bitcoin-core 和在远程操作 bitcoin-core 是同一个东西,只是为了管理方便把操作终端放到了本地上。

就好像你用 VNC 远程到服务器上操作,和你直接到服务器上操作效果一样是一个道理,本质上这个 bitcoin-core 并没有多出来,还是那一个节点而已。

比如我现在手上的笔记本电脑,因为是公司的电脑不能乱安装东西,所以只放了一个客户端。

而在远程电脑上我安装并跑着一个 bitcoin-core ,那么我应该如何用笔记本上的客户端去连接并管理远程电脑上的 bitcoin-core 呢?

分两步走,第一步先在远程端的配置文件中加入如下的参数描述。

... [regtest] # 绑定并侦听在所有IP上 rpcbind=0.0.0.0 # 用户名 rpcuser=rpcuser # 密码 rpcpassword=12345678 # 允许连接的IP范围 rpcallowip=0.0.0.0/0 # RPC侦听端口 rpcport=18443

第二步在本地笔记本电脑上修改配置参数,对应远程端的参数。

# 远程端 RPC 服务地址 rpcconnect=192.168.1.1 rpcuser=rpcuser rpcpassword=12345678 rpcport=18443

就这样就可以了,当你启动 bitcoin-qt 后,它通过读取配置其实两端获取的信息是一模一样,等于你可以在本地操作远端的 bitcoin-core 了。

如果你要用 bitcoin-cli ,那么只要把前面说的参数一一加到命令的后面就可以了。

不过需要小心的是,远程端的 RPC 端口可以不用特意指定,但务必要确认访问的网络类型,因为不同的网络类型其默认端口号是不同的,本例是在 regtest 网络中,具体可以查看前面介绍的内容。

接下来

有了配置,我们又知道了命令以及连接后台进程的方法,那么接下来我们就应该进入一些实际的操作了。

在之后的篇章中,我们就来点实际的需要动手打命令的内容,这也有助于我们更进一步理解比特币使用的套路。

网管小贾

,