github源码链接(https://github.com/bitcoin/bitcoin/)
由于近期学习区块链,需要学习下比特币源码,所以尝试着在windows和linux环境下编译运行,但是windows下的环境配置很繁琐总是在装qt的时候报错,下面贴一下在linux环境下的配置和运行步骤(ubuntu)
(1)安装依赖包
用命令apt-get install安装,如果没有找到该命令则安装apt-get(自行搜索,安装后sudo apt-get update更新包),如果显示权限不够则加用sudo apt-get install命令
经过验证:必需的依赖包有:
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libdb-dev
sudo apt-get install libdb++-dev
sudo apt-get install libdb5.1++-dev
sudo apt-get install libboost-dev
sudo apt-get install libboost-all-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libssl-dev
sudo apt-get install build-essential
sudo apt-get install libminiupnpc-dev
sudo apt-get install autoconf
(2)将github上的源代码克隆下来
git clone https://github.com/bitcoin/bitcoin.git
注意是https
注:如果没有安装git则先安装(命令:sudo apt-get install git-core)
如果git clone太慢,可以直接上该网址将源码download下来,然后创建文件夹bitcoin,解压到其中
(3)编译运行
cd bitcoin
会看到整个源码的各种文件,其中有可执行文件autogen.sh和配置文件configure
./autogen.sh
如果报错则加sudo
./configure
该过程则是在你的机器中配置与代码运行相关的依赖并检查必要的环境
我所了解到的bitcoin代码运行机制是多线程的,父进程创建子进程,父进程运行过程中返回后子进程继续进行运行过程的初始化,包括下面12个步骤:
Step 1: setup 设置
Step 2: parameter interactions 参数互动(主要是一些参数设置)
Step 3: parameter-to-internal-flags 参数传入内部标记(bool型变量)
Step 4: application initialization: dir lock, daemonize, pidfile, debug log 应用初始化:锁定目录,后台运行,调试信息
Step 5: verify wallet database integrity 确认钱包数据库的完整性
Step 6: network initialization 网络初始化
Step 7: load block chain 加载块链
Step 8: load wallet 加载钱包
Step 9: import blocks 导入块数据
Step 10: load peers 导入peers
Step 11: start node 开始节点(挖矿程序在这里)
Step 12: finished 完成
所以bitcoin需要检查配置信息以及网络情况,才开始加载块链
执行完.configure之后需要看看是否有相应的错误信息或者WARNING一般warning是可以允许的如果对于bitcoin最后的运行而言,但是我们还是最好逐一排除警告
一开始会出现error的信息:
所以我们改成下面的命令跳过DB版本检测重新执行一遍:
./configure –with-incompatible-bdb
接下来应该是没有error的,此时我们需要往上滚动查看执行结果看是否有warning警告信息
如果是warning:libevent not found
则
sudo apt-get install libevent-dev
后重新执行
./configure –with-incompatible-bdb
如果是warning: zmq找不到大于4的版本
则
sudo apt-get install libzmq-dev
一般到这里已经可以显示最后的检查结果信息页面了:
如果warning:缺少qt所需的依赖
则
sudo apt-get install libqt4-dev
如果还显示warning: libprotobuf找不到
则
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
到这里虽然有下面两个警告没解决但已经算配置成功了的
其实如果嫌麻烦,当然可以先把必须的跟不必须的一起装了,省的反复执行.confiure命令
此时最后的输出结果为:
(4)执行make命令
sudo make
sudo make install
运行差不多8分钟就已经编译完成
(5)此时执行:
bitcoin-qt
即可调出客户端
会提示加载区块数据,近120G,全部加载完毕则就是我们所说的全节点,对于区块数据这个问题我还是疑惑,不知有没有大神解释一下为什么非得加载这么大的数据,不应该加载的是区块的头部么,为什么这么大!