Obtener el txid incorrecto para las transacciones de coinbase

Estoy tratando de hacer hash de transacciones para obtener el txid. Obtengo los valores hexadecimales de blockchain.info. Obtengo el hash correcto para todas las transacciones excepto para la base de monedas cuando lo hago dos veces. ¿Hay algo diferente acerca de cómo se supone que se debe codificar la transacción de coinbase?

El bloque que he probado es: https://blockchain.info/no/block/0000000000000000000870497004514bd3807cdc98b9f3a57038faf5df04144f .


Se supone que el txid de la base de monedas es:
44763fed906f1a0e8b82e7497ac83856baa4b1c5621affdce04108a212018c4e

Pero me sale:
6e129e567970540b2812ec58388d131c3b8fdbf4e4c992d140e255895df2992e

Respuestas (3)

El txid es el hash de la transacción sin datos de segwit. La transacción completa de la base de monedas contiene los datos de segwit que darán como resultado el hash que obtuvo. Sin embargo, ese no es el txid.

Gracias, ¿te importaría decirme qué son los datos de segwit?
Ver BIP 144: github.com/bitcoin/bips/blob/master/bip-0144.mediawiki . El hash que tienes es la identificación del testigo.

El hash que creó es el wtxid(hash de ID de testigo), no el txid(hash de ID de transacción):

ID de transacción frente a ID de testigo

Para conocer la diferencia entre txidy wtxid, consulte Mastering Bitcoin ch. 7 § "Identificadores de transacciones" .

Parece que tiene una copia incorrecta de la transacción sin procesar.

Cuando miro la transacción sin procesar para txid en la cadena de bloques (transacción coinbase para la altura del bloque 486,273, hash de bloque 00000000000000000083cbfd33b63c2ac10e703266c5749bf3ce2fbff88f5791), obtengo lo siguiente:

Código:

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

Cuando calculo hashlib.sha256(hashlib.sha256(data).digest()).digest() en esos datos, obtengo el resultado correcto.