¿Cuál es el problema que resuelven los mineros de Bitcoin?

18 Mar, 2022
Alex Agüeros

Es fácil decir cual es la labor de un minero a groso modo, pero difícil dar una explicación mas detallada si se pregunta mas allá, sobre el famoso problema que tienen que resolver. Para entender este tema hay que ponerse técnicos, hay que empezar sabiendo que:

Contents


Un bloque de Bitcoin contiene:

  • Un hash, obtenido por la computación de un doble SHA-256 del encabezado del bloque, también incluyendo el timestamp (tiempo que se a tardado en minar el bloque), el Nonce (número usado solo una vez), la versión, la raíz de Merkle, nBits que codifica la dificultad y el hash del bloque anterior.
  • Un objetivo, el objetivo es el valor máximo permitido que debe tener el hash para ser válido en la prueba de trabajo, ya que quien define cuándo se da por resuelto un bloque viene dado por la dificultad de este.

Ejemplo

000000000000000000084bc771b929b0780276b1c31cec10a96921b1e53b970a es el hash del bloque numero 669945, que se consigue realizando el doble SHA256 del encabezado del bloque. Este hash convertido a decimal es: 794600089940753232651370066465976921098309156434843402. 

¿Qué busca el minero?

Lo que el minado de un bloque busca es que este hash que hemos computado, sea igual o menor al hash objetivo. Este objetivo también se consigue a través de una computación realizada automáticamente en los nodos de minería. El hash objetivo lo determina la dificultad, que en sí también depende del timestamp. Esta dificultad también está reflejada en el hash del bloque en cuestión ya  que se incluye en la operación del hash, utilizamos el término nBits para referirnos a él. El bloque que hemos usado en el ejemplo anterior es el número 669945, su nBits es 0x170d21b9, que en verdad se calcula como 0x0d21b9 · 2560x17 – 3 lo cual es igual a 0x0d21b900000000000000000000000000000000 en hexadecimal, y en decimal a 1257769770588612382309009370720465882998915202417688576. La dificultad viene definida por 0xffff·25626 / objetivo, esto significa que cuanto más pequeño es el objetivo, más difícil es encontrar un hash el cual sea menor o igual que el hash objetivo, esto hace que cuanto más bajo sea el objetivo, la dificultad es mayor.

En el caso que hemos utilizado como ejemplo, podemos observar que hash del bloque 669945, 794600089940753232651370066465976921098309156434843402, es menor (o igual) que el hash objetivo 1257769770588612382309009370720465882998915202417688576, este resultado es valido.

Prueba de trabajo (Proof of Work)

El nodo de minería entonces primero obtendría la dificultad del bloque para computar el hash objetivo. Cuando ya obtuviera esto, recopila todos los datos que van dentro del hash del bloque y añadiría el Nonce, esto es un número el cual cambia cada vez que se hace un hash, cada vez que el Nonce cambia, el hash final también cambia. Básicamente, los mineros prueban muchísimos nonces hasta que dan con uno adecuado, donde el hash es igual o menor que el hash objetivo.

Protocolo de consenso

Finalmente, para comprobar la validez de este bloque presuntamente válido y así conseguir la recompensa, el minero comparte este hash del bloque con el resto de la red para que se realice la comprobación de que, en efecto, este hash es menor o igual que el hash objetivo. 

Nota: Para evitar un malentendido común el algoritmo SHA-256 de bitcoin hace hashing , no codifica. El hashing es estrictamente una operación unidireccional.

Otros artículos.

Pool de minería

Pool de minería

Las pools de minería fueron creadas con la finalidad de facilitar el trabajo que conlleva resolver un bloque, para hacer frente a la creciente...

leer más
Please enter CoinGecko Free Api Key to get this plugin works.