首先说一下度《精通比特币》是一直不理解的一个地方:

比特币源码研读(二)之搭环境遇到的那些坑-LMLPHP

比特币源码研读(二)之搭环境遇到的那些坑-LMLPHP

上面两处被圈起来的地方都提到了一个数字2256,特别是第一句话更是让人费解,如果私钥只能在1到2256间产生那岂不是太容易重复了。关于这点,我认为是在翻译或者排版是出现了错误,2256应该是想表达2的256次方的意思。后续翻看其它资料是也证实了我的想法。

现在说说搭环境遇到的问题.

一、源的问题

        我是在docker下进行的源码安装,使用官方的Ubuntu16.04镜像,许多标准系统里的工具镜像中是没有的。对于源我还是比较习惯使用阿里云,这里把设置贴出来:

1、备份sources.list

cp /etc/apt/sources.list /etc/apt/sources.list_backup

2、更改源,vim /etc/apt/sources.list,内容如下:

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

3、记得更新源,不更新数据源是不能用的

apt-get update

 

二、安装add-apt-repository     

编译源码需依赖于libdb4.8-dev,文档要求使用“add-apt-repository ppa:bitcoin/bitcoin”来添加repository,之后在能够安装libdb4.8-dev,系统中没有add-apt-repository,安装方法如下:

apt-get install python-software-properties
apt-get install software-properties-common

三、安装hexdump

这个工具应该是系统自带的,但不知到为什么我用的官方镜像中没有,安装方法如下:

apt-get install bsdmainutils

四、安装pkg-config

apt-get install pkg-config

五、编译

安装完上面这些后使用./configure --without-gui就可以生辰Makefile文件了。--without-gui是使用用户界面,因为我用的是docker 所以就把这个选项加上了。

比特币源码研读(二)之搭环境遇到的那些坑-LMLPHP

make的时候会报错:“rpcrawtransaction.cpp:299:77:   required from here
/usr/include/boost/variant/get.hpp:178:5: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
     BOOST_STATIC_ASSERT_MSG(
     ^
Makefile:838: recipe for target 'rpcrawtransaction.o' failed”

比特币源码研读(二)之搭环境遇到的那些坑-LMLPHP

解决方法如下:

找报错文件rpcrawtransaction.cpp的299行:

const CScriptID& hash = boost::get<const CScriptID&>(address);

修改为:

const CScriptID& hash = boost::get<CScriptID>(address);

即可。

比特币源码研读(二)之搭环境遇到的那些坑-LMLPHP

10-06 13:03