你给的官方文档是中文翻译的,不全,看看英文的:https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
0. 下载
不解释了
1. 运行
此章节是中文wiki没有的。英文:https://en.bitcoin.it/wiki/Running_Bitcoin
运行后,Bitcoin 会作为服务启动,就类似 httpd 或者 mysqld 一样,此时 bitcoind 会在 127.0.0.1
监听 8332 端口的请求。
2. JSON-RPC
中文链接有误。
可以在下面链接查看 JSON-RPC:http://json-rpc.org/wiki/specification
顺便在看看 JSON: http://json.org
RPC(Remote Procedure Call)意思是远程过程调用,我们可以在本地直接调用远端的函数和功能,Procedure。调用的格式通常有:
-
XML-RPC: 所有的调用以 XML 格式进行,比较常见的就是 wordpress 的博客客户端,一般都是通过 XML-RPC 发布博客。
-
JSON-RPC:相比 XML 来说,JSON 更加轻量级,于是 bitcoind 使用 JSON-RPC 来和服务器端通讯。
3. 通讯
我们使用客户端操作 bitcoin 时(即和 bitcoin 服务器通讯),不需要引入 bitcoin 提供的任何类库,只需要对应语言的 JSON-RPC 库即可。或者再底层一些,只要有 HTTP 库即可。
JSON-RPC 的官网只提供了 Python 包, 由于我没有使用过 Java 的 JSON-RPC 库,在此我就不推荐了。你可以自行去 github 或者 sourceforge 搜索。
可以看看这个(英文,不过很好理解) http://json-rpc.org/wiki/specification,非常非常的简单,以至于你都不想使用 JSON-RPC 库了,或许一个 cURL 就已经绰绰有余力了。
我大致翻译一下规范:
请求 Request
发送给服务器的请求包括 3 个参数
- method - 你想要调用的方法
- params - 方法参数
- id - 不解释
回应 Response
回应也是 3 个值:
- result
- error
- id
示例
比如服务器端有一个方法,两数相加:add(num1, num2)
我们这样远程调用它
我们向服务器发送一个 json:
{
"method": "add",
"params": [
1,
2
],
"id": 1
}
服务器会返回:
{
"result": 3,
"error": null,
"id": 1
}