编译bitcoin

github
dependencies

下载源码,当前的 release 版本是 0.16.1

bin/bitcoin-qt (GUI) or
bin/bitcoind (headless)

编译比特币代码

参考

export USE_DOCKER=1
bin/make-base-vm –docker –arch amd64 –suite trusty
./bin/gbuild -j2 –commit bitcoin=HEAD ../bitcoin-addrindex_0.15/contrib/gitian-descriptors/gitian-linux.yml

配置文件路径:
By default, on Windows, this file is located at %APPDATA%\Bitcoin\bitcoin.conf.
By default, on Linux, this file is located at ~/.bitcoin/bitcoin.conf, and the permissions of the file should be set with chmod 600 ~/.bitcoin/bitcoin.conf.

在 ubuntu 16.04 下面编译

更新系统

sudo apt-get update
sudo apt-get upgrade

下载代码,切换到 release 版本

git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin && git checkout v0.16.1

安装依赖

sudo apt-get install -y  autoconf libtool pkg-config libboost-all-dev libssl-dev libevent-dev

安装 berkeleyDB
berkeleyDB 是一款嵌入式数据库, 类似 Sqlite. berkeleyDB 做钱包数据库, 保存私钥等. 而且bitcoin 需要特定版本的 berkeleyDB-4.8.30.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
if has following error, install libdb5.3
error while loading shared libraries: libdb_cxx-5.3.so: cannot open shared object file: No such file or directory

sudo apt-get install libdb5.3++-dev

使用 GUI 需要安装 Qt5

sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev libminiupnpc-dev
这个没装也可以
//sudo apt-get install qt5*-dev
sudo apt-get install libqrencode-dev

再执行 make -j3 会生成 bitcoin-qt 运行 ./src/qt/bitcoin-qt 会启动图形界面.

内网穿越库

sudo apt-get install libminiupnpc-dev

安装 zmq

sudo bash -c 'echo "deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/ ./" >> /etc/apt/sources.list'
wget https://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-stable/Debian_9.0/Release.key -O- | sudo apt-key add -
sudo apt-get install libzmq3-dev

查看boost版本,bitcoin 使用boost1.64 问题少

dpkg -s libboost-dev | grep 'Version'
or
cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION"

编译bitcoin

./autogen.sh
./configure --enable-static
make
make install
// reduce size by remove debug information
strip src/bitcoind src/bitcoin-cli

使用了which bitcoind和which bitcoin-cli两个命令来验证比特币客户端是否安装成功

如果没配置rpc用户和密码,那就用下面的命令结束吧
pkill -9 -f bitcoind

cd ~/.bitcoin/
gedit bitcoin.conf

写上如下内容

txindex=1
rpcuser=rpcuser
rpcpassword=123456

txindex:默认情况下,比特币核心只创建与使用者钱包相关的交易索引,如果需要维护全部交易的索引,需要设置该选项。注意:如果一开始没有开启这个选项,则需要重启bitcoind并加上-reindex选项重建索引

运行 bitcoin

后台运行
bitcoind -daemon -datadir=<datadir>

打印信息 printtoconsole
bitcoind -printtoconsole -datadir=/mnt/blocks/primecoinMainData

bitcoind -printtoconsole -datadir=/mnt/blocks -conf=/home/tyler/.bitcoin/bitcoin.conf -rpcuser=test -rpcpassword=test


后台运行 daemon
bitcoind -daemon -datadir=/mnt/blocks
# datadir把同步的数据下载到/mnt/blocks /mnt是新挂载的数据盘

需要一段时间等待数据全部同步完.
执行rpc命令
详细的 rpc 列表

bitcoin-cli -datadir=/mnt/blocks getblockhash 0
# 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

bitcoin-cli -rpcuser=test -rpcpassword=test -datadir=/mnt/blocks getblockcount
# 311952

说明节点已经在同步数据了.

停止bitcoind

bitcoin-cli stop

启动测试节点
bitcoind -testnet --daemon

关闭测试节点
bitcoin-cli -testnet --daemon

查看状态

bitcoin-cli -getinfo

遇到的问题
error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set
So what you should actually be doing is
src/bitcoin-cli -rpcuser={…} -rpcpass={…} getblockchaininfo

查看默认的钱包地址

bitcoin-cli -rpcuser=test -rpcpassword=test getaccountaddress ""

四、测试币申请
测试币可以免费申请,用于在测试网中探索比特币的各项功能。可以在搜索引擎搜索 bitcoin testnet faucet, 以下几个地址比较容易:

http://bitcoinfaucet.uo1.net/

Bitcoin Testnet Faucet

bitcoind,bitcoin-cli,bitcoin-tx

bitcoind
The server version of bitcoin.
bitcoin-cli
This is a program that lets you issue commands to bitcoind. Example:

# ./bitcoin-cli getblockcount
326215

bitcoin-tx
This is a program that can create, parse, or modify transactions. Example:

# ./bitcoin-tx -json 0100000003ee7f90455d3f8d2d82da68d950b66f247331b5f13e7a5a56de1bc3b52f3bc43a810200008c493046022100a643127f3abb6d8a4d082bd66b9585a4e91a1e10bfce3ac749212b562f4a80560221008d68511acac655ce3df1dbda6a97cd74516ce2595a40e2e89a5168ba05be4c060141047723d175cc78e974ea686a67d44fbed02c81c9c4c9639a4f452e43354ec1baf53777ea0b4483d7a4022cd0ab20bd18b5ec07be9bde19d20e289c0211c066f7bfffffffffd909f8893803ceca676abb5669cd3800fa653c858e6ffbf940f56bc6201c1b1c6c0400008c493046022100c63b0d16f0f2377e14e08c8602af52be5e4411e20f2365c9fc0b439f4dabfa06022100ee1db39a12a5a855ea9ab9a96b817b86b78d55928afed7effa59454c7c19a0350141047723d175cc78e974ea686a67d44fbed02c81c9c4c9639a4f452e43354ec1baf53777ea0b4483d7a4022cd0ab20bd18b5ec07be9bde19d20e289c0211c066f7bfffffffff3b91021ed50547e5a2fe1fcb14112a244e37bb61fee2bc227fa4ac045c5341b0fa0300008b483045022100f0c4c72a693c1fd3413080a478d4fb983ad5ac5d23bdea1a3965b78fdb80192f02201838f4c63e103afdd89d257792f1bfcdfb992566bdf0757d2f2b9ca6e371aedc0141047723d175cc78e974ea686a67d44fbed02c81c9c4c9639a4f452e43354ec1baf53777ea0b4483d7a4022cd0ab20bd18b5ec07be9bde19d20e289c0211c066f7bfffffffff01c62e0000000000001976a91473242dd2a877025c8a0db539a7df5d9af6cdeb1988ac00000000
{
"txid": "8731eaae4520609d4ada30e23ee0f275b9dd62b72456a26dc0f137ae9fddd9b3",
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "3ac43b2fb5c31bde565a7a3ef1b53173246fb650d968da822d8d3f5d45907fee",
"vout": 641,
"scriptSig": {
"asm": "3046022100a643127f3abb6d8a4d082bd66b9585a4e91a1e10bfce3ac749212b562f4a80560221008d68511acac655ce3df1dbda6a97cd74516ce2595a40e2e89a5168ba05be4c0601 047723d175cc78e974ea686a67d44fbed02c81c9c4c9639a4f452e43354ec1baf53777ea0b4483d7a4022cd0ab20bd18b5ec07be9bde19d20e289c0211c066f7bf",
...