======版本升级====== 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