Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Cómo SHA256 y la minería protegen la red Bitcoin

¿Cómo se defiende Bitcoin por energía? ¿Y qué es un nonce? ¡Estas preguntas y más se responden dentro!

Cómo funciona la minería es fascinante. Cuando se lo explico a la gente, disfruto ver su cara en el momento en que se sorprenden. Lo explicaré aquí, pero solo sepan, ¡me estoy imaginando todas sus caras mientras sus mentes vuelan!

Tengo que empezar con las funciones hash. Sin funciones hash, Bitcoin no sería posible. Permítanme explicarles cuáles son primero, no solo para que pueda sonar genial en las fiestas, sino también porque es fundamental para comprender cómo funciona Bitcoin, en particular la minería pero también las transacciones, bajo el capó.

No necesita comprender cómo funciona Bitcoin para beneficiarse de él, al igual que no necesita comprender cómo funciona TCP/IP para usar Internet. Pero sigue, porque es bastante interesante y lo haré fácil de entender, lo prometo.

Funciones hash

Comencemos con un esquema que explicaré a continuación...

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.
(Gráfico/@jirols_btc)

A la izquierda está la entrada, el centro es la función y a la derecha está la salida. La entrada puede ser cualquier dato, siempre que sea digital. Puede ser de cualquier tamaño, siempre que su computadora pueda manejarlo. Los datos se pasan a la función SHA256. La función toma los datos y calcula un número de aspecto aleatorio, pero con propiedades especiales (discutidas más adelante).

El primer algoritmo hash seguro (SHA) fue originalmente desarrollado por la NSA y ahora hay muchas versiones diferentes (Bitcoin usa SHA256). Es un conjunto de instrucciones sobre cómo mezclar los datos de una manera muy complicada pero específica. Las instrucciones no son un secreto e incluso es posible hacerlo a mano, pero es muy tedioso.

Para SHA256, la salida es un número de 256 bits (no es una coincidencia).

Un número de 256 bits significa un número binario de 256 dígitos. Binario significa que el valor se representa con dos símbolos, 0 o 1. Los números binarios se pueden convertir a cualquier otro formato, por ejemplo, números decimales, que son los que conocemos.

Aunque la función devuelve un número binario de 256 dígitos, el valor generalmente se expresa en formato hexadecimal, de 64 dígitos.

Hexadecimal significa que en lugar de 10 símbolos posibles como estamos acostumbrados con decimal (0 a 9), tenemos 16 símbolos (Los diez a los que estamos acostumbrados, 0-9, más las letras a, b, c, d, e, yf, que tienen los valores 11 a 15). Como ejemplo, para representar el valor del decimal 15 en hexadecimal, solo escribimos “f” y es el mismo valor. Hay mucha información disponible en línea con una búsqueda rápida en Google si necesita más elaboración.

Para demostrar SHA256 en acción, puedo tomar el número 1 y ejecutarlo a través de un calculadora de hash en línea, y obtuve esta salida (en hexadecimal):

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

El cuadro superior es la entrada, el cuadro inferior es la salida resultante.

Tenga en cuenta que todas las computadoras del mundo producirán la misma salida, siempre que la entrada sea la misma y se use la función SHA256.

La salida del número hexadecimal, si se convierte a decimal, es (observe que se necesitan más dígitos para escribir):

48,635,463,943,209,834,798,109,814,161,294,753,926,839,975,257,569,795,305,637,098,542,720,658,922,315

Y convertido a binario es:

11010111000011010110010011100111111111100110100111111001110000110011101011010111000000001001110111111110101101000111111010101110100011110101101101001001110101010100010001011110001110101001001110000000001111001010010110111011011011110000111010110110100101111010111001101011100110101110011010111001101011100110101110011010111001101011100111

Solo por interés, aquí está el mismo valor en base 64.

1w1k5/5p+cM61wCd/rR+ro9bSdVEXjqTgDylu28OtpY=

Tenga en cuenta que el valor más pequeño posible que SHA256 podría devolver es cero, pero la LONGITUD sigue siendo de 256 bits. Así es como se representa el cero:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Y el mayor valor posible es:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

En decimal, eso es:

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935

En hexadecimal es:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Tenga en cuenta que hay exactamente 64 F.

El cero en hexadecimal se puede escribir simplemente como un solo cero, pero para la salida hash, son 64 para cumplir con el requisito de una salida de tamaño fijo:

0000000000000000000000000000000000000000000000000000000000000000

Aquí hay un resumen de algunos datos sobre la función hash que son vitales para apreciar:

  • La entrada no se puede determinar a partir de la salida.
  • La entrada puede ser de cualquier longitud.
  • La salida es siempre de la misma longitud.
  • La salida siempre se reproducirá de forma idéntica si proporciona la misma entrada.
  • Cualquier cambio en la entrada, por pequeño que sea, provocará una salida impredecible y muy diferente.
  • La salida es aparentemente aleatoria, pero en realidad es determinista (lo que significa que es calculada y reproducible)
  • La salida no se puede predecir. Solo se puede calcular y esto requiere una cantidad medible de trabajo por computadora (¡y horas con lápiz y papel! No lo hagas).

Ahora que comprende el concepto básico de lo que es un hash, puede comprender la explicación de cómo funciona la minería de Bitcoin.

Pero antes de continuar, te recomiendo que vayas a una calculadora hash en línea y juegues con ella un poco y pruebes por ti mismo lo que he dicho sobre las funciones hash. Me gusta este.

Minería

Comenzaré demostrando un concepto de trabajo, que es de donde proviene la "prueba de trabajo" en Bitcoin.

Vaya a la calculadora de hash en línea y escriba "Estoy creando 50 bitcoins y pagándome esta cantidad".

Escríbalo exactamente, distinga entre mayúsculas y minúsculas, incluido el punto final. Debería obtener esta salida:

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Ahora, creemos una regla que diga que para que este mensaje de pago sea válido, necesitamos que el hash comience con uno cero. Para hacer eso, tenemos que cambiar la entrada de alguna manera. Pero, como ha aprendido, no es predecible cuál sería la salida para una entrada dada. ¿Qué modificación podemos hacer para asegurar un hash que comience con cero?

Tenemos que agregar datos usando prueba y error. Pero tampoco queremos cambiar el significado del mensaje de entrada. Entonces, creemos un campo (una sección asignada) llamado "nonce" que contendrá un valor sin sentido.

Se supone que la palabra "Nonce" se deriva de "número que solo se usa una vez", pero no lo veo.

Observe a continuación cómo simplemente agregar "Nonce:" como un encabezado de campo adicional cambia la salida hash.

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

La salida aún no comienza con un "0", así que agreguemos algunas tonterías (agregué una "x" sin sentido):

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Todavía no comienza con un cero. Probé algunos caracteres más hasta que el hash comenzó con un cero:

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Aquí vamos. Ahora, de acuerdo con las reglas arbitrarias que establecí para esta versión ficticia de Bitcoin, el texto en la ventana de entrada es un bloque válido con una sola transacción que me paga 50 bitcoins.

Tenga en cuenta que los bloques de Bitcoin son esencialmente páginas de un libro mayor. Cada bloque está numerado y crea un nuevo bitcoin, además de enumerar las transacciones entre usuarios. Este registro es donde vive bitcoin.

Ahora una nueva regla. Para el siguiente bloque, se debe incluir el hash del bloque anterior. Agregaré un poco de complejidad y agregaré algunos campos más para acercarme a lo que tiene un bloque de Bitcoin real.

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

El hash comienza con una "f" y no con un "0", así que tendré que probar algunos valores en el campo nonce:

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Esta vez tuve más suerte y encontré un nonce adecuado después de solo cuatro intentos. Recuerde que para el primer bloque tomó 22 intentos. Aquí hay algo de aleatoriedad, pero generalmente no es demasiado difícil encontrar un hash válido si todo lo que estamos tratando de obtener es un cero. Hay 16 valores posibles para el primer dígito hash, por lo que tengo una probabilidad de 1 en 16 de que cualquier modificación que realice en el campo de entrada resulte en que el primer dígito hash sea "0".

Tenga en cuenta que los campos de Bitcoin son así, pero hay más detalles que no he agregado. Esto es solo para ilustrar un punto, no necesariamente para detallar exactamente cómo se ve un bloque de Bitcoin.

Agregaré un campo de tiempo al siguiente bloque, ya que lo necesito para explicar el "ajuste de dificultad" a continuación:

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Arriba está el bloque número tres. Incluye el hash del bloque anterior y ahora también he comenzado a incluir el tiempo. El nonce que encontré con éxito hizo que el hash comenzara con un cero (simplemente seguí escribiendo un "1" hasta que se cumplió el objetivo del hash).

Hay suficiente aquí ahora que puedo comenzar a explicar algunos conceptos interesantes sobre la cadena de bloques y la minería de Bitcoin.

ganar un bloque

El proceso minero es competitivo. Quien produce un bloque válido primero se paga a sí mismo una recompensa de bloque establecida. Un minero que produce el mismo número de bloque un poco más tarde no obtiene nada: ese bloque es rechazado. Explicar por qué causará demasiada distracción ahora, así que lo explicaré en el apéndice.

Después de que se encuentra el bloque tres y se transmite a todos (todos los nodos de Bitcoin), todos los mineros dejan de trabajar en lo que habría sido su versión del bloque tres. Comienzan a construir sobre ese exitoso bloque tres (haciendo avanzar su hash de bloque hacia un nuevo bloque) y comienzan a trabajar para encontrar un nonce adecuado para el bloque cuatro. El ganador publica el resultado y luego todos comienzan a trabajar en el bloque cinco, etc.

Con cada bloque, se crean nuevos bitcoins y, en conjunto, conforman el suministro total hasta el momento. Si hay muchos mineros, estadísticamente deberíamos esperar que los bloques se produzcan más rápido y, por lo tanto, Bitcoin se cree más rápido. Problema, ¿verdad?

Buscando un suministro limitado de bitcoin con una emisión predecible a lo largo del tiempo, Satoshi Nakamoto pensó en este problema e introdujo un ciclo de retroalimentación negativa para mantener la producción de bloques en intervalos de 10 minutos en promedio. ¿Cómo? A ver si se te ocurre una forma. Haga una pausa por un momento y reflexione: vea si puede encontrar la misma solución genial y siga leyendo cuando se dé por vencido.

NODOS: Menciono bloques “válidos”. ¿Así que lo que? ¿Quién está revisando? Los nodos de Bitcoin son. Un nodo de Bitcoin mantiene una copia de la cadena de bloques hasta el momento y sigue un conjunto de reglas para verificar que los nuevos bloques estén dentro de las reglas y rechazar los que no lo estén. ¿Dónde están las reglas? En el código. Una computadora que descarga el código de Bitcoin es un nodo.

El ajuste de dificultad

Cada nodo calcula el tiempo promedio para crear nuevos bloques de Bitcoin cada 2016 bloques (es por eso que se necesita el campo de tiempo). Esto es parte del protocolo y las reglas que siguen los nodos. Se aplica una fórmula para ajustar la cantidad de ceros con los que debe comenzar cada hash de bloque para que sea válido.

Estrictamente, no es la cantidad de ceros lo que se ajusta, sino un valor objetivo que el hash debe estar por debajo, pero pensar en ceros iniciales es más simple de explicar.

Si los bloques se producen demasiado rápido, el objetivo de hash se ajusta de acuerdo con reglas predefinidas que todos los nodos siguen de manera idéntica (está en su código).

Manteniéndolo simple para mi ejemplo, digamos que otras personas están compitiendo conmigo, los bloques suceden demasiado rápido y ahora el cuarto bloque necesita dos ceros en lugar de uno, de acuerdo con un cálculo imaginario.

Me llevará un poco más de tiempo obtener dos ceros, pero estamos imaginando que hay muchas otras personas compitiendo conmigo, por lo que el tiempo total que le toma a cualquiera encontrar un bloque se mantiene dentro de un objetivo.

Aquí está el siguiente bloque:

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

Fíjate en el tiempo. Pasaron más de 10 minutos desde el bloque anterior (acabo de recuperar el tiempo para demostrar). El objetivo de 10 minutos es probabilístico; nunca se sabe exactamente cuándo se encontrará el siguiente bloque.

Jugué con el teclado durante un minuto hasta que aparecieron dos ceros. Esto fue exponencialmente más difícil que encontrar un solo cero. La probabilidad de encontrar dos ceros seguidos es de 1 en 162, o una probabilidad de 1 en 256.

Si más personas se unieran a la minería y la competencia por nuevos bitcoins, eventualmente se requerirán tres ceros.

Acabo de buscar el último bloque real de Bitcoin, que contiene el hash del bloque anterior. El hash fue:

000000000000000000084d31772619ee08e21b232f755a506bc5d09f3f1a43a1

¡Son 19 ceros! Hay un 1 en 1619 probabilidad de encontrar tal bloque con cada intento. Los mineros de Bitcoin hacen muchísimos intentos por segundo, colectivamente en todo el mundo.

El número de intentos por segundo se conoce como "tasa de hash". Actualmente, la tasa de hash mundial estimada es de poco menos de 200 millones de terahashes por segundo (un terahash es un billón de hashes). Con tantos intentos por segundo, cada 19 minutos se encuentra un bloque con un hash que comienza con 10 ceros.

En el futuro, a medida que se unan más mineros, la tasa de hash aumentará, los bloques se encontrarán más rápido y la dificultad de Bitcoin se ajustará para requerir 20 ceros, lo que hará que la producción de bloques vuelva a ser de unos 10 minutos.

La mitad

Cuando comenzó Bitcoin, se producían 50 bitcoins con cada bloque. Las reglas de la cadena de bloques de Bitcoin especifican que después de cada 210,000 bloques, la recompensa se reducirá a la mitad. Este momento se conoce como "la reducción a la mitad" y ocurre aproximadamente cada cuatro años. La reducción a la mitad, combinada con el ajuste de la dificultad manteniendo los bloques en intervalos de 10 minutos, significa que alrededor del año 2140, la recompensa del bloque será de 0.00000001, o 1 satoshi, la unidad más pequeña de un bitcoin, y ya no podrá reducirse a la mitad. La minería no se detendrá, pero la recompensa por bloque será cero. A partir de ese momento, no se creará ningún nuevo bitcoin en el futuro y la cantidad de bitcoins es matemáticamente calculable y lo suficientemente cercana a 21 millones de monedas. Así es como se conoce el suministro total: se establece mediante programación.

Incluso con la recompensa del bloque en cero, los mineros aún tendrán incentivos para seguir trabajando para ganar tarifas de transacción.

¿Cómo se reduce exactamente a la mitad la recompensa del bloque? Está en el código que tienen los nodos. Saben rechazar cualquier bloque nuevo después de 210,000 donde un minero se paga a sí mismo más de 25 bitcoins. Y luego rechazar cualquier bloque después de 420,000 12.5 donde un minero se paga a sí mismo más de XNUMX bitcoins, y así sucesivamente.

Costos por Transacciones

Hasta ahora, solo he mostrado bloques imaginarios con una sola transacción: la transacción en la que el minero recibe una recompensa. Esto se llama la "transacción de base de monedas".

No lleva el nombre de la empresa, Conbase, me refiero a Coinbase. La compañía se nombró a sí misma después de la transacción de la base de monedas, no al revés. No te confundas.

Además de la transacción de base de monedas, hay transacciones de personas que se pagan entre sí. He aquí un ejemplo imaginado:

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

No me molesté en encontrar un hash real esta vez (en realidad es el hash real informado en el bloque 200,001). El nonce lo inventé por diversión, pero observe que se puede incrustar un mensaje allí.

Satoshis incluyó las palabras "Canciller al borde del segundo rescate de los bancos" en el primer bloque de Bitcoin (El bloque Génesis), después del titular del periódico del día.

Cómo SHA256 y la minería protegen la red Bitcoin Inteligencia de datos PlatoBlockchain. Búsqueda vertical. Ai.

El punto aquí es que hay 132 transacciones incluidas (no se muestran todas). Mire la transacción n.º 132: 2.3 bitcoins de una dirección están pagando 2.1 bitcoins a otra dirección y también a una segunda dirección la cantidad de 0.1 bitcoins (he usado puntos para acortar la longitud de la dirección).

Entonces, una fuente de 2.3 bitcoins paga un total de 2.2 bitcoins (2.2 + 0.1 = 2.2). ¿Falta 0.1 bitcoin? No, la diferencia la reclama el minero, como te explico.

El minero puede pagarse a sí mismo 25 bitcoins como recompensa del bloque (porque han pasado 210,000 50 bloques, por lo que la recompensa se ha reducido a la mitad de 25 a 27.33880022). Pero si observa, la transacción de la base de monedas es 2.33880022. Los 132 bitcoin extra provienen de las otras XNUMX transacciones en el bloque; todas las entradas serán ligeramente mayores que el total de las salidas. Entonces, el minero puede reclamar este bitcoin "abandonado" como pago para sí mismo. Estos se consideran tarifas de transacción pagadas al minero.

El espacio del bloque es limitado. Cuando Bitcoin era nuevo, los usuarios podían enviar transacciones sin cargo y los mineros incluían la transacción en el bloque. Pero ahora hay más usuarios y dado que pasar al siguiente bloque es competitivo, los usuarios incluyen una tarifa en la transacción para atraer al minero a elegir su transacción sobre la de otros.

Entonces, cuando la recompensa del bloque disminuye constantemente, se reduce a la mitad cada cuatro años y finalmente llega a cero, a los mineros se les paga de esta manera.

Algunos han sugerido que algún día la recompensa para los mineros no será suficiente y hará que Bitcoin falle. Esta preocupación ha sido completamente desacreditada y no la repetiré aquí.

¿Se puede reescribir un bloque?

Esto es extremadamente improbable y vale la pena entender por qué. Entonces apreciará por qué las transacciones de Bitcoin son inmutables (inmutables).

Expliqué anteriormente que el hash del bloque anterior está incluido en el bloque actual. Eso significa que cualquier edición de transacciones en un bloque antiguo cambia el hash de ese bloque editado. Pero ese hash se registra en el siguiente bloque, lo que significa que el siguiente bloque también debe actualizarse. Pero si cambia el hash registrado en el siguiente bloque, entonces su hash debe cambiar, y así sucesivamente.

Tenga en cuenta que cada vez que se cambia un hash, pierde todos estos hermosos ceros y solo queda un hash de aspecto aleatorio, y tiene que hacer todo el trabajo nuevamente para recuperar los ceros. Si hace eso para el bloque que trató de editar, entonces tiene que rehacer el trabajo para el siguiente bloque y el siguiente hasta el bloque más reciente. No puede simplemente detenerse en el bloque anterior, porque las reglas de Bitcoin son tales que la cadena de bloques más larga es el registro real de Bitcoin. Si regresa y edita un bloque hace 10 bloques, ya no tiene la cadena más larga. Tienes que agregar 10 bloques más y luego un poco más porque mientras creabas esos 10 bloques, la cadena real probablemente se hizo un poco más larga. Tienes que correr para adelantar a la cadena real. Si tiene éxito, la nueva versión se convierte en la versión real.

Repetir el esfuerzo de hash colectivo de todo el mundo desde el bloque editado hasta el bloque más reciente es la barrera para editar Bitcoin. La energía se gastó para crear esos hashes con todos esos ceros improbables y ese gasto de energía debe repetirse para editar Bitcoin. Esta es la razón por la que la energía utilizada para extraer Bitcoin no se "desperdicia"; está ahí para defender a Bitcoin de las ediciones, para hacer que el libro mayor sea inmutable sin necesidad de confiar en una autoridad central.

¿Qué sucede si dos mineros encuentran un bloque al mismo tiempo?

En realidad, esto sucede de vez en cuando, y siempre se soluciona de la siguiente manera:

Cada nodo recibirá primero uno de los nuevos bloques casi simultáneos y lo aceptará y rechazará el que llegue momentos después. Esto da como resultado una división de la red, pero es temporal.

Para ilustrar, llamemos a uno de los bloques azul y al otro rojo (no tienen color, solo tengan paciencia conmigo).

Luego, los mineros trabajan en el siguiente bloque, pero habrá una división en cuanto a qué bloque extienden la cadena.

Digamos que el minero ganador encontró un bloque usando la cadena azul. Enviarán el nuevo bloque a todos los nodos y aparecerá la cadena más larga. Los nodos que habían aceptado la cadena roja la abandonarán y adoptarán la cadena azul.

Todos los mineros que estaban trabajando en la cadena roja se detendrán y ahora trabajarán en la cadena más larga, que es la cadena azul. La cadena roja está muerta.

Apéndice

Por qué el bloque de un segundo minero no es válido

Supongamos que el bloque 700,000 acaba de ser extraído por MINER-A. Treinta segundos después, MINER-B también creó una versión diferente del bloque 700,000. Cuando MINER-B transmita esta alternativa, todos los nodos la rechazarán porque ya vieron y aceptaron el bloqueo de MINER-A. Además, en esos 30 segundos, digamos que MINER-C encontró el bloque 700,001. Dado que el bloque 700,000 de la competencia MINER-B no extiende la cadena actual (que es hasta 700,001), también se rechaza por esa razón.

Aún más interesante es que si MINER-B hubiera estado trabajando en el bloque 700,001 700,000 en lugar de una versión competidora de 700,001 700,000, habrían tenido tantas posibilidades de extraer un bloque válido XNUMX XNUMX como si finalmente hubieran tenido que encontrar un bloque alternativo XNUMX XNUMX. Entonces, tan pronto como un minero vea un nuevo bloque, debe establecer su esfuerzo en el siguiente bloque.

Sin embargo, si Miner-B encontró el bloque 700,000 un segundo después que MINER-A, entonces es posible que algunos nodos vean primero el bloque de MINER-A mientras que otros vean primero el bloque de MINER-B, según las ubicaciones geográficas y las velocidades de Internet. En ese caso, hay una bifurcación temporal y algunos mineros trabajarán para extender una versión mientras que otros mineros trabajarán para extender la otra. Como se explicó anteriormente usando los descriptores de "cadena azul" y "cadena roja", eventualmente una de las versiones se extenderá más antes que la otra y se convertirá en la versión válida por unanimidad.

Esta es una publicación invitada de Arman The Parman. Las opiniones expresadas son totalmente propias y no reflejan necesariamente las de BTC Inc o Bitcoin Magazine.

Sello de tiempo:

Mas de Bitcoin Magazine