======版本升级======
wget https://github.com/Bitcoin-ABC/bitcoin-abc/releases/download/v0.18.4/bitcoin-abc-0.18.4-x86_64-linux-gnu.tar.gz
tar -zxvf bitcoin-abc-0.18.4-x86_64-linux-gnu.tar.gz
sudo nohup /app/bch0.18.4/bitcoin-abc-0.18.4/bin/bitcoind -conf=/app/.bitcoin/bitcoinabcmainnet.conf -datadir=/app/.bitcoinabcmainnet
备份私钥:
sudo /app/bitcoin-abc/src/bitcoin-cli -conf="/app/.bitcoin/bitcashmainnet.conf" dumpwallet ./wallet.txt
备份钱包文件:
sudo mv /app/.bitcoinabcmainnet/wallet.dat /app/.bitcoinabcmainnet/wallet.dat.bak
sudo mv /app/.bitcashmainnet/wallet.dat /app/.bitcashmainnet/wallet.dat.bak
查看如下日志,发现报错是因为DB版本引起的,尝试升级DB版本
sudo vi /app/.bitcashmainnet/db.log
wallet.dat: BDB0090 DB_VERIFY_BAD: Database verification failed
BDB1009 /app/.bitcashmainnet/wallet.dat: unsupported btree version: 10
BDB0526 Page 0: unsupported DB version 10; extraneous errors may result
BDB0547 Page 0: unsupported database version 10; extraneous errors may result
BDB0547 Page 2: unsupported database version 10; extraneous errors may result
以下是节点备用机的升级方案:
sudo mv /usr/lib64/libdb-5.3.so /usr/lib64/libdb-5.3.so.bak
sudo mv /usr/lib64/libdb-5.so /usr/lib64/libdb-5.so.bak
sudo cp /usr/local/lib/libdb-6.2.a /usr/lib64/libdb-6.2.a
sudo cp /usr/local/lib/libdb.a /usr/lib64/libdb.a
sudo cp /usr/local/lib/libdb_cxx-6.2.a /usr/lib64/libdb_cxx-6.2.a
sudo cp /usr/local/lib/libdb_cxx.a /usr/lib64/libdb_cxx.a
结论:
以上操作都无效,开始用新版本客户端重新同步数据
sudo nohup sudo /app/bch_0.18.4/bitcoin-abc-0.18.4/bin/bitcoind -conf="/app/.bitcoin/bitcashmainnet.conf" -datadir="/app/.bitcashabcmainnet" &
同步完毕后,将私钥导入到新钱包
sudo /app/bch_0.18.4/bitcoin-abc-0.18.4/bin/bitcoin-cli -conf=/app/.bitcoin/bitcashmainnet.conf importwallet /app/script_coin/bch/wallet.txt
=====分割线=====
$mkdir /app
$git clone https://github.com/Bitcoin-ABC/bitcoin-abc.git
或直接下载最新源代码:
$wget https://github.com/Bitcoin-ABC/bitcoin-abc/archive/master.zip
$cd /app/bitcoin-abc
download the berkeley-db
http://download.oracle.com/otn/berkeley-db/db-6.2.32.NC.tar.gz
upzip the package
$tar -xf db-6.2.32.NC.tar.gz
$cd db-6.2.32.NC/build_unix/
$sudo ../dist/configure -enable-cxx -disable-shared --prefix=/usr/local
$sudo make install
build the bitcoin-abc
$cd /app/bitcoin-abc
$sudo sh autogen.sh
$sudo ./configure --with-gui=no --disable-tests --prefix=/usr/local/bitcoin-bch
$sudo make
这里如果报错,就需要升级gcc版本。
报错信息:
./amount.h:123:73: error: can't initialize friend function 'operator*'
friend constexpr Amount operator*(const double a, const Amount b) = delete;
GCC升级
# yum install centos-release-scl -y
# yum install devtoolset-4-toolchain -y
# scl enable devtoolset-4 bash
# gcc --version
如果编译还是出上面的错,就执行
scl enable devtoolset-4 bash
如下报错信息,需要升级Boost版本。https://github.com/Bitcoin-ABC/bitcoin-abc/pull/124
test/cashaddrenc_tests.cpp:196:29: error: no match for ‘operator!=’ (operand types are ‘CTxDestination {aka boost::variant}’ and ‘const CTxDestination {aka const boost::variant}’)
http://www.boost.org 下载最新版本boost
tar -xf boost.tar.gz
cd boost_1_67
sudo ./bootstrap.sh --prefix=/usr/local/include/boost
sudo ./b2 --build-type=complete --layout=tagged install
编译boost报错:
找到如下文件:
/app/boost_1_67_0/tools/build/src/tools/python.jam
修改如下:
includes ?= $(prefix)/include/python$(version) ; 错误
includes ?= $(prefix)/include/python$(version)m ; 正确
打开:
./bootstrap.sh
修改:PYTHON=python 为 PYTHON=python3
编译完毕后配置路径
$ sudo mv /usr/include/boost/ /usr/include/boost.backup
$ sudo mv /usr/lib64/libboost_* /usr/lib64/boost.backup/
$ sudo mv /usr/local/include/boost/include/boost/ /usr/include/
$ sudo mv /usr/local/include/boost/lib/libboost_* /usr/lib64/
$sudo make install
会报一堆告警信息,但是不用理会,最终运行echo $?,看一眼有没有报错即可,如果显示0,就是没报错
安装完毕后,会在/usr/local/bitcoin-bch目录下,分别是比特币现金的运行文件和测试文件,这里,我们运行测试文件test_bitcoin,来测试安装是否完整(吐槽:bitcoin-abc真是操蛋,编译出来的运行文件居然和比特币命名和路径完全一样,把我机器上比特币的运行文件覆盖掉了!重编了一遍比特币!!配置工程的时候一定指定--prefix参数!!!)
$cd /usr/local/bitcoin-bch
$./test_bitcoin
比特现金BCH测试网络测试币获取:
https://testnet.manu.backend.hamburg/bitcoin-cash-faucet
查看BCH测试网络交易:
https://www.blocktrail.com/tBCC/tx/79c77fbbf364c055a86681d0336b3dd07cb96d3954da8936086f8aba89bd53fc