简介:BTC.com 是比特大陆旗下区块浏览器,提供 BTC、BCH 和 ETH 的区块链信息浏览查询服务,其中 BTC 和 BCH 均提供公共 API。本文整理使用 API 获取比特币区块交易列表的实现。
BTC.com 是比特大陆旗下区块浏览器,提供 BTC、BCH 和 ETH 的区块链信息浏览查询服务,其中 BTC 和 BCH 均提供公共 API。使用公共 API 不需要密钥,目前 API 速率限制为 每分钟120次(有需要可联系提高)。
本文整理使用 API 获取比特币区块交易列表的实现。
BTC.com 比特币 BTC API 官方文档:https://btc.com/api-doc
API 统一响应格式:
{
"data": ..., //具体的 API 响应结果
"err_no": 0,
"err_msg": null
}
响应体中的 data、err_no 和 err_msg 为固定字段,含义如下:
data,具体 API 响应的数据
error_no,错误码,0为正常,非0为错误,具体的错误码对照如下:
0 正常
1 找不到该资源
2 参数错误
error_msg,错误信息,供调试使用。如果没有错误,则此字段不出现。
注意:在表示金额时,为避免浮点数产生精度问题,所有的金额单位均为聪。
查询标准语句:
https://chain.api.btc.com/v3/block/{xxx}/tx
xxx可以是:
块高度
块哈希
latest - 最新块
示例:
返回高度为 3 的块的交易列表:
https://chain.api.btc.com/v3/block/3/tx
返回最新块交易列表:
https://chain.api.btc.com/v3/block/latest/tx
API 可以添加参数设置页码和分页大小:
page,可选,默认为1,页码
pagesize,可选,默认为50,可选范围为1-50,分页大小
示例:
返回最新块交易列表并设置 pagesize 为2:
https://chain.api.btc.com/v3/block/latest/tx?pagesize=2
Node.js 查询示例:
const fetch = require('node-fetch');
fetch('https://chain.api.btc.com/v3/block/{xxx}/tx', {
method: 'get',
}).then(response => response.json()
.then(data => console.log(data.data)));
返回的 JSON 示例(以返回高度为 3 的块的交易列表为例):
{
"data": {
"total_count": 1,
"page": 1,
"pagesize": 50,
"list": [
{
"confirmations": 566568,
"block_height": 3,
"block_hash": "",
"block_time": 1231470173,
"created_at": 1520087533,
"fee": 0,
"hash": "999e1c837c76a1b7fbb7e57baf87b309960f5ffefbf2a9b95dd890602272f644",
"inputs_count": 1,
"inputs_value": 0,
"is_coinbase": true,
"is_double_spend": false,
"is_sw_tx": false,
"weight": 536,
"vsize": 134,
"witness_hash": "999e1c837c76a1b7fbb7e57baf87b309960f5ffefbf2a9b95dd890602272f644",
"lock_time": 0,
"outputs_count": 1,
"outputs_value": 5000000000,
"size": 134,
"sigops": 4,
"version": 1,
"inputs": [
{
"prev_addresses": [],
"prev_position": -1,
"prev_tx_hash": "0000000000000000000000000000000000000000000000000000000000000000",
"prev_type": "NONSTANDARD",
"prev_value": 0,
"sequence": 4294967295
}
],
"outputs": [
{
"addresses": [
"1FvzCLoTPGANNjWoUo6jUGuAG3wg1w4YjR"
],
"value": 5000000000,
"type": "P2PKH_PUBKEY",
"spent_by_tx": null,
"spent_by_tx_position": -1
}
]
}
]
},
"err_no": 0,
"err_msg": null
}
返回数据格式讲解:
{
block_height: int 所在块高度
block_time: int 所在块时间
created_at: int 该记录系统处理时间,没有业务含义
fee: int 该交易的手续费
hash: string 交易哈希
inputs: [ 输入
{
"prev_addresses": Array 输入地址
"prev_position": int 前向交易的输出位置
"prev_tx_hash": string 前向交易哈希
"prev_value": int 前向交易输入金额
"script_asm": string Script Asm
"script_hex": string Script Hex
"sequence": int Sequence
},
],
inputs_count: int 输入数量
inputs_value: int 输入金额
is_coinbase: boolean 是否为 coinbase 交易
lock_time: int lock time
outputs: [ 输出
{
addresses: Array 输出地址
value: int 输出金额
}
],
outputs_count: int 输出数量
outputs_value: int 输出金额
size: int 交易体积
version: int 交易版本号
}
比特大陆公共 API 服务思维导图:
我们有一个区块链知识星球,做区块链前沿资料的归纳整理以方便大家检索查询使用,也是国内顶尖区块链技术社区,欢迎感兴趣的朋友加入。如果你对上面内容有疑问,也可以加入知识星球提问我: