Minería

¿Qué es la minería de bitcoin?

La minería de bitcoin es el proceso de añadir transacciones a la blockchain.

¿Cómo funciona la minería?

Todo nodo de la red bitcoin comparte información sobre nuevas transacciones.

Cada nodo almacena las nuevas transacciones que recibe en su memory pool.

Diagrama que muestra un memory pool dentro de cada nodo de la red bitcoin.

El memory pool es el área de almacenamiento temporal de un nodo para nuevas transacciones.

Cada nodo también puede intentar "minar" las transacciones de su memory pool en un archivo permanente. Ese archivo es un libro mayor de todas las transacciones de bitcoin, y se llama blockchain.

Diagrama que muestra cómo cada nodo contiene un memory pool y una blockchain.

Puedes pensar en el memory pool como si contuviera transacciones "flotantes" y en la blockchain como si contuviera transacciones "archivadas".

Sin embargo, para añadir transacciones del memory pool a la blockchain, un nodo necesita usar bastante potencia de procesamiento del ordenador.

Esa potencia de procesamiento es necesaria por la presencia de un tipo específico de desafío.

¿Cuál es ese desafío?

Bien, imagina que eres un nodo. En cualquier momento, puedes condensar las transacciones de tu memory pool en una sola "cadena" de números y letras.

Diagrama que muestra un hash de todas las transacciones del memory pool.
Esa cadena representa todas las transacciones de tu memory pool.

Esa "cadena" es básicamente un hash de las transacciones del memory pool.

Ahora, tu objetivo es hacer el hash de esa cadena con otro número (llamado nonce) para intentar obtener una nueva cadena que empiece con cierto número de ceros.

La mayor parte del tiempo, obtendrás un resultado que ni siquiera se acerca:

Diagrama que muestra un hash de todas las transacciones del memory pool junto con un nonce fallido.

Pero, si sigues, puedes dar con un número que funcione:

Diagrama que muestra un hash de todas las transacciones del memory pool junto con un nonce exitoso.
Ejemplo de función hash

SHA-256 (Texto)

Hace hash de una cadena de texto usando la función hash SHA-256.

Escribe cualquier secuencia de caracteres

0 caracteres
SHA-256
0 bytes

Esto es solo un ejemplo rápido de la función hash SHA-256. Hace hash de texto (caracteres ASCII) en lugar de bytes hexadecimales. Para hacer hash de datos brutos reales de Bitcoin con SHA-256, usa SHA-256 y HASH256.

Este es solo un ejemplo rápido de la función hash SHA-256. Hace hash de texto (caracteres) en vez de bytes hexadecimales. Usa SHA-256 y HASH256 para hacer hash de datos brutos de verdad en Bitcoin usando SHA-256.

Ahora bien, esto parece fácil, pero en realidad es muy difícil. El proceso es totalmente aleatorio, y solo puedes esperar encontrar un resultado ganador por ensayo y error. Y eso es lo que es la minería: mucho hashing (usando potencia de procesamiento) y la esperanza de tener suerte.

Pero, si tienes la suerte de encontrar un resultado hash exitoso, las transacciones de tu memory pool se añaden a la blockchain, y todos los demás nodos de la red también añaden tu bloque de transacciones a sus blockchains.

Además, también recibirás una recompensa de bloque por tu esfuerzo (que también incluye cualquier comisión de las transacciones que añadiste a la blockchain).

Diagrama que muestra una recompensa de bloque obtenida tras minar un bloque con éxito.

Nota: la recompensa de bloque ya no es 25 BTC (escribí este artículo originalmente en 2015).

El "cierto número de ceros" viene de la dificultad. Cambia en función de la velocidad de minado de la red: cuanto más rápido mina la gente, mayor es la dificultad, y más ceros se necesitan al principio (lo que ayuda a mantener constante el tiempo entre bloques).

Esta es una versión algo simplificada de cómo se añaden los bloques a la blockchain. Para más detalles, consulta bloques.

¿Por qué es importante la minería?

Buena pregunta. ¿Por qué no añadir transacciones directamente a la blockchain?

Porque la minería permite que toda la red bitcoin se ponga de acuerdo sobre qué transacciones quedan "archivadas", y así es como resuelves transacciones fraudulentas en una moneda digital.

Continúa...

Cuando haces una transacción de bitcoin, no todos los nodos de la red se enteran de ella al instante. En su lugar, las transacciones viajan por la red bitcoin pasando de un nodo al siguiente.

Diagrama que muestra una transacción propagándose por la red.

Propagación es la palabra que se usa para describir cómo viajan las transacciones por la red.

Sin embargo, en realidad es posible hacer otra transacción gastando esos mismos bitcoins e insertar esa segunda transacción en otra parte de la red.

Por ejemplo, podrías comprar una cerveza con algunos bitcoins y, acto seguido, intentar comprar rápidamente una porción de pizza con esos mismos bitcoins.

En otras palabras, una buena y vieja estafa.

Diagrama que muestra una segunda transacción propagándose por la red al mismo tiempo que la primera.

Entonces, ¿qué está pasando aquí?

Incluso sabiendo que hiciste la transacción de la cerveza primero, debido a la forma en que las transacciones viajan por la red bitcoin, la red estaría en desacuerdo sobre si deberías quedarte con la cerveza o la pizza.

Entonces, ¿cómo decide la red qué transacción conservar?

Minería, por supuesto.

El primer nodo de la red que complete el desafío añadirá las transacciones de su memory pool a la blockchain.

Diagrama que muestra cómo la red bitcoin resuelve el gasto doble cuando se mina un nuevo bloque.

Por ejemplo, si un nodo con la transacción de la pizza mina con éxito un bloque, entonces esa es la transacción que se añadirá a la blockchain, y la transacción de la cerveza queda expulsada de la red.

Parece una forma poco ortodoxa de seleccionar transacciones, lo sé, pero esta es la solución que usa la red bitcoin para llegar a un consenso al tratar con transacciones conflictivas (también conocidas como "gasto doble").

Solo hacen falta unos 10 minutos para que cada nuevo bloque de transacciones se añada a la blockchain, así que solo tienes que esperar 10 minutos para obtener una confirmación de que los bitcoins "llegaron" a una nueva dirección (y no fueron enviados a una dirección alternativa).

Otro beneficio de la minería.

Si quieres intentar controlar los bloques (es decir, las transacciones) que se añaden a la blockchain, tienes que competir para resolver los rompecabezas de los bloques con todos los demás nodos mineros de la red bitcoin.

En otras palabras: necesitas tener un ordenador con potencia de procesamiento suficiente para superar la potencia de procesamiento de todos los demás mineros de bitcoin combinados.

Lo cual es totalmente posible: solo tienes que gastarte unos cuantos miles de millones en hardware y ya estarás listo (aunque esa cantidad aumenta conforme entra más potencia de minería en la red).

Así que, en otras palabras, esta competición de minería impide que un único minero tenga control total sobre qué transacciones se añaden a la blockchain.

¿Cómo empiezo a minar?

Ya no es posible minar con el cliente Bitcoin Core.

Captura de pantalla del comando setgenerate para minar en Bitcoin Core.

Esta funcionalidad fue eliminada por completo en 2016:

Como la minería por CPU ha sido inútil desde hace mucho tiempo, el minero interno fue eliminado en esta versión y sustituido por una implementación más simple para el framework de pruebas.
Notas de lanzamiento de Bitcoin 0.13.0

Si quieres empezar a minar, tendrás que investigar cómo comprar tu propio hardware especializado y entrar en lo que se conoce como un "pool de minería".