Estoy tratando de entender el formato de la transacción de coinbase. He leído que es arbitrario y no especificado. Me pregunto porque necesito generar trabajo de minería y crear un grupo interno. Como descubrí, puede cambiar los ntime
campos y nonce
. extranonce
El último debería ser adecuado en el parámetro coinbase, ¿verdad? Entonces, ¿alguien puede ayudarme a analizar el contenido de la transacción de coinbase y cómo se supone que debo construir una, para que todos los mineros en mi grupo puedan tener diferentes encabezados para el hash? Una guía paso a paso sobre un bloque existente sería muy apreciada, enlaces y otras cosas también.
Una transacción de coinbase sigue el mismo formato que una transacción normal, excepto:
Acerca de que scriptSig es una matriz de bytes arbitraria, hay una advertencia: las operaciones checksig en él se cuentan para el límite de sigop de bloque (20000), por lo que probablemente no desee activar esto accidentalmente. Hacer que sea una lista de solo operaciones push (incluida la extranonce) evita eso.
Mire el bloque #280963 . Mira la transacción de coinbase d1c6b8...fd08 . Puede ver los datos de CoinBase:
038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000
Este es un guión. Mire wiki para más detalles. En la transacción coinbase, este script puede contener cualquier dato. Si cambia estos datos, la raíz de merkle también cambiará, y diferentes mineros pueden comenzar a cambiar el nonce/marca de tiempo para la raíz de merlke, que usted les proporciona. Mire wiki para obtener más información sobre el árbol merkle.
La transacción de Coinbase contiene una sola entrada. Esta entrada no se usa y contiene 32 bytes ceros como tx anterior. Mire wiki para obtener más información sobre qué datos contiene la transacción. Proporciono como ejemplo de decodificación de transacciones de base de monedas sin procesar.
> getrawtransaction d1c6b8140246950475735394b0ac68f9ada60d313d2b5308afbc569c84f7fd08
< 01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff53038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000ffffffff01bf208795000000001976a9145399c3093d31e4b0af4be1215d59b857b861ad5d88ac00000000
01000000 - version
01 - input count
0000000000000000000000000000000000000000000000000000000000000000 - prev tx
ffffffff - prev out n
53 - length of coinbase script
038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000 - coinbase script
ffffffff - sequence
01 - output count
bf20879500000000 - 2508660927, satoshi count, or 25.08660927 BTC
19 - script length
76a9145399c3093d31e4b0af4be1215d59b857b861ad5d88ac - script
00000000 - locktime