一提到区块链我们自然而然地就能想到比特币,那么比特币到底怎么玩的呢?
作为一个对比特币一无所知的纯小白,这几天我查阅了很多资料和文章,可以说把我给看吐了!
晕头转向是我的最大收获,还好没彻底倒下,要说这关于区块链和比特币的相关知识还真是浩如烟海,我就像是一片孤叶随波逐流飘荡在这一片大海之中。
在这藏经阁似的文档中,充斥着一堆堆纷繁复杂一套又一套的术语和概念,我用尽了洪荒之力才了解到了个皮毛,再结合操作广为使用的 Bitcoin Core
,算是初步爬进了这所遥不可及、令人生畏的院墙大门。
如果你也和我一样,对比特币是个啥不甚了解,而又好奇心作怪想要一探究竟,那么恭喜你,找到组织了!
下面我就通过我自己的实践操作,来帮助小伙伴们入个门,以期望能一窥比特币的全貌。
下载比特币核心程序 Bitcoin Core
要学习一样东西,总归要和实物打交道,否则概念也就建立不起来,没有概念再想精进更是无从谈起。
所以我们一上来就先拿出实物:Bitcoin Core
。
这个东东叫作比特币核心程序,每个 Bitcoin Core
可以做服务端,也可以做客户端,我们所有的相关操作都是用它来做的。
当然了,还有很多其他的程序也可以实现同样的功能,但用的最多的就属它了。
下载地址有两个,都是一样的,你心情好就选一,心情不好就选二。
尽量选择最新的
22.0
版本吧,之后的测试各节点最好统一版本。
Bitcoin Core
是支持多平台的,接下来我会先在 Windows
上演示,毕竟用得人多一些,然后再说一说 Linux
上怎么安装操作。
下载好了吗?
呃,先别着急安装哈,我们先来了解一些概念和原理,要不就算你装上了也不知道怎么用对吧。
相关的概念还是要说一说的
在这儿我只简单地说一说我对比特币需要怎样操作的一些个人理解。
OK,我们先来搞清楚什么是区块链。
区块链肯定是由多个区块构成,这些区块里包含着交易信息等非常丰富的内容。
当这些区块串在一起,它就可以被叫作节点,也就是一个区块就是一个节点。
我的理解是,区块链接由很多节点组成(前面说到的 Bitcoin Core
就可以做节点程序),并且每个节点的地位都是平等的,没有谁是老大谁是小弟,所以说没有谁一定是服务端,谁一定是客户端。
所有的节点都包含了交易信息等内容,不会因为某个节点故障而导致整个网络出现问题,也就是所谓的去中心化。
而节点与节点之间是以区块形式首尾相连,子区块头上记录着父区块的哈希值,这所有的节点最终就组成为了我们看到的区块链。
然后这里还要重点介绍一下,目前就比特币而言,存在多个网络。
可以简单地理解为一个主网络 mainnet
+ 多个测试网络。
而测试网络又可以简单分为 testnet
,signet
和 regtest
。
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