btc源码编译和环境搭建

时间:2022-09-18 15:18:34

btc源码编译和环境搭建

区块链是最近几年火才起来的概念,最早大家知道的都只有比特币(bitcoin),在很长一段时间,比特币几乎就是区块链的代名词。大多数人关注的当然都是比特币的价格,而作为技术出身的吃瓜群众,听到的时候第一反应是:

我Cow,这么牛,怎么做到的!

想要看看比特币实现方式的冲动是怎么强烈,幸好比特币是开源的,那么基于github上的比特币源码,我们就能快速搭建起自己的比特币服务和钱包。

你说搭好了可以干什么?
- 可以挖矿?个人基本也挖不出来了
- 可以做个山寨币?还不如以太坊上ERC-20发,币只要5分钟。

好吧,以上都没什么价值。比特币作为区块链项目的始祖,虽然以现在的眼光看,有这样那样的不足,但它展现的反而是区块链技术中最核心的部分,是学习区块链技术最好的工具。下面就开始吧。

操作系统

我用的 Ubuntu 18.04
https://www.ubuntu.com/download/desktop

安装依赖

用命令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 libevent-dev
sudo apt-get install libdb-dev
sudo apt-get install libdb++-dev
sudo apt-get install libdb5.3++-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
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libqt4-dev
sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

我这儿列出的库比网上找到的资料上列举的都要多一些,可能也是因为我是全新的Ubuntu安装,并且也想在x-window下图形化界面运行。预先多装一点也比中途再来安装要好一些,现在也不缺少这点硬盘空间。

编译运行

1、下载源码
第一步当然是先将github上的源码下载下来,如果没有git,就先安装git

sudo apt-get install git-core

推荐git clone下载,虽然是慢了一点,如果通过网站打包下载,很容易下载不全

git clone https://github.com/bitcoin/bitcoin.git

2 、配置编译

cd bitcoin

进入目录,会看到整个源码的各种文件
btc源码编译和环境搭建

其中有可执行文件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 完成

检查配置信息以及网络情况是否符合加载块链的条件,执行完.configure之后需要看看是否有相应的错误信息或者WARNING,一般warning是可以允许的如果对于bitcoin最后的运行而言,但是我们还是最好逐一排除警告。

这里最容易碰到的就是db兼容的问题。我遇到的错误信息:
btc源码编译和环境搭建
从网上查到的资料来看,直接加上 编译参数就可以了

./configure –with-incompatible-bdb

btc源码编译和环境搭建

配置完成,没有错误,下面就可以执行编译了。

make

执行成功没有报错,就继续执行安装

sudo make install

注意:这儿需要有管理权限,所以加上sudo

安装完成!

运行系统

执行命令:

bitcoin-qt

注意:使用qt是要在x-window下运行。

btc源码编译和环境搭建

看下这里的提示,加载区块数据,需要203G,点击ok就可以执行区块的同步了。
btc源码编译和环境搭建

好吧,按我现在的网速需要9年才能同步完所有数据…
203G,听起来数据量很大,但是想一想,从2009年到现在10年的所有比特币数据节点、网络、交易数据,就会感觉这数据好小。

经验: 尽量都在root下执行所有安装配置操作。

参考资料:

BitCoin比特币 wiki
https://en.bitcoin.it/wiki/Main_Page
Bitcoin比特币 源代码文档
https://dev.visucore.com/bitcoin/doxygen/files.html
Bitcoin比特币 中国
http://www.btcchina.org