比特大陆公共 API 获取比特币交易详情 - 区块链数据开发实战

简介: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/tx/{txhash}

此接口支持批量查询,英文逗号隔开即可。在获取多个交易时,如果对应的交易不存在,则为 null。

由于部分交易体积很大,为提高传输效率,比特大陆公共 API 所有涉及到交易的接口,均支持使用 verbose 参数实现交易信息的分级输出。

verbose,可选,默认为2,选择输出内容等级,含义分别如下:

等级 1,包含交易信息;
等级 2,包含等级 1、交易的输入、输出地址与金额;
等级 3,包含等级 2、交易的输入、输入 script 等信息。

示例:

获取单个交易的全部信息:

https://chain.api.btc.com/v3/tx/0eab89a271380b09987bcee5258fca91f28df4dadcedf892658b9bc261050d96?verbose=3

获取多个交易:

https://chain.api.btc.com/v3/tx/000000000000000005cb6f6e2f09e84a353ab91756a38aa50fbaf25059f76666,0ba9252660a6a5f291a8983092074f9a1da5f6d1c790518d6550f054e60bbab1

Node.js 查询示例:

const fetch = require('node-fetch');

fetch('https://chain.api.btc.com/v3/tx/{txhash}', {
    method: 'get',
}).then(response => response.json()
    .then(data => console.log(data.data)));

返回的 JSON 示例:

{
  "err_no": 0,
  "data": {
    "confirmations": 178274,
    "block_height": 388300,
    "block_hash": "000000000000000005cb6f6e2f09e84a353ab91756a38aa50fbaf25059f76666",
    "block_time": 1450070917,
    "created_at": 1520115644,
    "fee": 16087009,
    "hash": "0eab89a271380b09987bcee5258fca91f28df4dadcedf892658b9bc261050d96",
    "inputs_count": 1,
    "inputs_value": 0,
    "is_coinbase": true,
    "is_double_spend": false,
    "is_sw_tx": false,
    "weight": 516,
    "vsize": 129,
    "witness_hash": "0eab89a271380b09987bcee5258fca91f28df4dadcedf892658b9bc261050d96",
    "lock_time": 0,
    "outputs_count": 1,
    "outputs_value": 2516087009,
    "size": 129,
    "sigops": 4,
    "version": 1,
    "inputs": [
      {
        "prev_addresses": [],
        "prev_position": -1,
        "prev_tx_hash": "0000000000000000000000000000000000000000000000000000000000000000",
        "prev_type": "NONSTANDARD",
        "prev_value": 0,
        "sequence": 4294967295
      }
    ],
    "outputs": [
      {
        "addresses": [
          "1Ebb8NfVmKMoGuMJCAEbVMv2dX8GnzgxSa"
        ],
        "value": 2516087009,
        "type": "P2PKH",
        "spent_by_tx": "4eb69896a4c6ca74ac3968e8e14f3a1207db17a17340d5d61c496a5f818e546f",
        "spent_by_tx_position": 4
      }
    ]
  }
}

返回数据格式讲解:

{
    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

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

区块链社群 知识星球
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 区块链开始引起大家越来越多的关注,但是你可能被各种专业名词搞得晕头转向。如同词汇匮乏的你在看一篇英文文章,处处卡壳...
    币世界阅读 3,019评论 1 2
  • 这个文档是网上比较流行的教程,你可以按照这个教程来,如果你幸运的话,也许一次性成功。那就到此为止,可以不用看了……...
    舒云之阅读 1,358评论 0 0
  • 你我时常都会遇到"糗"事___社会关系网(微信和QQ)1.解决你所未知事,然后空白,无反馈; 2.未寒暄,直奔...
    蜕变新阅读 111评论 0 0
  • 我与父亲曾一起生活过7年,八岁的时候就被母亲接到北方生活了 母亲认为女孩子不上学是不对的,...
    三公番阅读 178评论 0 1
  • 当天边的火烧云跌入水中让涪江燃得通透当天女的金缕衣落下云头为田野编织锦绣 你说花期已至托一只蜜蜂送来信笺邀我赴一场...
    晚来秋在简书阅读 433评论 13 13