自己动手学习如何搭建比特币私有链(一)

一提到区块链我们自然而然地就能想到比特币,那么比特币到底怎么玩的呢?

作为一个对比特币一无所知的纯小白,这几天我查阅了很多资料和文章,可以说把我给看吐了!

晕头转向是我的最大收获,还好没彻底倒下,要说这关于区块链和比特币的相关知识还真是浩如烟海,我就像是一片孤叶随波逐流飘荡在这一片大海之中。

在这藏经阁似的文档中,充斥着一堆堆纷繁复杂一套又一套的术语和概念,我用尽了洪荒之力才了解到了个皮毛,再结合操作广为使用的 Bitcoin Core ,算是初步爬进了这所遥不可及、令人生畏的院墙大门。

如果你也和我一样,对比特币是个啥不甚了解,而又好奇心作怪想要一探究竟,那么恭喜你,找到组织了!

下面我就通过我自己的实践操作,来帮助小伙伴们入个门,以期望能一窥比特币的全貌。


下载比特币核心程序 Bitcoin Core

要学习一样东西,总归要和实物打交道,否则概念也就建立不起来,没有概念再想精进更是无从谈起。

所以我们一上来就先拿出实物:Bitcoin Core

这个东东叫作比特币核心程序,每个 Bitcoin Core 可以做服务端,也可以做客户端,我们所有的相关操作都是用它来做的。

当然了,还有很多其他的程序也可以实现同样的功能,但用的最多的就属它了。


下载地址有两个,都是一样的,你心情好就选一,心情不好就选二。

尽量选择最新的 22.0 版本吧,之后的测试各节点最好统一版本。

https://bitcoincore.org/en/download/

https://bitcoin.org/zh_CN/download


Bitcoin Core 是支持多平台的,接下来我会先在 Windows 上演示,毕竟用得人多一些,然后再说一说 Linux 上怎么安装操作。


下载好了吗?

呃,先别着急安装哈,我们先来了解一些概念和原理,要不就算你装上了也不知道怎么用对吧。


相关的概念还是要说一说的

在这儿我只简单地说一说我对比特币需要怎样操作的一些个人理解。


OK,我们先来搞清楚什么是区块链。

区块链肯定是由多个区块构成,这些区块里包含着交易信息等非常丰富的内容。

当这些区块串在一起,它就可以被叫作节点,也就是一个区块就是一个节点。

我的理解是,区块链接由很多节点组成(前面说到的 Bitcoin Core 就可以做节点程序),并且每个节点的地位都是平等的,没有谁是老大谁是小弟,所以说没有谁一定是服务端,谁一定是客户端。

所有的节点都包含了交易信息等内容,不会因为某个节点故障而导致整个网络出现问题,也就是所谓的去中心化。

而节点与节点之间是以区块形式首尾相连,子区块头上记录着父区块的哈希值,这所有的节点最终就组成为了我们看到的区块链。


然后这里还要重点介绍一下,目前就比特币而言,存在多个网络。

可以简单地理解为一个主网络 mainnet + 多个测试网络。

而测试网络又可以简单分为 testnetsignetregtest


testnet 是和主网络基本一样的但仅仅用于测试的网络,目前和主网络一样,它只存在这么一个,由于各种原因当前已经迭代到第三代了,你可以理解为它已经系统重装了三次。

signet 则是用于开发等用途,好像已经不怎么用了。

最后的 regtest 才是本文重点,它的意思是组成局域网式的封闭式的本地区块链,也叫私有链。

我们之后的测试就可以用这种方式,这样我们就可以自说自划,想怎么玩就怎么玩了,也不会有什么损失或坏处,大不了重新来过也没啥大不了的。

虽然你也可以加入到 testnet 中,但我们毕竟是学习,先在自己的局域网中熟悉了,然后再到外面转转才是上策吧。


好了,比特币中还有很多概念术语,比如比特币交易中使用 UTXO 等等,说实话我到现在还晕着呢,所以抱歉,只好抱着能用够用就行的想法,言尽于此。

接下来我们实际操作一下,相信会对大家关于这些概念的了解有所帮助。


安装比特币核心程序 Bitcoin Core

我们先看看 Windows 下怎么安装使用,安装基本上是一路下一步,我就不啰嗦了,看图。


最后一步在完成安装前,务必去掉运行 Bitcoin Core 的那个勾。

原因很简单,当它初次启动时会使用默认配置去连接比特币主网络 mainnet ,这有悖于我们的初衷,所以先将它按下,待我们修整一番再打开它不迟。


安装好的 Bitcoin Core 可以随时运行,当我们需要连接不同的网络时可以在程序的后面加上相应的参数。

比如,我们想要连接 testnet ,也就是比特币测试网络,那么就可以在程序后面加上 -testnet


而我们的最终目的很简单,就是想要连接到我们自己的 regtest (回归测试),也就是封闭的私有链。

那么很简单,我们照猫画虎,在程序后面加上 -regtest 就能实现在私有链网络中运行的目的了。


Linux 下的安装使用

实际上比 Windows 下安装稍微麻烦一点点,但也不是什么大问题。

官方安装参考链接:https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md


先安装一些依赖组件。

Fedora/CentOS/Rocky 参考如下。

sudo dnf install gcc-c++ libtool make autoconf automake python3
sudo dnf install libevent-devel boost-devel
###sudo dnf install libdb4-devel libdb4-cxx-devel
sudo dnf install sqlite-devel
###sudo dnf install miniupnpc-devel libnatpmp-devel
###sudo dnf install zeromq-devel
sudo dnf install systemtap
 


Debian/Ubuntu 参考如下。

sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3
sudo apt-get install libevent-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev
sudo apt install libsqlite3-dev
sudo apt-get install libzmq3-dev
sudo apt install systemtap-sdt-dev
 


需要图形图面吗?那就安装 Qt5 所需要的组件吧。

Fedora/CentOS/Rocky 参考如下。

sudo dnf install qt5-qttools-devel qt5-qtbase-devel
sudo dnf install qt5-qtwayland
 


Debian/Ubuntu 参考如下。

sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
sudo apt install qtwayland5
sudo apt-get install libqrencode-dev
 


下载源码包。

wget https://github.com/bitcoin/bitcoin/archive/refs/tags/v22.0.tar.gz
 


解压缩源码包,并切换进入安装目录。

tar zxvf v22.0.tar.gz
cd bitcoin-22.0
 

bitcoin-core 使用到了 Berkeley DB ,官方建议 4.8 版本,所以按官网来操作,进入解压目录执行以下命令。

./contrib/install_db4.sh `pwd`
 

参数 pwd 会将 Berkeley DB 安装到当前目录下(/sysadm/bitcoin-22.0/db4),所以你也可以将它换成你想要的目标目录。

安装完成之后,会像如下那样提示用户牢记 db4 的安装路径,在实际执行编译命令时要指定数据库组件参数的路径,后面还会再次提到。

db4 build complete.

When compiling bitcoind, run `./configure` in the following way:

  export BDB_PREFIX='/sysadm/bitcoin-22.0/db4'
  ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" ...
 


另外,此命令执行时可能会报错,原因是没有安装 patch 命令。

dnf install patch
 


后面就简单了,先自动生成编译文件。

./autogen.sh
 


然后就像前面说的,再指定 db4 的路径来进行配置。

export BDB_PREFIX='/sysadm/bitcoin-22.0/db4'
./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include"
 


最后编译并安装。

make
make install
 


安装完成后,执行文件均放在了下面的目录中。

/usrlocal/bin/bitcoin-cli
/usrlocal/bin/bitcoin-qt
...
/usrlocal/bin/bitcoind
 


配置文件 bitcoin.conf 的路径,在用户目录下的 .bitcoin 目录中。

/home/user/.bitcoin/bitcoin.conf
~/.bitcoin/bitcoin.conf
 


接下来

OK,前面说了,初步运行程序是缺少定制的配置,如果你直接启动 bitcoin-core ,那么可能它会问你要配置文件,也可能自己就按 mainnet 主网络去连接了。


很显然,我们要动手给它一些配置,它才会按我们想要的方向去执行。

那么怎样定制配置才能实现我们想要的呢?

请看下回分解!


扫码关注@网管小贾,阅读更多

网管小贾的博客 / www.sysadm.cc



提交评论

安全码
刷新

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接