dram.me

关于Bitcoin Core的JSON-RPC

补遗

  1. Regression Testing网络的默认监听端口是18443。—— 2018-08-26

  2. 请求Bitcoin Core的JSON-RPC时需要携带认证信息,这可以在配置文件中指定,或者bitcoind在每次启动时会动态生成,存放在$HOME/.bitcoin/regtest/.cookie文件中。—— 2018-08-26

Bitcoin Core的API基于JSON-RPC实现,具体的交互细节可以通过strace查看。例如:

strace -s 256 bitcoin-cli -regtest generate 1

其中-regtest是用于指定bitcoin-cli基于本地的Regression Testing网络操作。

strace打印的日志中可以看到,bitcoin-cli发送的是HTTP POST请求,请求体内容为:

{"method": "generate", "params": [1], "id": 1}

具体请求体以及响应体的格式说明可以参考JSON-RPC的标准文档

服务端的代码实现在src/wallet/rpcwallet.cpp中。通过一层层分析调用,可以找到核心的挖矿代码在src/rpc/mining.cpp的generateBlocks函数中。