¿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 bitcoin ve para resolver?

Ok, pero ¡QUÉ datos estamos extrayendo! Nadie parece saberlo. No me importa cómo funciona, quiero saber de dónde provienen los datos que la minería de bits está desencriptando o encriptando.
Aquí hay una versión visual y gamificada del problema que los mineros de bitcoin están escribiendo para resolver. Es literalmente un minero de bincoin, y si resuelves el problema, entonces ganas un bitcoin. hashhunt.josh.com

Respuestas (5)

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

La cantidad de ceros se basa en lo difícil que se supone que es encontrar un bloque. En Bitcoin se ajusta para tener un bloque nuevo 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!

Aquí hay un bosquejo extremadamente simplificado del problema, pero debería dar una idea bastante buena 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 su inclusión (acortadas).

5572eca4dd4
db7d0c0b845

Y este es el hash de una transacción especial que acabas de crear, que te otorga 25 BTC (la recompensa actual):

916d849af76

Construyendo el siguiente bloque:

Ahora, usemos una aproximación bruta 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 este 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 (intentando 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

Sin suerte, el hash no comienza con un 0... Probemos con nonce=2

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

Sin suerte…

Si seguimos hasta nonce=16, obtenemos nuestro primer cero inicial.

> 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... ¡usted es un ganador! Otros mineros ahora se basarán en tu bloque, solo tienes 25 BTC.

¡Pero tendrás 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 hash del nuevo bloque (el del ganador).

Tenga en cuenta que en realidad no está "contando ceros". En realidad, aproximadamente los primeros cuatro números distintos de cero se comparan con algo llamado "objetivo". Este se almacena de forma compacta en cada bloque en un campo denominado "bits".
Además, su ejemplo se dirige conceptualmente en la dirección correcta, pero el verdadero éxito es cuando el hash sha256 del encabezado es menor que el objetivo. Ejemplo de destino: 00000000000001ae00000000000000es mayor que 00000000000001adf44c7d69767585<-- esto sería un hash válido.
"Y este es el hash de una transacción especial que acabas de crear y que te otorga 25 BTC (la recompensa actual): 916d849af76" ¿Cómo se elabora esta transacción?
@Reonarudo: lo más simple es usar una de sus direcciones para producir una única salida estándar para gastar, pero también puede falsificar cualquier tipo de transacción personalizada con scripts personalizados si lo desea (se le permite un saldo total de +25 BTC para esta transacción, hace algún tiempo no se permitían entradas adicionales, pero tal vez ahora sí).
Entonces, ¿normalmente agregaría la dirección de mi billetera al final entre - y -?
@Reonarudo, no exactamente, este es un boceto muy simplificado de lo que realmente se hace. Las transacciones se realizan con scripts que a menudo se realizan a partir de direcciones, puede encontrar más información en la wiki de Bitcoin.
Básicamente, esto suena como un buen resumen (simplificado), pero ¿en qué momento la red de bitcoin acepta esto como el siguiente bloque válido y qué sucede en el caso (poco probable) de que dos mineros diferentes lograron enviar un bloque válido casi simultáneamente?
¡Guau, gran respuesta! Sin embargo, hay un par de cosas que todavía no entiendo: digamos que ha estado buscando una solución durante 6 minutos y aparece una nueva transacción. 1) ¿Qué pasa ahora? si tengo que empezar de nuevo, entonces 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 construyes sobre un bloque antiguo, hay pocas posibilidades de que tus 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 solo un resultado estadístico promedio. 2) ¿Qué transacción? Los bloques son transmitidos por quien los extrajo y retransmitidos por otros nodos. 3) Nada lo obliga a incluir todas las transacciones pendientes, pero cuantas más transacciones incluya, más tarifas podrá cobrar.
2) La transacción que se agregará al bloque actual, la que hizo que yo y todos (?) Los demás reiniciamos el cálculo. ¿Cómo me llega? Y también, 3) ¿Por qué lo aceptaría por 0.001 btc si debo encontrar un nuevo bloque y obtener 25 btc? Gracias Stéphane!

La siguiente es una descripción de la apuesta estadística global que se juega cada 10 minutos más o menos. El intervalo del juego está controlado por la dificultad que dice cuántos "hashes" se necesitan por intervalo.

En otras palabras, el difficultyy targetdefine las "probabilidades de la casa" contra su posibilidad de obtener un hash SHA ganador. Es nonceel área de "rascado".

Cada hash consume electricidad y emite calor, lo que requiere refrigeración 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 con más precisión: el software minero convierte todas las transacciones en una vista resumida llamada "raíz merkle" y la codifica, que es representativa de las transacciones.

Paso 2

Luego, el software de minería convierte esto a 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 minero cambia una pequeña porción de este bloque llamado "nonce".

Paso 4:

El encabezado del bloque se codifica y se compara 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 almacena en cada bloque en un campo llamado bits.

Un objetivo ampliado se ve así:

  Target   0000000000000083ef00000000000000000000000000000000000000000000000

Y 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, puede aproximar 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 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 hash del encabezado del bloque 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)

¿Quiere ver qué hace Bitcoin-QT cuando encuentra un bloque?... Lo publiqué aquí. . La información en esta publicación lo ayudará a comprender lo que sucedió.

¿No es el nonce (32 bits) demasiado pequeño para poder encontrar un hash que debe comenzar con 14 ceros a la izquierda (14x4 = 56 bits)? Encontrar tal hash requeriría en promedio 2^56 / 2 intentos y con un nonce de 32 bits solo son posibles 2^32 intentos antes de que se agoten todos los valores posibles de nonce. Editar: con el tiempo cambiando cada segundo, supongo que esto solo se aplica si la tasa de hash supera los 4 GH/seg (que creo que sí...)
Sí, tienes razón, ... 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.
La mejor respuesta que he podido asimilar hasta ahora. Todavía no entiendo cómo se establece un objetivo ni entiendo completamente la importancia de generar un hash menor que el objetivo. Entonces, se genera un hash más cercano pero menor que el objetivo, ¿por qué es eso importante? ¿Es porque teóricamente es el hash más complejo, por lo que es el hash más (o realmente cerca de ser el más) difícil de descifrar?
@VanceMcCorkle Entre los equipos de minería de bitcoin, es una carrera entre quién puede presionar el acelerador al máximo sin explotar el motor. Cada movimiento del pistón crea un código hash (por así decirlo). El significado es sólo una >>CARRERA PARA QUEMAR PETRÓLEO<<. Bitcoin debería estar patrocinado por Big Oil and Coal.
@ChristopherJonMankowski Excepto que donde vivo aquí en el estado de Washington literalmente funciona con agua de lluvia (Presa Grand Coulee). Además alquilo espacio de alojamiento verde para mineros. Sin embargo, todavía no he encontrado una explicación clara sobre el proceso de validación de bloques que tenga sentido para mí todavía. Aunque todavía tengo que leer el Bitcoin Standard.
@VanceMcCorkle intente calcular el costo por Gigahash o Terrahash por costo de FOREX de energía. Ese es el costo industrial del capitalismo, pero no el equivalente de TCO de otras deudas y compensaciones de la ecología que no se consideran, ya que están ocultas por la gobernanza y la política para llegar a alguna parte.

La minería proporciona una forma de llegar a un consenso sobre cómo debería ser el libro de transacciones y saber que nadie está haciendo trampa.

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 envía el siguiente bloque. Pero oye... te gustarían esos 25 BTC (que actualmente valen alrededor de $ 825) como a mí y a todos los demás. Entonces, ¿cómo haces para que no pueda hacer trampa y reclamar el bloque yo mismo?

Bueno, pusiste 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 probar 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 manera de que ponga menos del 2% de todo el trabajo y aun así resuelva bloques al menos el 2% del tiempo (en promedio).

Así, como resultado, cuando se envía un bloque de transacción, todos los pares verifican que no hubo gastos dobles, que se reclamó el monto correcto del subsidio y que el remitente realmente realizó el trabajo necesario para esa solución. Con esas tres reglas, no es necesario que haya una autoridad central que gestione el proceso o que pueda controlar el resultado.

Los mineros adivinan un número objetivo aleatorio que resuelve una ecuación generada por el Protocolo Bitcoin. Por supuesto, las computadoras hacen esta conjetura, no las personas.

La cadena de bloques de Bitcoin utiliza el algoritmo hash seguro SHA-256 para generar números de 32 bytes de la misma longitud de una manera que requiere una cantidad predecible de esfuerzos del procesador. Para recibir una recompensa en criptomonedas (y registrar transacciones "legítimas" en el libro mayor), los mineros están resolviendo hash de bloques que cumplen con ciertos criterios (establecidos por el sistema).

Un "número aproximado" se forma a partir de un hash final del hash del bloque actual, nonce , datos y hash del bloque anterior. Se repite una búsqueda de fuerza bruta hasta que los mineros descubren un hash que es menor que el número objetivo.