Según Wiki , el script de entrada del bloque Génesis consta de estos bytes:
04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73
Esto lo podemos desglosar de la siguiente manera:
0x04
: empuje 4 bytes0xffff001d
: el mismo valor que el campo "bits" del encabezado del bloque Génesis0x01
: empuje 1 byte0x04
: empuje el valor 4Hasta donde yo sé, los dos primeros valores colocados en la pila ( 0xffff001d
y 0x04
) son innecesarios. Por supuesto, también lo es el mensaje del canciller, pero al menos su significado es un poco más claro.
Sin embargo, el push bits
/ 0x04
patrón también aparece en otros bloques. Por ejemplo, el mismo patrón aparece en el siguiente bloque (0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098).
Encontré esta pregunta , con una respuesta que especula:
Entonces, 010445 son, de hecho, parte de 2 operaciones: 01 empuja 04 a la pila, 45 empuja el mensaje a la pila. En cuanto a por qué empujar 04, me gana, ¿tal vez solo estaba probando para asegurarse de que algo funciona? ¿Algún contador interno usado por Satoshi durante la creación del bloque Génesis? Dado que el guión de una transacción de generación de monedas no tiene sentido, es posible que nunca lo sepamos.
Mis preguntas:
0x04
) aparecen en más de un bloque?Encontré más información en la Wiki:
Las generaciones tienen una sola entrada, y esta entrada tiene un parámetro "coinbase" en lugar de un scriptSig. Los datos en "coinbase" pueden ser cualquier cosa; no se usa Bitcoin coloca el objetivo de formato compacto actual y el número "extraNonce" de precisión arbitraria allí, que se incrementa cada vez que se desborda el campo Nonce en el encabezado del bloque. Las salidas pueden ser cualquier cosa, pero Bitcoin crea una exactamente como una transacción de dirección IP. La extranoncia contribuye a ampliar el dominio de la función de prueba de trabajo. Los mineros pueden modificar fácilmente nonce (4 bytes), marca de tiempo y extranonce (2 a 100 bytes).
https://en.bitcoin.it/wiki/Transacción
En otras palabras, el primer cliente de Bitcoin copió el campo "bits" (objetivo de formato compacto) del encabezado del bloque y lo usó en una operación de inserción de datos para el script de entrada de coinbase. Pero todavía no estoy seguro de por qué esto se consideró una buena idea.
A continuación, una segunda operación pushdata empujó el campo "extranonce". Este campo se incrementaba cada vez que el campo nonce se desbordaba. Las implicaciones de privacidad de este sistema se discuten aquí:
https://bitslog.wordpress.com/2013/04/17/la-bien-merecida-fortuna-de-satoshi-nakamoto/
Creo que ahora puedo responder mis propias preguntas:
0x04
es el campo extranonce.
andres chow