You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

比特币双交易Merkle根计算结果与区块浏览器不一致问题求解

比特币Merkle根计算错误修正方案

核心错误点

  • 哈希运算的输入错误:你直接对十六进制字符串的ASCII编码做哈希,比特币的哈希运算基于原始二进制字节流,而非十六进制文本的ASCII值
  • 最终结果的字节序处理错误:两次SHA256运算得到的小端序结果,需要再做一次逐字节反转,才能得到区块浏览器展示的大端序Merkle根

正确计算步骤(基于你提供的区块80000交易数据)

  1. 处理交易哈希字节序:将区块浏览器给出的大端序交易哈希,逐字节反转得到小端序十六进制值
    tx1反转后小端十六进制:252bf9d75c4f481ebb6278d708257d1f12beb6dd30301d26c623f789b2ba6fc0
    tx2反转后小端十六进制:e2d32adb5f8ca820731dff234a84e78ec30bce4ec69dbd562d0b2b8266bf4e5a
    
  2. 转码拼接:将两段小端十六进制值解码为原始二进制字节,拼接得到64字节的输入流
  3. 两次SHA256运算:对拼接后的二进制字节流做连续两次SHA256运算,得到32字节的小端序哈希结果,十六进制形式为:
    190760b278fe7b8565fda3b968b918d5fd997f993b23674c0af3b6fde300b38f
    
  4. 反转得到最终Merkle根:将上述小端序哈希结果逐字节反转,得到区块浏览器展示的大端序Merkle根:
    8fb300e3fdb6f30a4c67233b997f99fdd518b968b9a3fd65857bfe78b2600719
    

修正方向

  • 代码层面优先实现十六进制字符串到原始二进制字节的解码逻辑,不要直接对十六进制文本做哈希运算
  • 两次SHA256运算完成后,增加逐字节反转的步骤,再和区块浏览器的公开数据做对比

内容的提问来源于stack exchange,提问作者Musnazril Mustaq Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:27:03