Red de conocimiento informático - Computadora portátil - Bitcoin calcula el valor hash del bloque

Bitcoin calcula el valor hash del bloque

Los datos del bloque génesis de Bitcoin se escriben en el código fuente en forma de código duro.

Los hashes de los bloques posteriores se calculan de forma fija. ¿Cómo se calcula?

Cada bloque tiene:

versión es el número de versión del nodo de red

prev_block es el valor hash del bloque anterior, el bloque génesis No, pero todos los bloques posteriores lo hacen

mrkl_root es el árbol Merkle

time es la marca de tiempo. Hora actual

Dificultad de Bit Network

número aleatorio nonce

Este nonce es el número aleatorio que Pow necesita calcular. La diferencia es que debe serlo. calculado dos veces Valor de esperanza.

Primero, obtenga los bits de tiempo nonce de la versión prev_block mrkl_root como una cadena, luego combínelos para obtener el resultado.

Sin embargo, el bit de tiempo de versión nonce debe convertirse a little endian de tipo largo sin firmar, y prev_block mrkl_root debe convertirse a hexadecimal y a mayúsculas y minúsculas, lo cual es un verdadero dolor de cabeza.

Prueba de hash de bloque con altura=1

Esfuerzo de minería

En la estructura del bloque, los bits de tiempo de la versión prev_block mrkl_root se calculan fácilmente. Sólo el número aleatorio nonce es incierto.

El "pow" de Bitcoin es encontrar un nonce adecuado para reutilizar el nonce de tiempo de la versión combinada prev_block mrkl_root. Después de dos cálculos sha256, alcanza un nivel que coincide con la dificultad del valor de la red Bitcoin. . La dificultad de la red Bitcoin se mide en bits, donde los primeros n bits del último hash calculado son cero.

El cálculo del hash de cada bloque incluye un prev_block_hash, que es una representación de la cadena que hace más difícil atacar Bitcoin. Si alguien cambia el hash de un bloque, se deben volver a calcular los hash de todos los bloques posteriores a ese bloque.

Procesamiento del orden de bytes por parte de Python

Referencia:

/2014/02/bitcoin-mining-hard-way-algorithms.html

https://en.bitcoin.it/wiki/Dificultad

https://bitcoin.org/en/developer-guide#term-merkle-tree