Ich versuche, Transaktionen zu hashen, um die txid zu erhalten. Ich bekomme die Hex-Werte von blockchain.info. Ich bekomme den richtigen Hash für alle Transaktionen außer für die Coinbase, wenn ich sie zweimal hash. Gibt es etwas anderes daran, wie die Coinbase-Transaktion gehasht werden soll?
Der Block, den ich ausprobiert habe, ist: https://blockchain.info/no/block/0000000000000000000870497004514bd3807cdc98b9f3a57038faf5df04144f .
Die txid der Coinbase soll lauten:
44763fed906f1a0e8b82e7497ac83856baa4b1c5621affdce04108a212018c4e
Aber ich bekomme:
6e129e567970540b2812ec58388d131c3b8fdbf4e4c992d140e255895df2992e
Die txid ist der Hash der Transaktion ohne Segwit-Daten. Die vollständige Coinbase-Transaktion enthält die Segwit-Daten, die zu dem Hash führen, den Sie erhalten haben. Das ist aber nicht die txid.
Der von Ihnen erstellte Hash ist der wtxid
(Hash der Zeugen-ID), nicht der txid
(Hash der Transaktions-ID):
Für den Unterschied zwischen txid
und wtxid
siehe Mastering Bitcoin ch. 7 § „Transaktionskennungen“ .
Sie scheinen eine fehlerhafte Kopie der Rohtransaktion zu haben.
Wenn ich mir die Raw-Transaktion für txid in der Blockchain anschaue (Coinbase-Transaktion für Blockhöhe 486.273, Block-Hash 00000000000000000083cbfd33b63c2ac10e703266c5749bf3ce2fbff88f5791), erhalte ich Folgendes:
Code:
01000000 01000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00ffffff ff310381 6b07244d
696e6564 20627920 416e7450 6f6f6c6b
2f454231 2f414436 2f4e5941 2f332059
c36d7be1 550000df 320000ff ffffff02
38252e4d 00000000 1976a914 66037132
6d3a2e06 4c278b20 107a65da d847e8a9
88ac0000 00000000 0000266a 24aa21a9
edc11e8c dbd8d442 b27bf8f2 73395baa
83b5da4c 9c3d87fb c539dad7 42480437
10000000 00
Wenn ich hashlib.sha256(hashlib.sha256(data).digest()).digest() für diese Daten berechne, erhalte ich das richtige Ergebnis.
jørgen ks
Andreas Chow