如何从区块链区块中仅提取比特币地址,可采用PHP/JSON实现
PHP提取指定区块对应比特币地址的最优实现方案
核心思路
- 不要解析区块的HTML页面提取地址,稳定性差、效率低,直接调用平台提供的原生JSON格式API获取结构化数据,开发和维护成本最低
- 优先使用PHP的cURL扩展发起请求,错误处理能力、兼容性都优于
file_get_contents - 比特币区块的第一笔交易固定为coinbase挖矿奖励交易,对应输出地址就是该区块的奖励接收地址,也就是你需要提取的目标地址
完整可运行代码
<?php // 目标区块高度,此处为你要查询的1号区块 $blockHeight = 1; // 结构化JSON格式的区块查询接口 $apiUrl = "https://blockchain.info/rawblock/{$blockHeight}"; // 初始化cURL请求 $ch = curl_init($apiUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 执行请求并获取响应 $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); // 请求错误处理 if ($httpCode !== 200 || empty($response)) { die("接口请求失败,HTTP状态码:" . $httpCode); } // 解析JSON数据 $blockData = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) { die("JSON数据解析失败"); } // 提取目标地址:第一笔coinbase交易的第一个输出地址 $targetAddress = $blockData['tx'][0]['out'][0]['addr'] ?? '地址获取失败'; echo "1号区块对应的比特币地址为:" . $targetAddress; ?>
运行上述代码,输出结果就是你提到的12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX。
极简版本(要求PHP环境开启allow_url_fopen配置)
<?php $blockHeight = 1; $response = file_get_contents("https://blockchain.info/rawblock/{$blockHeight}"); if ($response === false) die("请求接口失败"); $blockData = json_decode($response, true); echo $blockData['tx'][0]['out'][0]['addr']; ?>
注意事项
- 公共API存在调用频率限制,生产环境使用请增加本地缓存,避免重复请求同一区块数据
- 可根据业务需求增加异常捕获逻辑,适配自定义的错误处理流程
- 如果后续接口返回结构调整,只需要修改对应字段的取值路径即可
内容的提问来源于stack exchange,提问作者user7786088
相关产品推荐
相关产品推荐

