最近 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)
从 date 和 progress 等字段能看出同步进度。
对比区块数
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
