This article has been translated from English to Spanish.

¿Cómo funciona la minería de Bitcoin?

En la lección anterior, aprendiste qué es un minero de Bitcoin, cómo almacena transacciones nuevas en su grupo de memoria y luego inicia el proceso de «minería» creando un bloque candidato.

Si lo que acabo de escribir te suena a lengua extranjera, te recomiendo encarecidamente que empieces por la primera lección de mi Guía para principiantes sobre minería de Bitcoin.

Si todavía estás conmigo, echemos un vistazo más de cerca al bloque candidato...

Al igual que tú puedes dividirte en dos partes básicas, una cabeza y un cuerpo, un bloque candidato puede dividirse en dos partes:

  1. Cabecera del bloque (área amarilla)
  2. Cuerpo del bloque (área gris)
    Block Header and Body

Si miramos más de cerca un bloque candidato, en realidad NO solo contiene transacciones.

Candidate Block Anatomy

Cuando un minero crea un bloque candidato, este incluye un«encabezado de bloque»(área amarilla).

El «cuerpo» del bloque (área gris) contiene las transacciones.

Además de contener un montón de transacciones, un bloque candidato también contiene algunos metadatos que proporcionan un «resumen» del bloque.

Los metadatos son datos que proporcionan información sobre otros datos. En este caso, los metadatos proporcionan información sobre el propio bloque. Esta información se conoce como «encabezado del bloque».

Dentro del encabezado del bloque, hay varios datos.

Para el propósito de esta lección, voy a simplificar lo que hay dentro del encabezado del bloque.

Marca de tiempo

El primer dato dentro del encabezado del bloque es la«marca de tiempo».

La marca de tiempo indica cuándo se creó el bloque.

Timestamp

Hash del bloque anterior

El siguiente dato se denomina «Bloque anterior» o, más concretamente,«Hash del bloque anterior».

El hash del bloque anterior es el hash del bloque anterior en la cadena de bloques.

Previous Block Hash

Para entender lo que esto significa, tenemos que echar un vistazo al archivo.

Look inside blockchain

Ahora que estamos mirando dentro del archivo, podemos ver que los datos están estructurados de una manera específica.

Look inside the file and see blockchainstructure

Visualicemos esto como la cadena de bloques.

El bloque candidato que ha creado el minero debe añadirse encima del bloque más reciente.

Block must bee added on top of the most recent block

Digamos que el bloque más reciente es el que está coloreado en azul.

Most recent block in blockchain

Dado que el hash de bloque del bloque coloreado en azul es el bloque más reciente del archivo (la «cadena de bloques»), ese es el bloque sobre el que el minero quiere construir.

Piensa en el hash de bloque como un número de identificación generado a medida para un bloque.

Así que lo que hará el minero es añadir esto como el«Hash del bloque anterior»en el encabezado del bloque de su PROPIO bloque candidato.

Block hash added as Previous Block Hash of Candidate Block

Hash del «Resumen de transacción»

El siguiente dato es lo que llamaré el hash del «resumen de transacciones».

Como su nombre indica, proporciona un «resumen» de todas las transacciones del bloque expresado como una cadena de caracteres.

Sin entrar en detalles, lo que ocurre es que todas las transacciones del bloque (resaltadas en rojo) se introducen en una función hash y se hash en un orden determinado, y se obtiene un único hash.

Merkle Root

Este hash es lo que se utiliza como hash del «Resumen de transacciones».Merkle Root Example

Lo que este hash proporciona es una«huella dactilar»única basada en todas las transacciones incluidas en un bloque.

Esto ayuda a garantizar que las transacciones no hayan sido manipuladas.

Este hash de «Resumen de transacciones» se conoce en realidad como«Raíz de Merkle». 🤓

Recuerda, un pequeño cambio en los datos cambiará totalmente el hash. Esto significa que si alguien intentara alterar cualquier transacción en el bloque en el futuro, haría que el hash del «Resumen de transacciones» cambiara y fuera totalmente diferente del valor original que está en el encabezado del bloque.Merkle Root as Fingerprint

Básicamente, cambiar la transacción crearía una «huella digital» totalmente diferente y no coincidiría con la «huella digital» original.

Este cambio permitiría a todos saber al instante que una o varias transacciones han sido manipuladas.

Bloquear hash

Hasta ahora, el encabezado de bloque contiene tres datos:

  1. Marca de tiempo
  2. Hash del bloque anterior
  3. «Resumen de transacción» Hash

El siguiente paso es introducir estos datos del encabezado de bloque en una función hash.

Esto producirá un número aleatorio llamado«Hash de bloque».

(Aunque un nombre más preciso sería «Hash de encabezado de bloque», ya que es el hash solo del encabezado del bloque, no del bloque completo).

Al igual que el hash de bloque anterior mencionado anteriormente, piensa en el hash de bloque como un número de identificación generado de forma personalizada que se asignará al bloque candidato.

Run block header through hash function
¿Por qué hace esto el minero?

Para que el minero consiga que su bloque se añada a la cadena de bloques, debe encontrar un hash de bloque que cumpla con ciertos requisitos.

Si NO puede cumplir este requisito, el bloque NO se considerará válido y el minero no podrá añadirlo a la cadena de bloques.

Más concretamente, el hash de bloque debe ser un número que empiece con un cierto número de ceros.

¿Cuántos ceros exactamente?

Varía. El software del sistema Bitcoin determina el número mínimo de ceros con el que debe comenzar el hash de bloque.

Originalmente, el requisito era solo un pequeño número de ceros, pero a medida que se unían más y más mineros, el software de Bitcoin comenzó a requerir un mayor número de ceros.

Bitcoin mining process without nonce

Un minero debe generar una salida (el «hash de bloque») que satisfaga el umbral de salida establecido por el software de Bitcoin.

Este «umbral» solo especifica el número de ceros con el que debe comenzar el hash de bloque.

Es como el baile del limbo.

Bitcoin mining is like a limbo dance

Cuanto más bajo sea el umbral, más ceros se requerirán.

Cuant os más ceros se requieran, mayor será la dificultad para encontrar un hash de bloque «correcto».

Esto se debe a que cuantos más ceros iniciales haya, menos soluciones posibles habrá, lo que significa que se necesitará más tiempo para «encontrar» un hash de bloque correcto.

Encontrar un valor que comience con tres ceros como«000123...»es mucho más difícil que intentar encontrar un valor con seis ceros como«000000123...».

Aquí tienes un ejemplo reciente de un hash de bloque válido real:

0000000000000000000586b367c292dfd274bf2e67575cf8b4d00735fc1df6ff

Fíjate en cuántos ceros tiene al principio.

El «cierto número de ceros» viene de lo que se llama la«dificultad de minería». El software que ejecuta la red Bitcoin lo ajusta automáticamente hacia arriba o hacia abajo. La dificultad cambia en función del número de mineros. Cuantos más ordenadores estén minando, mayor será la dificultad y más ceros se necesitarán al principio, lo que dificultará la búsqueda del nonce ganador.

Un hash de bloque puede interpretarse como un número muy grandey debe estar por debajo de un cierto umbral. Por eso los hashes de bloque empiezan con una serie de ceros seguidos de una cadena alfanumérica. Algunos bloques tienen hasta veinte ceros iniciales, mientras que los bloques anteriores tienen tan solo ocho. El número de ceros requerido demuestra aproximadamente la dificultad de la minería en el momento en que se publicó el bloque.

¿Qué ocurre si el hash del bloque no comienza con el número de ceros requerido?

Entonces el bloque NO puede ser añadido al archivo (la «cadena de bloques»).

Afortunadamente, el minero puede hacer varios intentos.

Pero si un minero ejecutara de nuevo la función hash solo en el encabezado del bloque que contiene la marca de tiempo, el hash del bloque anterior y el hash del «resumen de transacción», siempre obtendría el mismo resultado.

El minero necesita alterar los datos de alguna manera antes de intentar volver a hacer el hash del encabezado del bloque.

Bitcoin proporciona una forma de hacerlo.

El nonce

En el encabezado del bloque, hay un campo adicional llamado«nonce»(cuadro azul claro)

Block header contains a nonce

Hay una parte especial del encabezado de bloque que los mineros pueden rellenar con un número arbitrario.

El minero es libre de poner el número que quiera.

El nonce está completamente separado de las transacciones en el bloque. Su único propósito es permitir a los mineros llenarlo con un número y cambiar el número si el hash del bloque no cumple con el requisito de comenzar con un cierto número de ceros.

Al utilizar un nonce, un minero puede manipular la salida de la función hash para «adivinar» la salida deseada.

Dado que los otros datos del encabezado del bloque no se pueden cambiar, el único dato que se puede alterar es el nonce.

Así que si el primer intento de hash del encabezado de bloque falla, el minero cambia el valor del nonce.

Puedes pensar en este proceso como si intentaras encontrar la combinación de un candado de combinación.

Combination Lock

No hay atajos posibles cuando se trata de encontrar la combinación de números que lo desbloquea. Tienes que probar todas las combinaciones posibles hasta que, en algún momento, encuentres la correcta por casualidad.

Tienes que adivinar una y otra vez hasta que tengas suerte.

Y al igual que es extremadamente fácil y rápido comprobar que la combinación de una cerradura es la correcta (o se abre o no se abre), es extremadamente fácil y rápido para el minero, y para otros nodos después, comprobar que el nonce es realmente el correcto.

El minero también compite contra otros mineros. El primer minero que encuentre un nonce que dé como resultado un hash de bloque válido obtiene el derecho de añadir su bloque a la cadena de bloques y es recompensado por ello.

Por ejemplo, supongamos que el hash de bloque debe comenzar con al menos cuatro ceros.

La única forma de encontrar un hash de bloque con el número requerido de ceros iniciales es elegir aleatoriamente un valor nonce y ejecutar el encabezado de bloque a través de la función hash.

En este escenario, el minero comienza con «0» para el valor nonce (cuadro azul claro).

Nonce is 0

Si eso no produce el resultado deseado, lo único que puede hacer el minero es volver a intentarlo con un nonce diferente.

El minero cambia el nonce y vuelve a empezar hasta que consigue encontrar un hash de bloque con al menos el número mínimo de ceros requerido. En este caso, cuatro ceros.

Recuerda que, aunque solo hayas hecho un pequeño ajuste, con una función hash, incluso el más mínimo cambio producirá resultados completamente diferentes.

Así que el primer intento del minero fue usar el número «0» en el nonce. Luego ejecuta el encabezado de bloque a través de la función hash y comprueba si el hash de bloque comienza con cuatro ceros.

Como puedes ver, el Bloch Hash solo empieza con dos ceros, por lo que NO cumple los criterios necesarios para añadir el bloque a la cadena de bloques.

Si el resultado no es válido, el minero sigue intentándolo con diferentes valores de nonce.

Como el valor «0» no funcionó, el minero puede cambiar el valor del Noncea «1»(cuadro azul claro) y luego ejecutar el encabezado del bloque a través de la función hash de nuevo.

Nonce changed to 1

Como puedes ver, el hash del bloque comienza sin ceros, así que esto tampoco funciona.

Como el valor de «1» no funcionó, el minero puede cambiar el valor del Noncea «2»(recuadro azul claro) y luego ejecutar el encabezado de bloque a través de la función hash de nuevo.

Nonce changed to 2

En este caso, el hash de bloque comienza finalmente con cuatro ceros y cumple los criterios.

¡Es un resultado de hash de bloque correcto! 🎉

Como puedes ver, es impredecible qué nonce producirá un hash de bloque con el número correcto de ceros, por lo que el minero tiene que seguir probando diferentes nonces para encontrar el valor correcto.

Los mineros pueden minar durante largos períodos de tiempo sin garantía de que alguna vez encuentren un nonce correcto. ¡La mayoría nunca lo hará!

El nonce se utiliza como contador, donde su valor se incrementa constantemente hasta que encuentra el hash de bloque correcto o algún otro minero lo hace.

Es como un juego de adivinar números.

Simplemente estás intentando encontrar un hash que comience con un cierto número de ceros cambiando el valor del nonce.

Los mineros hacen esto repetidamente... CON LA ESPERANZA de que el resultado produzca un hash de bloque que cumpla los criterios.

Cuanto más potentes sean sus ordenadores, más «conjeturas» podrán hacer.

Este proceso de «adivinar» se conoce como minería.

El minero «ganador» es recompensado con un número determinado de bitcoins (más las tarifas de transacción) llamado«recompensa de bloque».

Un minero gana la recompensa de bloque aproximadamente cada 10 minutos.

Recompensa por bloque

Dado que los mineros dedican mucho tiempo y energía a «adivinar» el nonce correcto y confirmar las transacciones en la cadena de bloques de Bitcoin, el software de Bitcoin les recompensa por su esfuerzo con:

  1. Bitcoins recién creados Cuando un minero confirma transacciones, estas se agrupan en un bloque y se añaden a la cadena de bloques de Bitcoin. Por cada nuevo bloque que se añade a la cadena de bloques, se pagan nuevos bitcoins al minero. Esto se conoce como el subsidio de bloque. La cantidad específica de bitcoins se basa en un calendario de emisión determinado por el protocolo en el momento de la creación del bloque. A partir del 20 de abril de 2024, la nueva emisión es de 3,125 BTC por bloque, tras el evento de reducción a la mitad más reciente. La próxima reducción a la mitad está programada para ocurrir alrededor del 2 de abril de 2028, cuando la recompensa por bloque disminuirá a 1,5625 BTC por bloque.
  2. Tarifas de transacción. Cuando las personas realizan transacciones con bitcoin, pagan una tarifa a los mineros para incentivarlos aún más a confirmar su transacción. Cuando un minero confirma un paquete de transacciones, también cobra todas las tarifas de cada transacción individual.

La minería es un proceso monótono y repetitivo:

Bitcoin Mining Process

Toma un encabezado de bloque con el nonce, haz un hash, comprueba si el hash comienza con un cierto número de ceros y, si no es así, repite el proceso con un nonce diferente.

Me da sueño solo de pensarlo. 😴

Así que cuando leas u oigas que la minería implica «resolver problemas matemáticos complejos», ahora sabes que no es una descripción correcta.

¡No hay nada complejo en la minería! El proceso en sí es bastante simple. Solo intentas adivinar un número correcto lo más rápido posible o lo suficientemente rápido como para ser el PRIMER minero en acertar, de modo que tu bloque candidato sea el que se agregue a la cadena de bloques. ¡Eso es todo!

La «tasa de hash» indica el «poder de adivinación» de un ordenador minero. Cuantos más hashes puedas adivinar por segundo, mayor será tu tasa de hash. Por ejemplo, 1 billón (1 000 000 000) de conjeturas por segundo equivale a una tasa de hash de 1 terrahash (TH/s).

Solo porque el proceso sea simple, no significa que sea fácil. Por eso se llama «minería». Estás intentando «desenterrar» el número correcto, lo que requiere mucho esfuerzo, similar a la minería real en el mundo real.

Ahora que el minero ha encontrado un nonce para poder generar un hash de bloque que cumpla los requisitos (empieza con al menos 4 ceros), el bloque se añade a la copia del archivo del minero (la «cadena de bloques»).

¿Recuerdas que el bloque azul era el bloque más reciente en la cadena de bloques del minero? Ya no.

Como el minero pudo adivinar el nonce correcto, pudo añadir su bloque a la cadena de bloques (en verde).

Block added to blockchain

Así que, desde un punto de vista general, el archivo del ordenador del minero se ha actualizado (indicado en verde).

Miner's blockchain updated

A continuación, el nodo transmitirá este bloque a los nodos cercanos a los que esté conectado directamente.

Los nodos lo comprobarán, verificarán y se asegurarán de que el encabezado del bloque produce un hash de bloque que cumple los criterios. En este caso, el hash de bloque debía empezar con cuatro ceros.Bitcoin miner propogates new block

Estos nodos actualizarán su archivo (la «cadena de bloques») añadiendo el bloque al archivo.

TU archivo se actualizará y ahora será la misma versión que la del minero ganador (archivoverde ).

Todas las transacciones en su mempool que forman parte de este bloque ganador pasan deestado «nuevo»(o «sin confirmar») a«confirmado»y ahora se añaden permanentemente al archivo.

Cualquier transacción conflictiva será expulsada.

Gracias al proceso de minería, solo la transacción morada entrará en la cadena de bloques.Blockchain synced across network

A continuación, estos nodos pasarán el bloque a otros nodos.Nodes will pass on the block to other nodes.

Una vez que la mayoría de los mineros acepta el nuevo bloque, todos los mineros empiezan de nuevo y crean un nuevo bloque candidato y el proceso de minería se repite.

La minería actúa como un mecanismo de clasificación de transacciones a través de una red de ordenadores, donde los bloques «minados» tienen la última palabra sobre lo que pertenece a la cadena de bloques.

El hash de bloque de este bloque recién creado será utilizado ahora por los mineros para el «hash de bloque anterior» en sus bloques candidatos.

Newly created block will now be used by miners

El hash de bloque actúa como la«cadena».

Los mineros deben incluir ahora el hash de bloque del bloque anterior en el nuevo bloque que están creando.

Miner include new block hash in new block

Por ejemplo, esto significa que para minar el bloque 101, los mineros necesitan conocer el hash del bloque 100.

Hasta que se haya minado el bloque 101, no se puede minar el bloque 102.

Esto obliga a los mineros a centrarse en el bloque 101, que a su vez incluye el hash del bloque 100. Ningún minero puede saltarse ningún bloque.

Pero en lugar de que cada bloque tenga un «número de bloque», cada bloque hace referencia al bloque anterior por su hash de bloque.

Esto implica que cada bloque está vinculado a los demás y esto es lo que crea una«cadena de bloques»conocida como blockchain.

Esta «cadena de bloques» se mantiene unida no por números de bloque, sino por hashes de bloque.

Por qué no puedes hacer trampa con Bitcoin

Digamos que todo el mundo está trabajando en el bloque 101.

Pero un minero quiere alterar una transacción en el bloque 80.

Tendría que hacer sus cambios y rehacer todos los cálculos de los bloques 80-100 Y también hacer el bloque 101.

Eso son 21 bloques de costosa computación.

No solo eso, sino que el minero tendría que hacerlo todo antes de que los demás mineros de la red Bitcoin terminen el bloque actual (bloque 101) en el que están trabajando. Esto es básicamente imposible.

Es muy difícil salirse con la suya manipulando cualquier transacción que ya forme parte de la cadena de bloques.

Esto es lo que se quiere decir cuando se describe a las cadenas de bloques como inmutables.

Prueba de trabajo (PoW)

El proceso de minería se conoce a menudo como«prueba de trabajo»o PoW.

La PoW se conoce como el«mecanismo de consenso» que utiliza Bitcoin para que todos los nodos estén de acuerdo con la copia «oficial» de la cadena de bloques de Bitcoin. Es la forma en que Bitcoin puede llegar a un consenso sin necesidad de resolución de disputas o intervención de una autoridad central.

El término «prueba de trabajo» se refiere simplemente al hecho de que se necesita «trabajo» para encontrar un hash de bloque por debajo de un cierto umbral. Y una vez que lo haces, cualquiera puede verificarlo, lo que proporciona la «prueba».

El proceso de «adivinar un nonce» y luego ejecutar el encabezado del bloque a través de la función hash se utiliza como una forma de demostrar que has realizado una cantidad requerida de «trabajo» en tu bloque.

El primer minero que produzca un hash válido podrá añadir un nuevo bloque a la cadena de bloques y recibirá una recompensa en bitcoins.

Si un gran número de mineros se une a la red Bitcoin, el PoW se ajustará para que sea más difícil encontrar un hash de bloque válido. Si este aumento de la dificultad desanima a demasiados mineros y dejan de minar, la dificultad se reducirá para que sea más fácil minar.

Este proceso, conocido como ajuste de dificultad, se produce aproximadamente cada dos semanas y garantiza que se añadan nuevos bloques a la cadena de bloques aproximadamente cada 10 minutos, independientemente de cuántos mineros se unan o abandonen la red.

Los ajustes de dificultad se realizan en función de la velocidad a la que los mineros crean nuevos bloques.

Al ajustar la dificultad de la minería, Bitcoin puede garantizar que se creen nuevos bitcoins a un ritmo predeterminado, independientemente de la cantidad de potencia informática que participe en la red.

El ajuste de la dificultad es importante porque garantiza que los mineros no puedan extraer demasiado de la oferta de bitcoins demasiado rápido.

El hardware informático especializado y la electricidad necesarios para minar también hacen que atacar la red sea prohibitivamente caro. Esto garantiza la seguridad e integridad de la cadena de bloques de Bitcoin.

Cualquiera con suficiente potencia informática para atacar la red es mejor que mine honestamente y gane la recompensa del bloque (nuevos bitcoins más las tarifas de transacción).

¿Te interesa aprender más sobre los aspectos técnicos de Bitcoin? learnmeabitoin.com ofrece una guía increíble y fácil de seguir para ayudar a la gente a entender cómo funciona Bitcoin.

Resumen

¡Enhorabuena! ¡Ahora ya sabes cómo funciona la «minería» en Bitcoin!

  • Los mineros buscan un hash aceptable que será el «hash de bloque» eligiendo un nonce, ejecutando la función hash y comprobando el resultado.
  • Si el hash no tiene la cantidad correcta de ceros a la izquierda, los mineros cambian el nonce, ejecutan la función hash y comprueban de nuevo.
  • Cuando un minero tiene la suerte de encontrar un nonce que funciona y «gana», el bloque se envía a otros nodos (incluidos otros mineros) de la red Bitcoin, cada uno de los cuales puede ejecutar la función hash con el nonce del minero ganador y verificar que funciona.
  • Si la solución es aceptada por la mayoría de los nodos, el bloque se añade a la cadena de bloques y el minero ganador obtiene la recompensa del bloque.
  • Todos los mineros se «reinician» y empiezan a trabajar en un nuevo bloque candidato, utilizando el hash del bloque extraído recientemente como referencia en su encabezado de bloque (como el «encabezado de bloque anterior»).
  • Este proceso en el que los mineros intentan «adivinar» o encontrar un nonce correcto se conoce como «prueba de trabajo» (PoW).

Ahora que hemos aprendido sobre los mineros y la minería, actualicemos nuestro mapa del sistema Bitcoin:

Bitcoin as a System (Mining Added)