【问题标题】:Convert bitcoin transaction hash to raw hexcode将比特币交易哈希转换为原始十六进制代码
【发布时间】:2020-08-23 22:43:06
【问题描述】:

我有一个像这样的比特币交易哈希列表:a4ad67ea73c88b635e003700290239e6beab7dc5c9b31f58cd34084418b7316d

我想将此哈希转换为原始格式(十六进制)。例如,区块链 API 将此交易哈希转换为以下(https://blockchain.info/rawtx/a4ad67ea73c88b635e003700290239e6beab7dc5c9b31f58cd34084418b7316d?format=hex):

01000000000101b6e447e3730b6c22a4312c51e98a013b8e1514ebe592a75767349b659dd1eb4b0000000000ffffffff020000000000000000536a4c50000d2ab10002ce909734abc6014d89e07b7d1d5aa1d324eb6af71e2860a470d612483853e078120e105d3ea910720edbb89fc9025e3b4d8e0701e44510686281d5484fbb48444129251371047bf8ad5b5fb9010000000000160014841996f8ff255c875c4f8875a7bd036bf64209210246304302203c5ef41b9f17525714ab840dbd1716c2baae14e14db84a18716f97b5d1c3aa3c021f6be45f733d3ce5094b470385d997e797ffab976610c015833b395197be586601210380a033803cdcfae4dda162741774cbf38af31ebdd11e9bba414590d7fe36835400000000 P>

获取原始交易字节的一种方法是查询 API,但由于我的数据集很大,这非常耗时。因此,我想知道是否有更简单的方法来进行这种转换。我正在使用 Python。

提前感谢您的帮助。

【问题讨论】:

  • 原始 tx 是 BTC tx 的 ecdsa 签名的十六进制转储。为了从 tx 哈希转换为原始 tx,您需要在链上查找它。您可以在 Python 中执行此操作,但这意味着在本地拥有区块链的完整副本。
  • 嗨伍德斯托克,感谢您的评论。我确实有区块链的完整副本,但不知道如何查找。你能帮忙吗?
  • 更新了@akd下面的答案

标签: cryptography hex blockchain bitcoin pycrypto


【解决方案1】:

由于您拥有区块链的本地副本,您可以使用来自python-bitcoinlibgetrawtransactiondecoderawtransaction

from bitcoinlib.services.bitcoind import BitcoindClient
bdc = BitcoindClient.from_config('/usr/local/src/.bitcoinlib/config/bitcoin.conf') txid = 'a4ad67ea73c88b635e003700290239e6beab7dc5c9b31f58cd34084418b7316d'
rt = bdc.getrawtransaction(txid)
print("Raw: %s" % rt)

> Raw: 01000000000101b6e447e3730b6c22a4312c51e98a013b8e1514ebe592a75767349b659dd1eb4b0000000000ffffffff020000000000000000536a4c50000d2ab10002ce909734abc6014d89e07b7d1d5aa1d324eb6af71e2860a470d612483853e078120e105d3ea910720edbb89fc9025e3b4d8e0701e44510686281d5484fbb48444129251371047bf8ad5b5fb9010000000000160014841996f8ff255c875c4f8875a7bd036bf64209210246304302203c5ef41b9f17525714ab840dbd1716c2baae14e14db84a18716f97b5d1c3aa3c021f6be45f733d3ce5094b470385d997e797ffab976610c015833b395197be586601210380a033803cdcfae4dda162741774cbf38af31ebdd11e9bba414590d7fe36835400000000

请记住,在比特币交易中,哈希显示的是小端而不是大端。

【讨论】:

  • 谢谢@Woodstock,我会试试你的解决方案。但是,我在 bitcoinlib/config 文件夹中找不到 bitcoin.conf。你能建议如何找到它吗?我正在使用 Mac OSX 并且正在运行 Bitcoin Cor。
  • 你是如何安装库的?使用点子?
  • 只需执行pip show moduleName 即可显示其位置,从而显示配置位置。如果使用带有 pip 的自制软件,这将类似于 /usr/local/blah/opt/
  • 嗨@Woodstock,我尝试了您的解决方案,但出现以下错误:bitcoinlib.services.authproxy.JSONRPCException: -5: No such mempool transaction. Use -txindex or provide a block hash to enable blockchain transaction queries. Use gettransaction for wallet transactions.
  • 阅读消息...“使用 -txindex 或提供区块哈希来启用区块链交易查询。”您需要在启用 -txindex=1 的情况下启动 BTC 守护程序才能使用此功能。建立索引需要时间。我提供的答案是正确的。您只是遇到了实施问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 2023-03-19
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多