美文网首页区块链研习社互联网科技区块链
比特大陆公共 API 获取比特币区块交易列表 - 区块链数据开发

比特大陆公共 API 获取比特币区块交易列表 - 区块链数据开发

作者: 极客红石 | 来源:发表于2019-03-20 21:37 被阅读98次

    简介: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<String> 输入地址 
                "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<String> 输出地址
                value: int 输出金额
            }
        ],
        outputs_count: int 输出数量
        outputs_value: int 输出金额
        size: int 交易体积
        version: int 交易版本号
    }
    

    比特大陆公共 API 服务思维导图:

    比特大陆公共 API

    我们有一个区块链知识星球,做区块链前沿资料的归纳整理以方便大家检索查询使用,也是国内顶尖区块链技术社区,欢迎感兴趣的朋友加入。如果你对上面内容有疑问,也可以加入知识星球提问我:

    区块链社群 知识星球

    相关文章

      网友评论

        本文标题:比特大陆公共 API 获取比特币区块交易列表 - 区块链数据开发

        本文链接:https://www.haomeiwen.com/subject/ohrbpqtx.html