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
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.
El hash que creó es el wtxid
(hash de ID de testigo), no el txid
(hash de ID de transacción):
Para conocer la diferencia entre txid
y 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.
jorgen ks
andres chow