¿Qué están resolviendo realmente los mineros de bitcoin?

Al igual que con la minería, ¿qué están resolviendo realmente los mineros de bitcoin? Leí que están resolviendo hashes, pero ¿qué significa eso realmente? ¿Podemos ver lo que están resolviendo? ¿Alguien puede dar un ejemplo de lo que una máquina de minería de bitcoins puede resolver?

Comentarios

  • Relacionado: bitcoin.stackexchange.com/q/148/153
  • Ok, pero ¡QUÉ datos estamos extrayendo! Nadie parece saberlo. No ‘ me importa cómo funciona. Quiero saber de dónde provienen los datos de esa minería de bits que se descifra o encripta.

Answer

Intentan encontrar un nonce aleatorio (un poco de datos aleatorios) que entra en un bloque y hace que el bloque tenga un hash (SHA256) que (en binario ) comienza con una cierta cantidad de 0 «s. Cuantos más ceros, más raro es el hash. Un buen resultado de hash» no es predecible, por lo que hay que intentarlo muchas veces para encontrar un buen nonce.

La cantidad de ceros se basa en cuán difícil se supone que sea encontrar un bloque. En Bitcoin se ajusta para tener un nuevo bloque cada 10 minutos (en promedio, dada la velocidad a la que se encuentran los bloques anteriores).

Interesante: debido a que los hashes son impredecibles, no importa cómo cambie el nonce ! La mayoría de las veces es solo un número que cuenta hacia arriba desde 0!

Respuesta

Aquí hay un extremadamente bosquejo simplificado del problema, pero debería dar una idea bastante clara de cuál es el problema.

Los datos:

Este es el hash del último bloque (reducido a 30 caracteres):

00000000000001adf44c7d69767585 

Estos son los hash de algunas transacciones válidas que esperan ser incluidas (abreviadas).

5572eca4dd4 db7d0c0b845 

Y este es el hash de una transacción especial que acaba de crear, lo que le da 25 BTC (la recompensa actual) para ti mismo:

916d849af76 

Construyendo el siguiente bloque:

Ahora, usemos una aproximación gruesa de cómo se vería un nuevo bloque (el real usa formato binario). Contiene el hash del bloque anterior y los hash de esas 3 transacciones:

00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76-- 

¡Ahora hagamos minería a mano! Nuestro objetivo es completar esto bloque con un nonce (un pedazo de basura) tal que el hash del nuevo bloque comience con 13 ceros (considerando el hash anterior, ¡parece que 13 ceros es la dificultad actual!).

Minería (tratando de finalizar este bloque):

Intentemos con nonce = 1 y calculemos el hash del bloque (estoy usando el algoritmo hash md5, pero Bitcoin usa doble sha256):

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac 

No hay suerte, el hash no comienza con un 0 … Probemos con nonce = 2

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90 

No hay suerte …

Si seguimos hasta nonce = 16, obtenemos nuestro primer cero a la izquierda.

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3 

¡Para nonce = 208, obtenemos dos ceros a la izquierda!

> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a 

Continúe así … Si finalmente encuentra un hash que tiene 13 ceros a la izquierda … ¡eres un ganador! Otros mineros ahora construirán sobre su bloque, usted acaba de obtener 25 BTC.

¡Pero tendrá que ser rápido!

Volver al paso 1…

Si alguien logra construir un bloque antes que tú, tendrás que empezar de nuevo desde el principio con el nuevo bloque «s hash (el del ganador).

Comentarios

  • Además, tu ejemplo va conceptualmente en la dirección correcta, pero el verdadero éxito es cuando el hash sha256 del encabezado es menor que el objetivo. Objetivo de ejemplo: 00000000000001ae00000000000000 es mayor que 00000000000001adf44c7d69767585 <; este sería un hash válido .
  • @Reonarudo, no exactamente, este es un bosquejo muy simplificado de lo que realmente se hace. Las transacciones se realizan con scripts que a menudo se hacen a partir de direcciones, puede encontrar más información en la wiki de Bitcoin.
  • Esto básicamente suena como un resumen agradable (simplificado), pero ¿en qué punto la red bitcoin acepta esto? como el siguiente bloque válido, y ¿qué sucede en el caso (poco probable) de que dos mineros diferentes lograran enviar un bloque válido casi simultáneamente?
  • ¡Vaya, gran respuesta! Sin embargo, ‘ hay un par de cosas que todavía no pude ‘ entender: ‘ s dice que ‘ ha estado buscando una solución durante 6 minutos y llega una nueva transacción. 1) ¿que pasa ahora? si tengo que empezar de nuevo, parece que todo el mundo tiene que empezar de nuevo. Entonces, ¿cómo puede blockchain garantizar encontrar un bloque en ~ 10 minutos? 2) ¿Cómo me llega esa transacción de todos modos?3) ¿Qué pasa si encuentro una solución para este bloque y luego me llega una nueva transacción de algún otro nodo que la aceptó para el bloque que acabo de cerrar?
  • 1) Sí, todos comienzan de nuevo, si usted construye encima de un bloque antiguo hay ‘ escasas posibilidades de que sus bloques formen parte de la cadena más larga y el resto de la red los ignore. No hay garantía de que se encuentre un bloque en 10 minutos, es ‘ sólo un resultado estadístico promedio. 2) ¿Qué transacción? Los bloques son transmitidos por quien los extrajo y transmitidos por otros nodos. 3) Nada lo obliga a incluir todas las transacciones pendientes, pero cuantas más transacciones incluya, más tarifas podrá cobrar.

Responder

La siguiente es una descripción de la apuesta estadística global que se juega cada 10 minutos aproximadamente. El intervalo del juego está controlado por la dificultad , que indica cuántos «hashes» se necesitan por intervalo.

En otras palabras, difficulty y target definen las «probabilidades de la casa» en contra de sus posibilidades de obtener un hash SHA ganador. El nonce es el área de «raspado».

Cada hachís consume electricidad y emite calor, lo que requiere enfriamiento adicional.

Esto es lo que se hace con cada hash:

Paso 1

En un nivel alto, el software minero toma una lista de transacciones activas y luego las agrupa en algo llamado «bloque».

O dicho de manera más precisa: El software de minería encubría todas las transacciones en una vista de resumen llamada «raíz merkle», y la codifica, que es representativa de las transacciones.

Paso 2

Luego, el software de minería convierte esto en un formato binario llamado Encabezado de bloque , que también hace referencia a los bloques anteriores (también llamado cadena).

Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4 

Paso 3:

El hardware del minero cambia una pequeña parte de este bloque llamado «nonce» .

Paso 4:

El encabezado del bloque tiene hash y en comparación con el objetivo como si fuera simplemente un número grande como 10,000,000> 7,000,000 (los números reales son mucho más grandes, y en hexadecimal). El objetivo se comprime y se almacena en cada bloque en un campo llamado bits.

Un objetivo expandido se ve así:

 Target 0000000000000083ef00000000000000000000000000000000000000000000000 

Y el El objetivo es asegurarse de que el hash SHA256 del bloque sea menor que este valor. En el siguiente ejemplo, «83ee» es más pequeño que «83ef»

Para simplificar este concepto, puedes el objetivo contando los ceros iniciales (como explica la otra respuesta aquí). Aquí hay un ejemplo:

Aquí hay un bloque de muestra con transacciones que puede ver en BlockChain.info. Busque en la esquina superior derecha de la página web para este hash:

 Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf 

Ese hash anterior era de hoy y tiene 14 ceros a la izquierda. Comparemos eso con lo que se necesitaba hace 3 años con el bloque 100 que tiene 8 ceros a la izquierda.

 Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899 

Resumen

Entonces, al final del día, todo lo que hace un minero es:

  1. Tomar un encabezado de bloque como entrada
  2. Cambiar el Nonce
  3. Pruebe si el Encabezado de bloque hash es menor que el objetivo. Si es así, usted gana.
  4. Vaya al paso 2 (o vaya al paso 1 si alguien más ganó el bloque)

¿Quieres ver qué hace Bitcoin-QT cuando encuentra un bloque? … Lo publiqué aquí. . La información de esta publicación ayudarlo a comprender lo que sucedió.

Comentarios

  • Isn ‘ t el nonce (32 bits) lejos demasiado pequeño para poder encontrar un hash que debe comenzar con 14 ceros a la izquierda (14×4 = 56 bits)? Encontrar dicho hash requeriría un promedio de 2 ^ 56/2 intentos y con un Dado que solo son posibles 2 ^ 32 intentos antes de que se agoten todos los valores de nonce posibles. Editar: con el tiempo cambiando cada segundo, supongo que esto solo se aplica si la tasa de hash supera los 4 GH / seg (lo que creo que sí …)
  • Sí, usted ‘ correcto, … de la URL en el encabezado del bloque: Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.

Respuesta

La minería proporciona una forma de llegar a un consenso sobre cómo debe verse el libro mayor de transacciones y saber que nadie está engañando.

Esa es la definición no técnica de minería .

La «autoridad» para el doble gasto es la cadena de bloques. La cadena de bloques consta del historial de todos los bloques de la cadena de bloques más el siguiente bloque de transacciones. El subsidio de recompensa actualmente es de 25 BTC para la parte que presente el siguiente bloque. Pero bueno … te gustaría esos 25 BTC (que actualmente vale alrededor de $ 825), al igual que a mí y a todos los demás. Entonces, ¿cómo lo haces para que yo no pueda hacer trampa y reclamar el bloque yo mismo?

Bueno, pones un sistema en el que tú y yo tenemos que competir. Eso es lo que hace la prueba de trabajo – hace que cuando reclamo la recompensa sea fácil demostrar que realmente hice el trabajo involucrado. Entonces, para tener un 2% de posibilidades de resolver un bloque, necesito poner el 2% del trabajo de minería. No hay forma de que pueda poner menos del 2% de todo el trabajo y aún así resolver bloques al menos el 2% del tiempo (en promedio).

Por lo tanto, como resultado, cuando una transacción bloquea se envía, todos los pares verifican que no hubo gastos dobles, que se reclamó la cantidad correcta de subsidio y que el remitente realmente gastó el trabajo necesario para esa solución. Con esas tres reglas, entonces no es necesario una autoridad central que gestiona el proceso o puede controlar el resultado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *