bitcoin core 使用
介绍
Bitcoin Core 是中本聪发起的最原始的bitcoin软件客户端的开源项目,开源地址:https://github.com/bitcoin
编译版下载地址 https://bitcoincore.org/en/download/
使用
Linux 安装
官网有编译的二进制文件,下载后加压添加PATH即可
1 | wget https://bitcoincore.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1-x86_64-linux-gnu.tar.gz |
Bitcoin core
bitcoin-0.20.1/bin
目录下有
1 | $ ll |
==初次运行==需要同步和验证主链的数据,从创世纪块开始下载然后验证。在本地保存所有数据目前需要300多个G,也可以剪枝运行:
1 | bitcoind -maxconnections=256 -prune=550 # 命令模式 |
maxconnections
是最大连接数,prune >= 550
表示自动剪枝。剪枝模式下最终只占用 4.7G 空间,数据保存在~/.bitcoin/
。
因为需要下载300多个G的数据并验证,所以需要很长的时间,我花了2天。这里吐槽一下,验证需要从创世纪块开始下载所有完整的block,绝对是Bitcoin设计的一个缺陷,因为将UTXO集合的hash打包到block中的话,验证过程只需要下载block hader就行了。
bitcoind 命令 https://mistydew.github.io/blog/2018/05/running-bitcoin.html
bitcoind 提供的RPC接口 https://bitcoincore.org/en/doc/0.20.0/ ,在本地可以使用 bitcoin-cli 调用
UTXO
Bitcoin Core 将 UTXO 保存在 levelDB 中,路径为 ~/.bitcoin/chainstate
,格式如下:
1 | type txid (little-endian) index (varint) |
它的 key
是一个三元组 <type [0], txid [1:33], vout [33:]>
然而 bitcoin core 并没有设计查询UTXO的API,只能使用一些开源的库来读取levelDB中的UTXO,但是需要将key和value格式化一下。
这里有一个遍历 UTXO levelDB 为 csv 的一个工具 https://github.com/in3rsha/bitcoin-utxo-dump 。使用之前需要先用bitcoind同步完主链的UTXO数据,使用如下参数转换bitcoin-utxo-dump -f count,txid,vout,height,coinbase,amount,nsize,script,type,address
转换之后的csv文件为12个G
参考
https://blog.csdn.net/ztemt_sw2/article/details/81101717
RPC DOC https://bitcoincore.org/en/doc/0.20.0/
Bitcoin Core 源码结构
使用 https://blog.csdn.net/weixin_34357436/article/details/92710312