# 用 Blockstream 只读接口核对 Bitcoin 交易：确认状态、输出与手续费

整理：链小知（AI 辅助）
资料核对日期：2026-10-11
引用地址：https://lianxiaozhi.com/tools/guides/blockstream-check-bitcoin-tx-api
难度：进阶
核验方式：只读核验

取得一笔已确认交易的公开 JSON，交叉核对交易 ID、区块与输入输出差额。本教程已用公开接口完成样本验证，未验证钱包界面、未确认交易或接收平台入账。

## 使用工具
- [Blockstream Explorer](https://lianxiaozhi.com/tools/blockstream-explorer) · [官方入口](https://blockstream.info/)

## 前置条件
- 准备 Bitcoin 主网交易 ID（64 位十六进制），并确认没有误用其他链或测试网。
- 公开读取无需登录、API 密钥或钱包；不要提供助记词。接口返回的金额单位为 satoshi。

## 1. 取得公开交易 JSON

在浏览器打开 https://blockstream.info/api/tx/交易ID，把“交易ID”替换为完整哈希。HTTP 200 后核对 txid；404 先查网络、拼写和该服务是否已看到交易，不能直接认定资金丢失。429 或超时先停止重复请求，稍后重试。

可复查样本：e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039。2026-10-11 的只读检查取得 200；样本是公开链上记录，不属于用户提交的钱包。

核对结果：返回对象 txid 与输入一致，能读到 vin、vout、fee 和 status；失败读取仍记未取得证据。
依据：[Blockstream Esplora 官方只读 API 文档](https://github.com/Blockstream/esplora/blob/master/API.md)
依据：[已实际读取的公开交易 JSON](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039)

## 2. 把已确认状态与具体区块对上

再打开同一地址后加 /status。已确认样本应有 confirmed=true、block_height 和 block_hash；与交易 JSON 的 status 比较。需要核对区块时，可打开 /api/block-height/区块高度，比较返回区块哈希。

样本检查时位于区块 970949，区块哈希为 000000000000000000016be5d6cd00660bcbba5b6a55ef74c55af7465d93d5e9。当前确认数会增加；历史读取时刻的一次确认不是永久状态或交易所入账承诺。

核对结果：交易和单独 status 返回同一确认状态、区块高度及哈希；本样本区块高度查询也一致。
依据：[Blockstream Esplora 官方只读 API 文档](https://github.com/Blockstream/esplora/blob/master/API.md)
依据：[已实际读取的交易确认状态](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039/status)
依据：[已实际读取的区块高度与哈希对应](https://blockstream.info/api/block-height/970949)

## 3. 核对完整输出，保留找零未知项

展开 vout，分别记录每项 value 和存在时的 scriptpubkey_address。不要把所有输出合计写成某一个收款人的收款额；非地址脚本可能没有地址字段。只凭该接口也不能自动区分付款、找零或地址所有人。

样本有 1 个输入、2 个输出；输出总额为 50,191 satoshi。本站核验只确认字段和算术，没有识别其中哪项是找零。

核对结果：输出逐项保留，未用总输出冒充指定收款地址的到账额。
依据：[Blockstream Esplora 官方只读 API 文档](https://github.com/Blockstream/esplora/blob/master/API.md)
依据：[已实际读取的公开交易 JSON](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039)

## 4. 用输入输出差额核对实际手续费

针对普通非 coinbase 交易，汇总 vin 中每项 prevout.value，减去所有 vout.value，并与 fee 比较。若 prevout 缺失或为 coinbase，停止套用该核对方法。金额都按 satoshi 算，换算 BTC 时再除以 100,000,000。

样本输入为 55,831 satoshi，输出为 50,191，差额 5,640，与 fee=5,640 一致。weight=561 对应 vsize=ceil(561÷4)=141，size=222 字节是另一字段。费率可用 fee÷vsize，不要用钱包最大费用或混用 size。

核对结果：普通交易输入减输出与 fee 相同；vsize 与 size 分开记录。
依据：[Blockstream Esplora 官方只读 API 文档](https://github.com/Blockstream/esplora/blob/master/API.md)
依据：[已实际读取的公开交易 JSON](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039)

## 5. 保存读取时刻并说明验证边界

记录读取时间、网络、服务地址、交易 ID、区块信息与算术结果。需要判定交易所或商户入账，还必须查接收方的支持网络、确认要求及账单状态；单一浏览器数据不证明独立节点共识或接收平台已经记账。

本站五次公开 GET 均为 200，交易身份、所属区块、独立 status 接口及手续费算术检查通过。没有测试 RBF、CPFP、未确认交易、区块重组，也没有连接钱包或广播交易。

核对结果：交付可复查的已确认交易读数及其范围，不把这次只读验证推广为钱包或转账功能验收。
依据：[已实际读取的公开交易 JSON](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039)
依据：[已实际读取的交易确认状态](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039/status)
依据：[已实际读取的区块高度与哈希对应](https://blockstream.info/api/block-height/970949)

## 常见错误
- 主网与测试网混用，或把另一条链的哈希粘到 Bitcoin 接口。
- 只取得 200 就认定接收方已入账，未核对字段和接收服务流程。
- 总输出当作单一收款金额；没有证据却自动标找零。
- 对 coinbase 套普通输入差额，或把原始 size 当 vsize。

## 完成检查
- 取得匹配交易 ID 的 JSON 与 status，能复查区块高度和哈希。
- 普通交易手续费与输入输出差额一致，输出用途未知项仍保留。
- 明确记录数据服务、读取时刻和未验证的场景。

## 相关知识
- [比特币 UTXO 与找零：为什么转一笔账会出现多个输出](https://lianxiaozhi.com/learn/utxo-and-change)
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)

## 官方依据
- [Blockstream Esplora 官方只读 API 文档](https://github.com/Blockstream/esplora/blob/master/API.md)
- [已实际读取的公开交易 JSON](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039)
- [已实际读取的交易确认状态](https://blockstream.info/api/tx/e47158e195abcb960741df336d0c39d3b687ddb4edcad9454384dbe519ff2039/status)
- [已实际读取的区块高度与哈希对应](https://blockstream.info/api/block-height/970949)
