¿Puede alguien explicar en detalle los componentes del hash final que determina el ganador del bloque?
Tengo entendido que los mineros están tomando
Mis preguntas son:
¿Tengo razón en mi entendimiento hasta ahora?
¿Alguien puede explicar cuáles son los otros componentes y en qué orden se ingresan en la función hash?
Usando los datos disponibles en blockchain.info sobre cada bloque, ¿puedo recrear el hash ganador ingresando los mismos datos en una calculadora Sha256?
Gracias.
Estás muy cerca. Como ya se ha establecido en Mesh, los mineros están procesando los siguientes datos:
Esta información se puede encontrar en la Referencia para desarrolladores de Bitcoin o en el PDF .
Ahora, a su tercera pregunta, ¡sí se puede! ¡De hecho, acabo de crear un pequeño programa en C# para hacer esto ayer! Hay un pequeño truco, porque no puedes simplemente conectar los datos directamente a una calculadora hash y verificarlos. Primero, agrega todos los campos juntos en una sola cadena (después de que se realiza la inversión y el cambio de hash para el hash de bloque anterior y la raíz de merkle). Luego, convierte esa cadena en datos binarios. En este punto, ejecuta el doble hash SHA256 para verificar que obtiene un hash válido del bloque.
Un recurso útil para que lo compruebe es Minería de Bitcoin con lápiz y papel, así como Bitcoin Wiki . Ambos recursos tienen ejemplos de código que muestran este proceso en acción.
De la documentación del desarrollador de Bitcoin.org , un encabezado de bloque consta de:
En ese orden. Entonces, como usted dice, el único componente que falta en su lista es la versión y el campo nBits. La versión se explica por sí misma, pero el campo nBits no lo es. Lo que hace el campo nBits es codificar el objetivo actual para el algoritmo de dificultad:
tener al menos 18 ceros a la izquierda.
No siempre 18 ceros. La cantidad de ceros iniciales cambia en función de la rapidez con la que se han encontrado bloques recientemente, para mantener el tiempo de bloqueo en un promedio de aproximadamente 10 minutos a pesar de la variación de la potencia de hash en la red. A medida que se unen más mineros, aumenta el hashrate, por lo que también lo hace la dificultad (es decir, se requieren más ceros). Otra forma de pensar en los 0 es que la salida del SHA256, como un número, debe ser menor que algún número objetivo. Ese objetivo está codificado en el campo nBits. Y sí, cualquiera puede verificar que el encabezado del bloque se convierte en un número por debajo del objetivo, así es como otros clientes verifican que los bloques sean válidos, porque SHA256 siempre produce el mismo resultado a partir de la misma entrada: es determinista, una propiedad de todos los hash útiles. funciones