跳到正文
← 使用教程

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

链小知 · 进阶 · 核验 · 已验证只读操作

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

开始前准备

  • 准备 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;失败读取仍记未取得证据。

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

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

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

检查结果:交易和单独 status 返回同一确认状态、区块高度及哈希;本样本区块高度查询也一致。

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

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

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

检查结果:输出逐项保留,未用总输出冒充指定收款地址的到账额。

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 分开记录。

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

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

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

检查结果:交付可复查的已确认交易读数及其范围,不把这次只读验证推广为钱包或转账功能验收。

怎样确认完成

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

常见错误与边界

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

已验证只读操作 纯文本版 · 提交纠错依据