学习如何自己搭建一条比特币私链(一)
站长小佳的博客
说到区块链,我们自然会想到比特币,那么比特币是如何运作的呢?
作为一个对比特币一无所知的纯新手,这几天查阅了很多资料和文章,可以说是吐了!
头晕是我最大的收获,还好我没有完全倒下。 要说区块链和比特币的知识真是浩瀚无边,我就像一片孤零零的叶子在这片海中漂流。
这份如同经文一般的文件中,充斥着一堆堆复杂的术语和概念。 我费尽心思去理解肤浅的,并结合广泛使用的Bitcoin Core
,也算是初登这高不可攀、令人望而生畏的院墙大门。
如果你和我一样,对比特币不是很了解,只是出于好奇想要一探究竟,那么恭喜你,你找到了一个组织!
接下来,我将通过自己的实际操作,帮助朋友们入门,希望能一窥比特币的全貌。
下载比特币核心程序 比特币核心
要想学东西,就得和真实的东西打交道,否则,就无法建立概念,没有概念谈不上提高。
所以我们一上来就拿出真货:Bitcoin Core
.
这个东西叫比特币核心程序,每个比特币核心
它可以作为服务端,也可以作为客户端,我们所有的相关操作都是通过它来完成的。
当然,还有很多其他程序可以实现同样的功能,但它是使用最多的一个。
下载地址有两个,都是一样的。 心情好就选一个,心情不好就选第二个。
尽量选择最新的22.0
版本,最好在后续测试中统一各个节点的版本。
比特币核心
它支持多个平台。 接下来,我将首先使用Windows
演示一下,毕竟用的人多,再说说Linux
如何安装和操作。
准备好下载了吗?
呃,先别着急安装,先了解一些概念和原理,不然安装了也不知道怎么用是吧?
相关概念还是要讲一下
在这里我只是简单谈谈我个人对比特币需要如何运作的理解。
OK,我们先搞清楚什么是区块链。
区块链必须由多个区块组成,其中包含交易信息等非常丰富的内容。
当这些块串在一起时,就可以称为一个节点,即一个块就是一个节点。
我的理解是区块链是由很多节点组成的(前面提到的Bitcoin Core
可以做一个节点程序),而且每个节点的地位都是平等的,没有人是老大和小弟,所以一定没有人是服务端,也没有人一定是客户端。
所有节点都包含交易信息等内容,某个节点的故障不会导致整个网络出现问题,这就是所谓的去中心化。
节点以块的形式首尾相连,父块的哈希值记录在子块头上。 所有这些节点最终形成了我们看到的区块链。
然后我想在这里强调一下,目前就比特币而言,有多个网络。
可以简单理解为主网mainnet
+ 多个测试网络。
测试网可以简单的分为testnet
,图章
并注册
.
测试网
它与主网基本相同,但仅用于测试。 目前和主网一样。 只有一个这样的网络。 由于种种原因,已经迭代到第三代了。 重装了3次就可以理解了。
图章
用于开发等用途,好像用的不多。
最终注册测试
是本文的重点。 意思是形成一个局域网式的封闭本地区块链,也叫私有链。
我们以后的测试就可以用这个方法,自说自话,想怎么玩就怎么玩,没有任何损失和伤害,重头再来也没什么大不了的。
虽然你也可以加入测试网
但是如何添加btc节点,我们终究是在学习。 先在我们的局域网内熟悉一下,再到外面去,才是上策。
嗯,比特币里面还有很多概念名词,比如比特币交易中UTXO的使用
等等如何添加btc节点,说实话,我还是头晕,所以对不起,但我只能用够了说出来。
接下来我们来实践一下,相信对大家理解这些概念会有帮助。
安装比特币核心程序Bitcoin Core
我们先看看Windows
接下来就是如何安装和使用了,安装基本上就是一路走来的下一步,我就不啰嗦了,看图。
在最后一步,在完成安装之前,一定要删除并运行 Bitcoin Core
滴答声。
原因很简单,第一次启动时,会使用默认配置连接比特币主网mainnet
,这有违我们的初衷,还是先按一下吧,等我们修好了再开也不迟。
安装比特币核心
它可以随时运行,当我们需要连接不同的网络时,我们可以在程序末尾添加相应的参数。
比如我们要连接测试网
,就是比特币测试网,那么可以在程序后面加上-testnet
.
而我们的最终目标也很简单,就是想连接到我们自己的regtest
(回归测试),即封闭的私有链。
所以很简单,我们照猫画虎,在程序后面加上-regtest
可以实现在私有链网络中运行的目的。
Linux
下面的安装和使用
实际上比Windows好
安装有点复杂,但没什么大不了的。
官方安装参考链接:
先安装一些依赖。
Fedora/CentOS/洛奇
请参阅下文。
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/洛奇
请参阅下文。
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
比特币核心
使用伯克利数据库
,官方推荐4.8
版本,所以按照官网操作,进入解压目录,执行以下命令。
./contrib/install_db4.sh `pwd`
参数密码
伯克利数据库
安装到当前目录(/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" ...
另外执行这个命令可能会报错,因为没有安装补丁
命令。
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
主网去连接。
显然,我们必须手动给它一些配置,这样它才能按照我们想要的方向执行。
那么如何自定义配置来实现我们想要的呢?
请看下一篇分解!
原文链接: