¿Cuál es el formato de los scripts de entrada de coinbase?

El script de entrada de la transacción coinbase del bloque número 1 (justo después del bloque de génesis) se ve así: 04ffff001d010b

¿Cómo reconozco esto como una transacción de base de monedas?

¿Simplemente sé que esta es una transacción de base de monedas porque es la primera transacción en el bloque?

¿El script de coinbase tiene que tener un formato especial?

Traté de encontrar la respuesta en la wiki de Bitcoin, pero esa página en particular está vacía a pesar de que está vinculada desde la página de especificación del protocolo: en.bitcoin.it/wiki/Coinbase_transaction

Respuestas (2)

Una transacción de coinbase se caracteriza porque el campo "previous_output" de la transacción tiene 32 bytes de ceros y 4 bytes de 0xFF. Debería ser la primera transacción del bloque, pero no estoy seguro de si todos los clientes aplican esta regla. El script de firma de la transacción de coinbase no necesita obedecer el protocolo Script , pero por lo que recuerdo, el script del primer bloque empuja los datos a la pila y luego los saca. Los datos codificados en el Bloque Génesis representan el famoso titular del Times:

The Times 03/ene/2009 Canciller al borde del segundo rescate para los bancos

Y se usó como una forma de demostrar que el bloque se creó no antes del 03 de enero de 2009, pero también se puede especular que se relaciona con la intención de Satoshi al crear Bitcoin: contrarrestar las monedas impulsadas por la deuda.

Sí, la base de monedas debe ser la primera y solo la primera transacción de un bloque. Esta es una regla de la red, y cualquier cliente que no la cumpla corre el riesgo de terminar en una bifurcación.

Los scripts de entrada de Coinbase pueden contener datos arbitrarios. No se requieren datos actualmente. Bitcoind crea guiones de entrada de coinbase para que sean guiones correctamente formados, pero esto no es obligatorio.

A partir de BIP34, se requieren nversion==2 bloques para que la altura del bloque se codifique como un impulso de datos de tamaño mínimo en la base de monedas.
Además, el tamaño del script de coinbase debe estar entre 2 y 100 bytes.