blockstream API 的调用

三葉Leaves Author

本节通过调用 blockstream 的 API 获取一些比特币区块信息

blockstream API 的调用说明: https://github.com/Blockstream/esplora/blob/master/API.md

调用 API 回答以下问题:

  1. 当前比特币待验证的交易数目为多少?数据量为多大?大概几个区块才能处理 完这些交易?
  2. 给出高度在 9991-10000 间区块内包含的总交易数目。

问题1

Question

当前比特币待验证的交易数目为多少?数据量为多大?大概几个区块才能处理 完这些交易?

我们需要获取内存池状态来解决这个问题:

1
GET https://blockstream.info/api/mempool

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"count": 5539,
"vsize": 2080401,
"total_fee": 16902647,
"fee_histogram": [
[
100.0,
124456
],
[
9.463235294117647,
50206
],
//......此处部分省略
[
1.0,
222444
]
]
}
  • count 表示当前待确认的交易数。
  • vsize 表示所有交易的虚拟大小总和(vbytes)。
  • 一个区块的最大大小大约是 4,000,000 vbytes(即 4MB)。

计算大约需要几个区块才能处理完交易:

1
2
3
所需区块数 ≈ 总 vsize / 每个区块最大 vsize
≈ 2080401 / 4000000
≈ 0.52 → 大约需要 0.52 个区块处理完

问题2

Question

给出高度在 9991-10000 间区块内包含的总交易数目。

要解决这个问题,需要处理区块高度和区块哈希的映射关系。

  • 通过区块高度查询区块信息(我这里先查 9991):
1
GET https://blockstream.info/api/block-height/9991

示例输出:

1
000000003a86175f154cd24e470793ff71dacc63ea307e18b292451bc4dec53e
  • 通过区块哈希查询区块详细信息:
1
GET https://blockstream.info/api/block/{block_hash}

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"id": "000000003a86175f154cd24e470793ff71dacc63ea307e18b292451bc4dec53e",
"height": 9991,
"version": 1,
"timestamp": 1238983316,
"tx_count": 1,
"size": 216,
"weight": 864,
"merkle_root": "1cc45b725a21c75b1301e707ae0cb219791f814235b7e42b27028049e5345562",
"previousblockhash": "00000000edb29a7e6f15ff720d0e607611300dd0b995ad80ceac1e93c66be9a0",
"mediantime": 1238978867,
"nonce": 3273981203,
"bits": 486604799,
"difficulty": 1.0
}

其中的 tx_count 字段即是我们需要的哈希区块交易数,我们在 9991-10000 间循环上述过程,然后累加每次得到的 tx_count 即可。

  • 标题: blockstream API 的调用
  • 作者: 三葉Leaves
  • 创建于 : 2025-04-07 00:00:00
  • 更新于 : 2025-04-12 09:44:22
  • 链接: https://blog.oksanye.com/ed10ff2c20c5/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
blockstream API 的调用