如何将Tx\u raw转换为Tx\u ID/HASH

2024-09-30 14:33:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个事务详细信息,我想提取事务哈希

我在查找此事务的事务哈希/ID时遇到问题。你们谁能具体说明我在哪方面出了问题。因为我真的看不见

<Tx version: 1
 <prevTxIn : 86395c6a5481bd70866f1537caa06bc0533e483cf8358a11081ab4fdd82de601 
 prev_index: 0, 
 script_sig: b'483045022100adaa0921ef15771abc9aeb959fce194b0283852bc336614ffc6deeebc19e21ee0220364135571d7899f3f9709a3e07f419dc62a7cb53eca65a85a3a1129a91d7d01c01210246607e02ba8f5dca52f54d09fce649ba80c711558ccaa0457487462faaf2301f',
 sequence: 4294967295 
> 
<TxOut: 2150152600 
 script_pub_key: b'76a914320a4a30144df4b885080e843e95bb4b3332a68f88ac'> 
,<TxOut: 849837400 
 script_pub_key: b'76a9143810d46cafb8e59d957f9fc47b9a9d22dc14807a88ac'> 
, 
locktime: 0>


def get_hash(raw):
return codecs.encode(double_sha256(raw), "hex_codec")

从那笔交易中我得到了这个原始交易:

b'010000000101e62dd8fdb41a08118a35f83c483e53c06ba0ca37156f8670bd81546a5c3986000000006b483045022100adaa0921ef15771abc9aeb959fce194b0283852bc336614ffc6deeebc19e21ee0220364135571d7899f3f9709a3e07f419dc62a7cb53eca65a85a3a1129a91d7d01c01210246607e02ba8f5dca52f54d09fce649ba80c711558ccaa0457487462faaf2301fffffffff0298b92880000000001976a914320a4a30144df4b885080e843e95bb4b3332a68f88ac587da732000000001976a9143810d46cafb8e59d957f9fc47b9a9d22dc14807a88ac00000000'>

当我真的得到了\u散列(原始): 我得到:

ID:b'f799bc123ad2e961ed4347a83c933dc931b5d92cadf7c17c3a254b2378ebd036',

这是错误的,因为实际的交易在这里: https://btc.com/202bf3d8baf05d63ab0e00f3874071a54846e02ea74e87efc6bccb89a491bd71#in_0

ID为202bf3d8baf05d63ab0e00f3874071a54846e02ea74e87efc6bccb89a491bd71

请如果有人能帮我具体说明我的过程中哪一部分是我搞砸了,我真的会喜欢它! 提前谢谢


Tags: keyidindexrawversionscript详细信息交易
1条回答
网友
1楼 · 发布于 2024-09-30 14:33:36

基本上,不能通过b'将十六进制字符串转换为二进制字符串。也就是说,您告诉double\u散列函数'AB1023',它已经是一个二进制字符串了,而实际上不是。相反,您必须首先通过一些转换函数将十六进制字符串转换为二进制

我喜欢使用binascii包binascii.unhexlify(raw)

所以你的新功能看起来像:

import binascii

def get_hash(raw):
    return codecs.encode(double_sha256(binascii.unhexlify(raw)), "hex_codec")

希望这有帮助,或者你已经知道了

相关问题 更多 >