¿Qué están resolviendo realmente los mineros de Bitcoin? ¿Qué tipo de problemas matemáticos están resolviendo y qué logran al resolverlos?

Están manteniendo y actualizando la cadena de bloques.

La cadena de bloques es un registro público de cuánto bitcoin contiene cada billetera bitcoin en un momento dado. Cuando Alice quiere enviar a Bob 1BTC, ella (su cliente de bitcoin, técnicamente) publica un hash de su clave de billetera secreta, la clave de billetera pública de Bob y el número 1 (para 1BTC) (nota: esto está muy simplificado). Si no sabe qué es un hash o las claves, piense en esto como una “solicitud de transferencia”, lo mismo que enviaría a su banco.

Los mineros de Bitcoin ven que Alice ha publicado esta solicitud y calculan cómo debería ser la cadena de bloques después de que se haya realizado esta transferencia. Esto no es una simple cuestión de “Sujeto 1 de la billetera de Alice, agregue 1 a la billetera de Bob”, debido a la construcción criptográfica de las billeteras bitcoin y la cadena de bloques. La criptografía de bitcoin está fuera del alcance de esta pregunta; Lo importante es que la solución es muy difícil de encontrar. Lo que hacen los mineros de bitcoin es, esencialmente, adivinar la solución y verificar si la suposición es correcta. Lo hacen una y otra vez hasta que alguien encuentra la solución correcta y publica esa solución para todos los demás, actualizando así la cadena de bloques. Los cálculos reales involucrados son solo aritméticos.

Fuera de tema: razonablemente podría señalar que cualquier cosa que hace una computadora es simplemente aritmética al final, pero en este caso es más cierto de lo habitual, ya que la teoría criptográfica tiene que ver con conceptos matemáticos simples como factorización y logaritmos (en … ” “ambientes raros”).

Para producir o extraer un bitcoin, los mineros usan una herramienta de software especial para resolver algunos problemas matemáticos típicos. Y a cambio de eso, se les emite un cierto número de bitcoins. La idea principal es crear un nuevo bloque que se agregue a la cadena de bloques existente. Cada bloque contiene una lista de todas las transacciones recientes ocurridas dentro de la red bitcoin. Y la cadena de bloques es un libro de contabilidad de cada bloque creado desde el comienzo de la red.

Pero la minería no es tan simple como parece. Agregar un nuevo bloque a la cadena de bloques nunca es fácil. Un minero de bitcoin necesita mostrar la prueba de trabajo para crear un nuevo bloque. Ahora surge la pregunta, ¿cuál es esta prueba de trabajo? Una prueba de trabajo o POW es un hash por debajo de un valor objetivo que se puede obtener realizando una cierta cantidad de trabajo de fuerza. Un hash es una forma simple de representar una gran cantidad de datos de una manera compacta y única. El bitcoin utiliza un algoritmo hash para producir un número en formato hexadecimal. El algoritmo utilizado por bitcoin es SHA-256 que produce un número largo de 256 bits en formato hexadecimal.

Pros de la minería de Bitcoin

Los mineros juegan un papel destacado en la red bitcoin. Los mineros no solo producen un bitcoin, sino que también aprueban las transacciones relacionadas con los bitcoins. Entonces, más mineros significa una red bitcoin más segura. Por ejemplo, cada vez que envía un bitcoin, los mineros confirman esta transacción y registran los detalles en un libro público. Por cada transacción que confirman, son recompensados ​​con una cierta cantidad de bitcoins y una tarifa de transacción. El minero que primero completa un bloque y lo agrega a la red, obtiene recompensas adicionales en términos de más bitcoins.

Dificultades con la minería de Bitcoin

El esquema de hash SHA-256 es muy rápido. Pero crear un hash no es suficiente. Es necesario asegurarse de que el hash producido sea inferior al umbral establecido por la red bitcoin. Solo entonces puede crear un bloque válido. Y si el hash producido por el minero está por encima del umbral, entonces el minero debe intentarlo nuevamente. Entonces, de esta manera, el minero sigue intentando hasta que se encuentra un hash que está por debajo del umbral. Para empeorar las cosas, el umbral varía cada dos semanas y cada bloque de 2016.

Inicialmente, cada vez que un minero de bitcoin crea un bloque, recibe 25 bitcoins. Pero este número se reduce cada cuatro años. Entonces, a medida que pase el tiempo, el proceso de minería será aún más difícil y menos rentable.

Bueno. Tengan paciencia conmigo. Esto puede ser técnico.
Cada minero o grupo de minería reúne un bloque que es una canasta de transacciones verificadas que desean publicar en la cadena de bloques pública. Una vez que tienen ese bloque, tienen que resolver un “rompecabezas” único. Único porque depende del bloque específico que están tratando de construir (y el de todos es más o menos único). Bueno. ¿Aún conmigo?

El tiene que ejecutar ese bloque de datos a través de un algoritmo hash. Piense en ello como un compactador de basura. Como el de la Estrella de la Muerte, nivel de detención. Digamos que cada vez que se activa el compactador, los contenidos se mezclan en un desorden aleatorio de metal, aguas residuales, partes de Luke, Han, Leia, 3PO y Wookie. El desafío del rompecabezas es qué composición de basura después de compactada dará como resultado una cabeza Wookie en la parte superior del cubo comprimido de basura.

No hay forma de calcular analíticamente qué disposición original de metal, desechos, aguas residuales, monstruo serpiente, Heros y Chewie dará como resultado que salga a la superficie Wookie en la parte superior de la salida comprimida, por lo que la única forma de ver es probar continuamente diferentes condiciones iniciales hasta que encuentre uno que funcione, es decir, siga repitiendo el experimento arrojando a los héroes a la basura en un orden diferente, reorganizando la composición de la basura existente, la cantidad de aguas residuales, etc., hasta que obtenga uno que tenga a Chewie mirándolo con esos ojos de perrito .
Lo hacen continuamente 24/7.

Cuando obtienen una cabeza Wookie en la parte superior, han encontrado una solución para el bloque y ganan la recompensa del bloque y transmiten su solución (bloque completado) a la red para reclamar su premio.

En la vida real, la dificultad está representada por una serie de ceros al comienzo del hash de bloques. Los mineros siguen iterando a través de una parte de los datos hash llamada nonce (bits de datos sin sentido utilizados para alterar la composición potencial del hash) para ver si pueden obtener un número hash que tenga el número requerido de ceros iniciales.

Creo que la analogía de Star Wars es más fácil de entender si no eres un informático.

Los mineros no resuelven tanto un problema matemático, sino que dedican mucho esfuerzo a adivinar hasta que adivinen correctamente. Bitcoin funciona al tener un conjunto vinculado de “bloques” de registros de transacciones que documentan quién tiene qué bitcoin. Para que Bitcoin funcionara, necesitaban alguna forma de garantizar que el registro de bloques sea inmutable, es decir, nadie puede cambiarlo. La forma en que lograron esto fue crear el concepto de minería. Los mineros toman un conjunto actual de transacciones, que incluye un enlace al último conjunto aceptado, y hacen muchos billones de conjeturas, cada vez que colocan un número en el campo “nonce” del encabezado del bloque. El encabezado del bloque se ejecuta a través de una función hash, también conocida como función “unidireccional” o “trampilla”. En este caso, la función hash SHA-256 se usa dos veces. Si la salida de la función hash está por debajo de un valor umbral, entonces el bloque es válido, es aceptado por otros mineros, y el minero que adivinó correctamente es recompensado con la recompensa del bloque, actualmente 12.5 bitcoins. Cuanto más bajo es el umbral de salida de la función hash, más difícil es hacer una suposición que hará que la salida de la función hash sea lo suficientemente baja, y lo bajo que el umbral está determinado por algo llamado “dificultad” de bitcoin. La dificultad se ajusta cada dos semanas para que, sin importar la cantidad de minería que ocurra en todo el mundo, se continúe creando un nuevo bloque cada 10 minutos en promedio. Es un poco difícil entenderlo, pero tan pronto como lo haga, verá que Bitcoin ha creado el primer libro de contabilidad inmutable del mundo, el Blockchain. Lo que escribes en él, se queda en él. Bitcoin es una moneda que es el primer activo rastreado en Blockchain, y debido a que se usa para pagar a los mineros, Bitcoin y Blockchain están entrelazados. Pero mientras el ecosistema de Bitcoin continúe rugiendo, puede usar Blockchain para escribir cualquier cosa para siempre.

Los mineros están resolviendo hashes del siguiente bloque. En bitcoin, el algoritmo utilizado es SHA256. Un hash es la palabra (puede ser un sustantivo o un verbo) para un algoritmo criptográfico que produce una cadena repetible pero no reversible de números y letras, en SHA256 el resultado es una cadena de 256 bits. Los datos de entrada pueden ser cualquier cosa, un número o la totalidad de wikipedia se convertirán en hash a una cadena de 256 bits al pasar por el algoritmo SHA256. Cambiar una sola letra en Wikipedia cambiará completamente la cadena de salida de 256 bits. Y, obviamente, no puede generar Wikipedia basada en una cadena de 256 bits (si pudiera, tendría el mejor algoritmo de compresión del mundo), por lo tanto, no es reversible. Pero siempre que sean los mismos datos exactos, se calculará el mismo hash exacto a partir de esos datos cada vez, por lo que es repetible.

Entonces, ahora que sabes lo que significa hashing, ¿qué se está haciendo hash? Muchas cosas, todos los datos contenidos en el siguiente bloque en la cadena de bloques. Los bloques contienen transacciones y datos de encabezado de bloque. Cuando el nodo del minero recibe nuevas transacciones de la red, el minero las incorpora a los datos del siguiente bloque y continúa el hash.

Los encabezados de bloque contienen 6 cosas:

1. La versión del cliente del minero. Bastante sencillo, el número de versión del software que está utilizando el minero.

2. El hash del bloque anterior en la cadena de bloques. Esto es lo que calcularon los mineros la última vez, y ahora se está calculando para el siguiente bloque.

3. La raíz de Merkle de todas las transacciones en el bloque. Esto es confuso para algunos, pero básicamente es solo un hash de todas las transacciones en el bloque. Cuando entra una nueva transacción, hay una nueva raíz de Merkle.

4. Una marca de tiempo.

5. La dificultad objetivo de la red.

6. Un nonce (número aleatorio).

Todos esos datos se procesan a través del algoritmo SHA256 en un número de 256 bits.

5 y 6 necesitan más explicaciones. La dificultad es ajustar cada 2,016 bloques. La razón del campo de dificultad es mantener los bloques encontrados en promedio cada 10 minutos, sin importar cuántos mineros haya. Cuantos más mineros, mayor es la dificultad. Los mineros calculan miles de millones de números por segundo entre 0 y 2 ^ 256. El número que generan los mineros debe ser un número menor que la dificultad objetivo de la red para ser válido. Así es como la red mantiene los bloques que se encuentran cada 10 minutos en promedio.

Pero si los mineros están calculando miles de millones, incluso trillones (toda la red en conjunto es de aproximadamente 350 petahashes por segundo) de veces por segundo, y si los datos de entrada permanecen igual, ¿no los mineros solo calcularán lo mismo una y otra vez , hasta que cambie la marca de tiempo o entre una nueva transacción para cambiar los datos de entrada? Sí. Para eso es el nonce (número 6). El nonce es un número aleatorio de 32 bits que los mineros insertan en el encabezado del bloque. Como se mencionó, incluso el cambio más pequeño en los datos de entrada cambiará completamente el hash de salida. Por lo tanto, los mineros pueden agregar datos aleatorios en el nonce para que no estén calculando lo mismo una y otra vez, y tengan una nueva oportunidad de encontrar un número de hash menor que la dificultad objetivo con cada cálculo.

Espero que tenga sentido, feliz de responder cualquier seguimiento 🙂

Aquí hay un bosquejo extremadamente 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 (acortado a 30 caracteres):

00000000000001adf44c7d69767585

Estos son los hash de algunas transacciones válidas en espera de inclusión (acortadas).

5572eca4dd4

db7d0c0b845

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

916d849af76

Construyendo el siguiente bloque:

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

00000000000001adf44c7d69767585–5572eca4dd4-db7d0c0b845-916d849af76–

¡Ahora vamos a minar a mano! Nuestro objetivo es completar este bloque con un nonce (un pedazo de basura) de modo 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):

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

> 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 buscamos 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úa así … Si finalmente encuentras un hash que tiene 13 ceros a la izquierda … ¡eres un ganador! Otros mineros ahora construirán sobre tu bloque, solo tienes 25BTC.

¡Pero tendrás que ser rápido!

De vuelta al paso 1 …

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

Como estaba tratando de comprender el concepto y entenderlo completamente en términos simples, esto es lo que he leído de una respuesta de stackexchange que explica todo perfectamente.

Aquí hay un bosquejo extremadamente 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 (acortado a 30 caracteres):

00000000000001adf44c7d69767585

Estos son los hash de algunas transacciones válidas en espera de inclusión (acortadas).

5572eca4dd4
db7d0c0b845

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

916d849af76

Construyendo el siguiente bloque:

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

00000000000001adf44c7d69767585–5572eca4dd4-db7d0c0b845-916d849af76–

¡Ahora vamos a minar a mano! Nuestro objetivo es completar este bloque con un nonce (un pedazo de basura) de modo 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):

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

> 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 buscamos 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úa así … Si finalmente encuentras un hash que tiene 13 ceros a la izquierda … ¡eres un ganador! Otros mineros ahora construirán sobre tu bloque, solo tienes 25BTC.

¡Pero tendrás que ser rápido!

De vuelta al paso 1 …

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

He escrito un par de respuestas sobre el tema que voy a vincular aquí:

La respuesta de Chris Stewart a ¿Qué pasa si todos dejan de extraer Bitcoin?

La respuesta de Chris Stewart a ¿Qué significa el aumento en el factor de dificultad minera para los mineros de bitcoin?

Pero te daré una respuesta original. Simplemente están tratando de encontrar un número * menor que * un cierto umbral. Eso es.

Si logran encontrar un número inferior a un cierto umbral, obtienen una ‘recompensa en bloque’, lo que solo significa 12.5 Bitcoin (aproximadamente $ 13,000 hoy). También reciben tarifas de bloque. Estas son solo tarifas que cada usuario individual de bitcoin paga para confirmar su transacción en blockchain.

Para obtener repetidamente un hash de un bloque y un número aleatorio hasta que el hash tenga un cierto número de ceros a la izquierda.

Al igual que una lotería que convierte esto en un juego distribuido, cualquiera puede ganar, uno puede comprar más boletos (potencia de la máquina). Un hash está diseñado para actuar como una función unidireccional: puede colocar datos en un algoritmo de hash y obtener una cadena única, pero si encuentra un nuevo hash, no puede descifrar los datos de entrada que representa. ¡Es difícil resolver el problema, pero es fácil verificar el hash resultante! Diseñado para tomar 10 minutos en promedio, por lo que en aproximadamente cada 10 minutos se generarán bitcoins. ¡El objetivo es tener una emisión de bitcoins constante!

Además de la bonificación que obtienen por minería, los mineros obtienen “tarifas de transacción”.

More Interesting

¿Cómo hago para hacer investigación de pregrado en CS?

¿La mayoría de los cursos requeridos en un programa universitario de ciencias de la computación son inútiles para la aplicabilidad de trabajo de programador del mundo real?

Recientemente he entregado mis tableros (12) y quiero hacer una mecánica BTech. Espero 85% en tableros, pero estoy seguro de que no romperé el avance de IIT. ¿Qué debo hacer, dejar un año y tomar clases de IIT o elegir la universidad solo este año? ¿Es seguro dejar caer un año?

Cómo entender Oracle en la complejidad computacional

¿Es posible convertir una imagen a una fórmula matemática?

Cómo calcular el inverso de la distribución normal estándar

¿La función de módulo es distributiva, asociativa o conmutativa? Explicar con ejemplos y pruebas. ¿Cómo uso este concepto en la programación competitiva?

¿En qué se diferencian las mónadas del encadenamiento?

¿Qué es una variable volátil?

¿Cómo funciona una calculadora electrónica?

¿Cuáles son los pasos que debo seguir para dominar las matemáticas? ¿Y cuál es la forma más rápida de alcanzar este objetivo?

¿De qué manera es mejor transferir valores variables en JavaScript?

¿Qué partes de las matemáticas son necesarias para que un ingeniero informático las entienda? Específicamente, ¿cuánto cálculo debe saber un ingeniero informático?

¿Cuál es una buena manera de entender que FSA (automatización de estado finito) o los lenguajes regulares están cerrados bajo diferencia, complementación e intersección, pero FST (traductores de estado finito) o relaciones regulares no lo están?

¿Cuál es la razón por la cual las instalaciones no cambian su esquema de cifrado, de modo que cuando se publique una prueba de P = NP no se verán afectados?