美文网首页互联网科技区块链研习社
比特大陆公共 API 获取比特币区块信息 - 区块链数据开发实战

比特大陆公共 API 获取比特币区块信息 - 区块链数据开发实战

作者: 极客红石 | 来源:发表于2019-03-13 16:14 被阅读29次

    简介: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}

    xxx可以是:

    块高度
    块哈希
    latest - 最新块

    同时,此接口支持批量查询,英文逗号隔开即可。

    示例:

    返回高度为 3 的块:

    https://chain.api.btc.com/v3/block/3

    返回最新块:

    https://chain.api.btc.com/v3/block/latest

    返回最新块以及高度为 3 的块:

    https://chain.api.btc.com/v3/block/latest,3

    Node.js 查询示例:

    const fetch = require('node-fetch');
    
    fetch('https://chain.api.btc.com/v3/block/{xxx}', {
        method: 'get',
    }).then(response => response.json()
        .then(data => console.log(data.data)));
    

    返回的 JSON 示例(返回最新块以及高度为 3 的块):

    {
      "data": [
        {
          "height": 566454,
          "version": 541065216,
          "mrkl_root": "be73096c2a6849dd39e8401cb8990cf2abf5b703a88cc0a3d78ab6b8f4121757",
          "timestamp": 1552210644,
          "bits": 388914000,
          "nonce": 2937589404,
          "hash": "000000000000000000008eeedb07189ae12e80e3743cffcce202db8e9f6e5ba2",
          "prev_block_hash": "00000000000000000011846a758c753c57de389aabf3d35af9e2b2d20564e6cd",
          "next_block_hash": "0000000000000000000000000000000000000000000000000000000000000000",
          "size": 517043,
          "pool_difficulty": 504139453367937,
          "difficulty": 6071846049920.752,
          "tx_count": 1105,
          "reward_block": 1250000000,
          "reward_fees": 7966089,
          "created_at": 1552210664,
          "confirmations": 1,
          "is_orphan": false,
          "curr_max_timestamp": 1552210644,
          "is_sw_block": true,
          "stripped_size": 376890,
          "weight": 1647713,
          "extras": {
            "pool_name": "AntPool",
            "pool_link": "https://www.antpool.com/"
          }
        },
        {
          "height": 3,
          "version": 1,
          "mrkl_root": "999e1c837c76a1b7fbb7e57baf87b309960f5ffefbf2a9b95dd890602272f644",
          "timestamp": 1231470173,
          "bits": 486604799,
          "nonce": 1844305925,
          "hash": "0000000082b5015589a3fdf2d4baff403e6f0be035a5d9742c1cae6295464449",
          "prev_block_hash": "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd",
          "next_block_hash": "000000004ebadb55ee9096c9a2f8880e09da59c0d68b1c228da88e48844a1485",
          "size": 215,
          "pool_difficulty": 1,
          "difficulty": 1,
          "tx_count": 1,
          "reward_block": 5000000000,
          "reward_fees": 0,
          "created_at": 1520087533,
          "confirmations": 566452,
          "is_orphan": false,
          "curr_max_timestamp": 1231470173,
          "is_sw_block": false,
          "stripped_size": 215,
          "weight": 860,
          "extras": {
            "pool_name": "unknown",
            "pool_link": ""
          }
        }
      ],
      "err_no": 0,
      "err_msg": null
    }
    

    返回数据格式讲解:

    {
        height: int 块高度
        version: int 块版本
        mrkl_root: string Merkle Root
        curr_max_timestamp: int 块最大时间戳
        timestamp: int 块时间戳
        bits: int bits
        nonce: int nonce
        hash: string 块哈希
        prev_block_hash: string 前向块哈希,如不存在,则为 null
        next_block_hash: string 后向块哈希,如不存在,则为 null
        size: int 块体积
        pool_difficulty: int 矿池难度
        difficulty: int 块难度
        tx_count: int 块奖励
        reward_block: int 块奖励
        reward_fees: int 块手续费
        created_at: int 该记录系统处理时间,无业务含义
        confirmations: int 确认数
        extras: {
            relayed_by: string 块播报方
        }
    }
    

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

    比特大陆公共 API

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

    区块链社群 知识星球

    相关文章

      网友评论

        本文标题:比特大陆公共 API 获取比特币区块信息 - 区块链数据开发实战

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