¿Cómo se crea valor a partir de la nada?

Emilio S.
jesucrypto
Published in
11 min readNov 8, 2017

La minería de Bitcoin produce, en promedio, 12,5 bitcoins cada 10 minutos. ¿Cómo es esto posible?

Como dice el físico cuántico Dominic Walliman, un niño de 7 años puede comprender cualquier tema complejo si se le explica de manera correcta. En este artículo voy a intentar explicar la minería de Bitcoin de forma comprensible, quizá no para un niño de 7, pero sí para uno de 12 años. Si usted tiene 12 años o más y no entiende este artículo, no es culpa suya sino mía. Déjeme un comentario diciéndome qué no entiende y con gusto lo mejoraré.

¿En qué consiste la minería?

Muchas personas alrededor del mundo hacen minería de Bitcoin. ¿Para qué? Para ganar bitcoins. ¿Qué tienen que hacer? Asegurarse de que nadie esté haciendo trampa cuando le envía bitcoin a otra persona. En otras palabras, los mineros son como los guardianes de Bitcoin.

¿Cómo se podría hacer trampa?

Cuando una persona le envía bitcoin a otra, es como si escribiera un cheque y lo publicara en Facebook para que cualquiera lo pueda revisar. Imaginémonos que Anna le envía 2 bitcoins a Bernardo:

Anna le envía 2 bitcoins a Bernardo

Anna crea este cheque (que, en el lenguaje de Bitcoin, se llama transacción) y lo publica en la red de Bitcoin, que es como un Facebook de usuarios de Bitcoin en el que cualquiera puede verificar que los cheques son verdaderos. A partir de este momento, Bernardo tiene 2 bitcoins más en su cuenta, y Anna tiene 2 bitcoins menos.

Digamos que Málvaro quiere robarle bitcoins a Anna. Para eso, crea la siguiente transacción falsa:

Málvaro intenta falsificar la firma de Anna en una transacción

Málvaro publica esta transacción en la red de Bitcoin. Sin embargo, apenas la publica, todos los usuarios de Bitcoin se dan cuenta de que la firma es falsa y rechazan la transacción. ¿Por qué? Porque a diferencia de las firmas autógrafas que se utilizan en los cheques, Bitcoin utiliza firmas digitales. Estas firmas usan criptografía y son casi imposibles de falsificar. Mejor dicho, deje así.

Ataque por doble gasto

Consciente de la dificultad de falsificar una firma, a Málvaro se le ocurre otra idea: hacer un cheque que parezca válido, pero que en realidad esté sin fondos, y utilizarlo para comprar algo. Digamos que Anna está vendiendo su moto por 1 bitcoin. Málvaro se la compra por medio de la siguiente transacción:

Málvaro le compra una moto a Anna por 1 bitcoin

Esta transacción es válida porque ahora Málvaro está utilizando su firma verdadera. Como Málvaro tiene 1 bitcoin en su cuenta, Anna acepta la transacción y le entrega la moto. Málvaro se monta en la moto y sale a toda carrera para su casa. Apenas llega, publica la siguiente transacción en compañía de su cómplice Malissa:

La transacción no es falsa. Sencillamente tiene la fecha adulterada

En otras palabras, Málvaro está falsificando la fecha de la segunda transacción para que parezca anterior a la primera transacción. Como Málvaro sólo tiene 1 bitcoin en su cuenta, esto hace que la transacción enviada a Anna tenga fondos insuficientes, lo que deja a Anna sin moto y sin bitcoin.

Una solución simple a este fraude sería que, en lugar de mirar la fecha que aparece en el cheque, se mirara la fecha en que el cheque fue publicado. El problema es que, a diferencia de Facebook, en la red de Bitcoin no es posible saber la hora exacta en la que se publica una transacción.

La red de Bitcoin es como un salón de clase de estudiantes de bachillerato; las transacciones se propagan por la red como si fueran chismes: cada estudiante que se entera del chisme lo retransmite a sus compañeros más cercanos en la medida de sus capacidades y de su voluntad de colaboración, por lo que el chisme se demora un cierto tiempo en llegar de un lado del salón al otro. Por este motivo, si hay dos chismes contradictorios generados en lugares opuestos del salón, se produce mucha confusión. Lo mismo sucede cuando hay dos transacciones contradictorias en la red de Bitcoin.

Dos transacciones contradictorias se propagan por la red de Bitcoin

Los usuarios de la red de Bitcoin no se logran poner de acuerdo sobre cuál transacción es válida; algunos dicen que la transacción 1 es inválida porque tiene fecha posterior a la transacción 2, pero otros dicen que la transacción 2 es inválida porque recibieron primero la transacción 1. Finalmente terminan rechazando la transacción 1, así que Málvaro logra su cometido. Acaba de cometer un fraude conocido como doble gasto.

Los mineros ordenan las transacciones

Los mineros se encargan de que el escenario anterior no suceda. Ellos recolectan todas las transacciones que estén rondando por la red de Bitcoin, las organizan en orden cronológico, y las publican en un listado. Así, antes de entregarle la moto a Málvaro, Anna puede verificar que la transacción haya sido incluida en el listado y así se asegura de que Málvaro no la esté estafando.

Bernardo, en su rol de minero, publica una lista con las transacciones ordenadas

Pero resultaría muy ineficiente ordenar las transacciones una por una; en lugar de eso, los mineros las ordenan por grupos. Estos grupos de transacciones se llaman bloques. Los bloques se ordenan uno tras otro formando una cadena de bloques, también conocida como blockchain. Todos los usuarios de Bitcoin tienen una copia de la blockchain.

Los mineros crean bloques de transacciones ordenados en una cadena de bloques, o blockchain

Como vimos anteriormente, la fecha se puede falsificar. Por eso, para saber si una transacción es anterior o posterior a otra, uno no debe mirar la fecha de la transacción, sino el número del bloque en el que fue incluida. Es por eso que en lugar de una fecha, las transacciones tienen un número de bloque:

En lugar de fecha, las transacciones tienen el número del bloque en el que fueron incluidas

Los mineros merecen una recompensa

Como hemos visto, el trabajo de los mineros es supremamente valioso para Bitcoin y por lo tanto merecen una recompensa. Es por eso que ellos tienen derecho a recibir 12,5 bitcoins por cada nuevo bloque que creen. Bernardo, por ejemplo, es un minero que acaba de crear el bloque número 499 999. Antes de publicarlo, le agrega una última transacción:

Es así como se crean nuevos bitcoins

Esta transacción parece inválida porque no tiene remitente ni está firmada. Sin embargo, mientras sólo haya una transacción como ésta en cada bloque y su valor sea por 12,5 bitcoins, la red de Bitcoin la acepta como válida. Es mediante transacciones como ésta que se crean nuevos bitcoins.

Estas recompensas hacen que haya muchas personas interesadas en ser mineros. Los mineros compiten entre sí para ganárselas intentando crear nuevos bloques de transacciones lo más rápido posible.

¿Qué pasa si los mineros son deshonestos?

Dado que Málvaro no pudo hacer un doble gasto por culpa de los mineros, decide él mismo convertirse en minero. Entonces crea un bloque con las transacciones que encuentra en la red de Bitcoin, pero además le añade una transacción falsa:

Málvaro no se da por vencido intentando falsificar firmas

Sin embargo, su rol de minero no le confiere mayor poder para falsificar firmas. Apenas publica el bloque, todos los usuarios de la red de Bitcoin rechazan el bloque por incluir una transacción falsa. Por intentar robarse 2 bitcoins, ahora se quedó sin la recompensa de 12,5 bitcoins. ¡Chanfle!

Ataque por reorganización

Cuando Málvaro se entera de que Carlos está vendiendo su casa por 30 bitcoins, se consigue los 30 bitcoins prestados y le compra la casa usando la siguiente transacción:

Para comprarle la casa a Carlos, Málvaro publica una transacción en la que le envía 30 bitcoins

Esta transacción todavía no tiene un número de bloque. Esto es porque todavía los mineros no la han incluido en un bloque. Consciente de esto, Carlos todavía no entrega las llaves de su casa, sino que espera a que la transacción entre a la blockchain. En este momento, el último bloque publicado es el 499 999, lo que significa que los mineros están creando el bloque 500 000:

El último bloque publicado es el 499 999

Unos minutos más tarde, los mineros publican el bloque 500 000, donde está incluida la transacción de compra de la casa:

La compra de la casa queda registrada en el bloque 500 000

Como todo parece en orden, Carlos le entrega las llaves a Málvaro, quien se mete en su nueva casa, cierra la puerta, saca su laptop y crea la siguiente transacción:

Málvaro ya se gastó sus 30 bitcoins, así que esta transacción no es válida. A menos que…

En principio, esta transacción es inválida porque Málvaro ya se gastó sus 30 bitcoins en el bloque 500 000. Pero ¿qué pasaría si esta transacción fuera incluida en un bloque anterior al bloque 500 000? Aunque es imposible modificar los bloques antiguos, a Málvaro se le ocurre una idea: crear un segundo bloque número 499 999 en el que esté incluida esta transacción:

La transacción maliciosa queda publicada en una bifurcación de la cadena original en el bloque 499 999

Málvaro acaba de crear lo que se conoce como una bifurcación en la cadena de bloques. En general, las bifurcaciones suceden de vez en cuando y la mayoría de las veces no son producto de un intento de fraude, sino que simplemente surgen porque dos mineros crean dos bloques al mismo tiempo.

La solución a este problema es muy simple: los mineros siguen creando bloques a lado y lado de la bifurcación, y el lado que tenga más bloques gana. Esto significa que los bloques que están del lado perdedor se consideran inválidos y el minero que los hizo no gana recompensa.

Por lo tanto, el bloque que Málvaro acaba de crear es un bloque inválido. Sin embargo, si lograra que su lado de la bifurcación tuviera más bloques que el lado original, conseguiría invalidar la transacción de compra de la casa y haría que Malissa recibiera los 30 bitcoins en lugar de Carlos. No obstante, unos segundos después los mineros crean el bloque 500 001 en el lado original de la bifurcación:

El bloque de Málvaro es inválido porque su lado tiene menos bloques

Ni corto ni perezoso, Málvaro se pone a la tarea de crear muchos bloques seguidos de su lado de la bifurcación para que éste sea el más largo:

Ahora la cadena de Málvaro es la más larga, y por lo tanto, es la cadena válida

De repente, todos los mineros se dan cuenta de que la cadena en la que estaban creando bloques ya no es una cadena válida, así que dejan lo que estaban haciendo y empiezan a crear el bloque 500 005 en la cadena de Málvaro. En ese momento se crea una reorganización de la blockchain; Las transacciones que habían sido incluidas en los bloques 499 999, 500 000 y 500 001 de la cadena original ya no son válidas.

De repente, los 30 bitcoins desaparecen de la cuenta de Carlos y aparecen en la cuenta de Malissa. Carlos se queda sin casa y sin plata, y Málvaro logra hacer un ataque por reorganización.

Prueba de trabajo

Para evitar que Málvaro cree muchos bloques rápidamente, inventémonos una regla adicional: para que un bloque sea válido, la primera letra del nombre del remitente de cada transacción tiene que formar con las demás la oración “En un lugar de la Mancha de cuyo nombre no quiero acordarme”.

De esta manera, cada vez que un minero publique un nuevo bloque de transacciones, todos los usuarios de la red de Bitcoin pueden verificar si el bloque es válido o no extrayendo en orden los nombres de los remitentes de cada transacción. Por ejemplo:

El bloque 499 998 puede ser válido, mientras que el bloque 499 999 no

Aquí vemos que el bloque 499 999 no es válido porque las primeras letras de los remitentes en orden forma la oración “ENCSAM”. Sin embargo, para el bloque 499 998, las primeras letras de los remitentes forman la oración “ENÚNLU”. Si asumimos que las siguientes letras forman la oración “En un lugar de la Mancha de cuyo nombre no quiero acordarme”, entonces podemos concluir que el bloque es válido. Volvamos entonces al momento en el que Málvaro hace la bifurcación:

Málvaro hace la bifurcación. ¿Podrá ganarle a la cadena original?

Cada bloque requiere un trabajo minucioso de selección y organización de transacciones. Málvaro necesita crear una cadena más larga que la original, para lo cual está compitiendo contra todos los demás mineros, y tiene una desventaja de dos bloques: ahora sus posibilidades de ganar son mínimas. En lugar de intentar hacerse el vivo para robarse 30 bitcoins, debería más bien crear bloques en la cadena original y ganarse 12,5 bitcoins por bloque.

Esta regla de que todos los nombres de los remitentes tienen que formar la oración “En un lugar de la mancha de cuyo nombre no quiero acordarme”, se llama prueba de trabajo. Se llama así porque cuando un bloque sigue esa regla, significa que el minero que lo hizo tuvo que hacer un montón de trabajo. Cuanto más difícil sea crear un bloque, tanto más difícil es hacer un ataque por reorganización.

Si hay muchas personas haciendo minería, la dificultad de crear un bloque aumenta automáticamente, lo que significa que ahora hay que formar la oración “En un lugar de la Mancha de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero”. Si, por el contrario, menos personas están haciendo minería, ahora hay que formar la oración “En un lugar”. De esta forma se garantiza que los mineros creen un nuevo bloque cada diez minutos en promedio, y que, cuantos más mineros haya, más seguro es el sistema.

La prueba de trabajo que acabo de describir es producto de mi imaginación. En la realidad, la prueba de trabajo de Bitcoin es mucho menos romántica; consiste en aplicarle una función de hash al encabezado de cada bloque y mirar si el resultado empieza por un cierto número de ceros. Pero los detalles de la prueba de trabajo no son importantes: lo importante es el hecho de que los mineros tienen que hacer un trabajo arduo para crear cada bloque, lo cual contribuye a la seguridad de Bitcoin.

Conclusión

Si bien cada diez minutos, en promedio, aparecen 12,5 bitcoins en la cuenta de un minero en algún lugar del mundo, esos bitcoins no salen de la nada, sino que son el producto de un trabajo descomunal realizado por miles de personas y que consiste en garantizar la seguridad de Bitcoin para que personas como Málvaro prefieran mejor dedicarse a hackear bancos.

--

--

Emilio S.
jesucrypto

“Don’t ask the chicken about the chicken soup” L. von Trier