区块链-Linux下Bitcoin测试节点搭建
在近期的研发中 , 需要用到比特币测试节点 . 本来想找个类似以太坊 infura 这样的三方节点 , 最终只找到 BLOCKCYPHER . 其提供了 testnet 和 mainnet 的环境 , 不过 API 是包装过一层的 , 出于严谨 , 还是决定自行搭建节点.
本篇将说明在 Linux 下搭建 Bitcoin 测试节点. 为了良好的阅读体验 , 请点击阅读原文
搭建环境
选型
比特币节点有很多实现
- bitcoin core : 官方节点 , c/c++ 实现, 正式网络大多数是用这个运行全节点
- btcd : golang的实现版本 , 如果用golang来写一些功能 ,可以参考这个代码
- libbitcoin : c/c++实现 , 特点是它有较好的工具链
- parity-bitcoin : rust实现 , 是以太坊创始人之一Gavin Wood的新公司Parity Technologies下的一个产品 ,它同样也实现了以太坊rust版本
还有很多其他实现 , 如java版本和js版本 . 若用作商业用途 , 那bitcoin core必然是最稳妥的选择.
服务器配置
- 硬盘: 500G .
- 内存: 16G . 一般来说4G就够 , 但如果要查历史记录 ,需要加载完整的交易索引表-tindex , 这就需要8G+的内存
- CPU: 4核
- 带宽: 一般
- 系统: CenterOS 7
节点搭建
1. 进入 bitcoin 选择 Choose your wallet
2. 选择 Bitcoin Core for Linux 下载
bitcoin-0.17.0.1-x86_64-linux-gnu.tar.gz
__3. __上传服务器,解压
这里笔者使用的路径统一为
/opt/btc/...
解压
1 | cd /opt/btc |
4. bitcoin 配置
bitcoin的默认配置文件目录为 ~/.bitcoin/bitcoin.conf
, 若没有指定, 默认则会在该目录下创建个新的.
同步数据比较占硬盘空间,建议自定义存储路径,避免后期空间不足的尴尬.
此处笔者在 /opt/btc/bitcoin-data/
下新建了 bitcoin.conf
文件
bitcoin.conf
:
1 | # 数据存储目录 |
这里只做一些简单的配置 , 更多的配置请参考 Bitcoin Core配置文件解读
配置设置好 , 开始同步
1 | cd /opt/btc/bitcoin-0.17.0/bin |
如无意外 , 同步则开始 . 测试网络节点数据大概几十G , 耐心等待即可 . 笔者大概花了1~2个小时
以上这个 progress 代表同步进度 , 1.0 则为 100% .
相关命令
bitcoind
启动 bitcoin (自己视实际情况修改)
1 | cd /opt/btc/bitcoin-0.17.0/bin |
命令中用
bitcoin.conf
文件包裹了一系列配置,如果不用此文件则需要指明各个参数.比如./bitcoind -datadir=xxx -rpcuser=xxx .....
如若不确定 bitcoin 是否已经启用过 , 可先用命令查询
netstat --ip -lpan | grep bitcoin
1 | # 帮助 |
bitcoin-cli
关闭 bitcoin
1 | ./bitcoin-cli stop |
其他命令
1 | # 查看网络状态: |
更多 bitcoin-cli 命令
1
2
3
4 ./bitcoin-cli -conf=/opt/btc/bitcoin-data/bitcoin.conf listaccounts
error code: -32
error message:
listaccounts is deprecated and will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts.有些命令即将过期 , 会报错 . 此时最好用
bitcoin-cli help
查询下替换的命令
交易测试
创建账户及地址
1 | ./bitcoin-cli -conf=/opt/btc/bitcoin-data/bitcoin.conf getnewaddress "halcyon" |
此处 “halcyon” 为自定义账户名 , 默认创建的地址类型是隔离见证的 , 即在测试网络下是 2
开头的.
获取测试币
在以下测试币水龙头网页中申请测试比特币 , 注意科学上网 .
然后查询余额 .
1 | ./bitcoin-cli -conf=/opt/btc/bitcoin-data/bitcoin.conf getbalance |
然后转账给 myVftRaBb8Vy3upWaL8TueAhDE2QAsQy1h
1 | ./bitcoin-cli -conf=/opt/btc/bitcoin-data/bitcoin.conf sendtoaddress "myVftRaBb8Vy3upWaL8TueAhDE2QAsQy1h" 0.001 |
返回的是一串字符串 txhash
, 可以去比特币浏览器 上查找
附
Linux 常用命令:
1 | # 查看磁盘空间 |
参考资料: