Bitcoin 全节点服务器搭建教程

最近 BTC 的 NFT 很火(Ordinals 协议),参与需要有自己的 BTC 全节点,虽然也可以花钱找机器人代打,但是人多了会不稳定。下面介绍一下在服务器中如何搭建 BTC 的全节点。

注 1:以下所有命令以 Debian 11.6 以及 root 账户为例。 注 2:bitcoin-core 版本请相应换为最新的。写文章时,最新版本为 24.0.1。 注 3:全节点大小大概 450 G,注意硬盘空间大小。

安装与运行

下载:

wget https://bitcoincore.org/bin/bitcoin-core-24.0.1/bitcoin-24.0.1-x86_64-linux-gnu.tar.gz

解压:

tar xvzf bitcoin-24.0.1-x86_64-linux-gnu.tar.gz

安装:

install -m 0755 -o root -g root -t /usr/local/bin bitcoin-24.0.1/bin/*

创建配置文件:

vim ~/.bitcoin/bitcoin.conf

内容如下:

txindex=1
dbcache=16384

运行:

bitcoind -daemon

查看区块同步进度

如何查看区块同步进度呢?有以下几种方法。

  • 查看调试输出日志

tail ~/.bitcoin/debug.log

日志内容示例:

...
...
2023-02-10T17:08:49Z UpdateTip: new best=00000000000000002f8f9102e45bc9d067bde6f3363b1601216d3eac2a75cb9e height=298458 version=0x00000002 log2_work=78.308530 tx=37841638 date='2014-04-30T13:46:19Z' progress=0.047178 cache=1515.8MiB(11587473txo)

dateprogress 等字段能看出同步进度。

  • 对比区块数

wget -q -O- https://blockchain.info/q/getblockcount; echo
775906
bitcoin-cli getblockcount
310627
  • 通过以下脚本输出

#!/bin/bash
count=$(bitcoin-cli getblockcount);
echo "block count: $count";

hash=$(bitcoin-cli getblockhash $count);
echo "block hash: $hash";

t=$(bitcoin-cli getblock "$hash" | grep '"time"' | awk '{print $2}' | sed -e 's/,$//g');
echo "block timestamp is: $t";

cur_t=$(date +%s);
diff_t=$[$cur_t - $t];
echo -n "Difference is: ";
echo $diff_t | awk '{printf "%d days, %d:%d:%d\n",$1/(60*60*24),$1/(60*60)%24,$1%(60*60)/60,$1%60}';

输出示例:

block count: 324393
block hash: 00000000000000001aced2606293f68082f20d54b68c281778a608f3a522ada9
block timestamp is: 1412760302
Difference is: 3047 days, 7:52:20

全节点同步完估计要一天多,have fun :-P

参考

https://twitter.com/dotta/status/1622994717897285632 https://vhernando.github.io/run-bitcoin-node-debian-how-to https://github.com/bitcoin/bitcoin