Uno de los mayores escollos que sufre esta moneda virtual para convertirse en un medio de intercambio masivo es que prácticamente ninguna persona normal y corriente sabe cómo funciona. Al ser dinero sin respaldo por parte de ninguna organización de confianza, esa ignorancia provoca que no nos fiemos de él. ¿Mi dinero estará seguro? ¿Me lo podrá robar algún hacker? ¿Puede alguien crear millones de bitcoins de la nada y de este modo devaluar el valor de los que tenemos?
El problema es que para entender cómo funciona Bitcoin antes hay que comprender una serie de conceptos informáticos que, encima, ni siquiera muchos en el gremio empleamos en nuestro trabajo del día a día: firma digital, redes de pares o P2P, funciones hash... Y luego comprender cómo se aplican todos esos conceptos en la práctica para que esta moneda funcione. Así que vamos a intentarlo. Pero como la explicación intentará ser comprensible para todos, aunque no sepan de informática, me temo que será larga. Si no le interesa, siempre puede leer sólo el último punto, que son las conclusiones.
Redes de pares
Las redes P2P son un concepto relativamente conocido porque muchos las han empleado para hacerse con música y películas a través de internet sin pagar un duro. Para entender en qué consisten supongamos que tenemos a cinco personas que quieren comunicarse entre sí mediante teléfonos. Existen dos formas de lograrlo. Una de ellas sería guardar en un sexto móvil los números de teléfono de cada una de las cinco personas. Cuando queramos enviar un mensaje, se lo enviaremos a ese sexto móvil indicando cuál es el destinatario. Ese sexto móvil consultará su listado de teléfonos y se lo reenviará al interesado. A este esquema se lo conoce como redes cliente-servidor porque hay una clara diferenciación entre quienes participan en la red. Los móviles de las cinco personas son los clientes, que usan un servicio que sólo el sexto móvil, el servidor, puede proveer.
Las redes de pares, en cambio, son redes entre iguales. Todos son clientes y todos son servidores: a cada participante en la red se le llama nodo. ¿Cómo funcionaría entonces el envío de mensajes? Cada uno de los móviles guardará al menos un número de teléfono de otra persona de la red. Si queremos enviar el mensaje a una persona cuyo número desconocemos se lo enviaremos a todos los móviles cuyos números sí sabemos. Si estos conocen al destinatario le enviarán directamente el mensaje. Si no, lo reenviarán de nuevo a los números que conocen hasta que el mensaje le llegue.
Bitcoin es una red de pares en el que cada nodo guarda una copia de un inmenso libro mayor de contabilidad en el que están anotadas todas las transacciones que se han realizado con bitcoins desde que nació el sistema. Cuando se produce una transacción en bitcoins, queda registrada en al menos uno de estos nodos, que se la comunica a todos los demás. Ese registro es un fichero muy, muy grande, que crece actualmente a un ritmo de 4GB al año.
Pero si hemos dicho que Bitcoin es una red de pares y cada nodo guarda el libro de contabilidad entero, ¿significa que para usarlo tengo que reservar gigas y más gigas en mi disco duro? En realidad no. Bitcoin es una red de pares mixta; esto significa que, como diría Orwell, algunos nodos son más iguales que otros. Existen dos tipos de nodos: los normales, a los que se llama monederos, se limitan a guardar información de un usuario y enviar transacciones. Los que guardan el libro de contabilidad y anotan las transacciones se denominan mineros. Como Bitcoin es una red descentralizada no se sabe exactamente cuántos mineros hay, pero se estima que son varios miles, de modo que existen miles de copias iguales del libro de contabilidad.
Firma digital
La firma de toda la vida es fácil de entender. Tenemos un papel y hacemos en él un garabato que debe cumplir dos reglas: se puede verificar que lo has hecho tú y nadie más puede hacerlo salvo tú. De este modo se certifica que hemos dado nuestra aprobación al documento donde hemos estampado nuestra firma. Para la verificación se emplea a un tercero en el que todas las partes confían y que guarda un ejemplar de la firma, por ejemplo el Estado y sus carnets de identidad. La segunda la conseguimos complicando el garabato, aunque es un mecanismo notablemente inseguro y propenso a falsificaciones.
¿Cómo puede emularse este sistema en un ordenador? De primeras parece difícil. En una computadora toda la información se reduce a números y los números, por definición, son muy fáciles de copiar. Para solucionarlo, se emplea una técnica que emplea dos claves distintas: una pública que conoce todo el mundo y una privada que sólo conoce quien firma. Para entender cómo funciona, imaginemos que todos nosotros poseemos un número ilimitado de cajas fuertes con una característica inusual: la combinación para cerrarla es distinta a la que se emplea para abrirla, y no existe forma física de saber cuál es la combinación de cierre a partir de la combinación de apertura.
Si queremos firmar algo lo tendremos fácil. Guardamos el documento que queremos firmar en una de nuestras cajas fuertes, la cerramos con la combinación de cierre que sólo nosotros conocemos y anunciamos al mundo mundial cuál es la combinación de apertura. Cualquiera que quiera comprobar si hemos sido nosotros los firmantes puede coger la caja e intentar abrirla con esa combinación. Si se abre es que la firma es válida.
El problema de este esquema es que depende de la buena fe del firmante. Supongamos que el documento que se ha firmado dice algo así como "Debo a Juanita 10.000 euros" y, una vez en la caja fuerte, en lugar de anunciar la combinación de apertura correcta decimos otra distinta. Juanita no podrá abrir la caja fuerte y por tanto no podrá afirmar que la hemos firmado nosotros. Sería el equivalente a garabatear el documento con una firma distinta a la que aparece en el DNI y luego decir que no es la nuestra.
¿Y esto como se soluciona? Pues de una manera similar al de las firmas de verdad. Con un tercero en el que ambos confíen almacenando las firmas. En España podemos solicitar una firma digital a la Fábrica Nacional de Moneda y Timbre y emplearla, por ejemplo, para firmar nuestras declaraciones de la renta. El DNI electrónico es electrónico porque incluye una firma digital. Esas firmas constan de dos números: la combinación de cierre que sólo debemos conocer nosotros, llamada clave privada, y la combinación de apertura que debe conocer todo el mundo, llamada clave pública.
Lo que sucede al firmar es que el documento que queremos garantizar que es nuestro se cifra usando la clave privada y cuando se quiere leer dicho documento emplearemos para descifrarlo la clave pública. Vamos a ver cómo se hace con un ejemplo muy simplificado. Supongamos que el mensaje a cifrar es el número 5, la clave privada un 6 y la clave pública un 2. El método que empleamos para cifrarlo es multiplicarlo por la clave privada, dividirlo por 11 y quedarnos con el resto:
5x6=30
30/11=2
30-(11x2)=8
Ese 8 sería el mensaje que transmitiríamos. Quien quiera comprobar que el mensaje está firmado por nosotros hará la misma operación pero con la clave pública: multiplicamos el mensaje 8 por 2, que nos da 16, lo dividimos por 11 y nos quedamos con el resto que, voilá... es un 5. Es decir, el mensaje original.
Naturalmente, aunque en informática todo se transforma en último término a números, cualquier mensaje con un mínimo de significado tendrá una longitud mucho mayor que una sola cifra. A su vez, en el mundo real las claves son mucho más grandes y las operaciones matemáticas para cifrar y descifrar el contenido mucho más complicadas. El concepto es el mismo, pero el tamaño de las claves y las matemáticas utilizadas garantizan que si tenemos un mensaje y la clave pública no podremos averiguar la clave privada mientras no tengamos un superordenador haciendo cálculos durante millones de años.
El requisito para ser usuario de Bitcoin es tener un monedero, que funciona de forma similar a uno de verdad. En él guardamos nuestros bitcoins. En concreto, lo que guardaremos serán nuestras claves pública y privada. Cuando queramos gastar bitcoins, la cartera enviará a la red una especie de asiento contable en el que viene por un lado nuestra clave pública y por otro un mensaje compuesto por la cantidad de dinero y la clave pública del destinatario del mismo; mensaje que estará firmado con nuestra clave privada. De este modo todo el mundo puede coger tu clave pública, descifrar el mensaje y comprobar los datos de la transacción. Nuestro saldo en bitcoins será el resultado de sumar todos los ingresos y gastos de bitcoins en los que aparezca nuestra clave pública.
Gracias a esto, ningún hacker podrá crear transacciones falsas en las que otros usuarios le entreguen sus bitcoins. Para poder hacerlo tendría que saber las claves privadas de cada uno de ellos para poder firmar cada asiento contable, y no lo puede hacer sólo mediante las claves publicas.
Este sistema también explica otra característica de Bitcoin. Es un sistema en el que todas las transacciones están registradas en miles de ordenadores... pero que a la vez es completamente anónimo. El libro de contabilidad anota que la clave pública A ha pagado tantos bitcoins a la clave pública B pero no dice de quién es A ni de quién es B. Por eso tampoco es necesario que exista un tercero que certifique que nuestra firma es nuestra. No se puede saber, y punto.
Por otro lado, eso también nos hace más susceptibles a ser robados, al igual que sucede con el dinero en metálico frente al que guardamos en el banco. Si tienes tu monedero en el ordenador y alguien te lo roba, es lo mismo que si te robaran el monedero de verdad, ese de piel tan chulo que te regaló tu mujer. Te quedas sin bitcoins, y no hay forma de demostrar que eran tuyos, al igual que una moneda cualquiera no tiene grabado en ningún sitio quién es su propietario.
Funciones hash
Existen aún varias preguntas sin contestar. Por ejemplo, cómo se garantiza que ese libro de contabilidad, al que se llama "cadena de bloques", tenga de hecho una contabilidad correcta, en la que nadie pueda gastar bitcoins sin tenerlos previamente ni tampoco pueda pagarse más de una vez con el mismo bitcoin. Además, dado que en ese libro sólo se anotan pagos, ¿de dónde salen los bitcoins originales? Tiene que haber dinero para gastar antes de poder gastarlo.
Estas preguntas se responden explicando cómo funciona la parte realmente original y, si quieren, revolucionaria de Bitcoin, que es el método en que los asientos contables se confirman y pasan a formar parte del libro de contabilidad común. Cada diez minutos, cada uno de los nodos mineros intentará crear un bloque, que es el conjunto de transacciones que se han registrado en la red durante ese tiempo. En cuanto lo consiga, lo irá transmitiendo a los demás nodos de la red, que comprobarán que en este nuevo bloque no hay inconsistencias y la contabilidad siga siendo correcta, momento en el cual lo confirmarán. De este modo se evita que pueda pagarse más de una vez con el mismo dinero o que alguien extienda cheques sin fondos.
Expuesto así, el sistema tiene un par de fallos. Y es que sería relativamente sencillo que la red Bitcoin se inundara a la vez de bloques distintos producidos por mineros diferentes. Si esta situación se mantuviera, podría haber varios libros de contabilidad distintos circulando por la red Bitcoin con transacciones distintas. Esto se soluciona con varias medidas. En primer lugar, los nodos siempre prefieren los libros de contabilidad con un mayor número de bloques, lo que permite ir descartando libros "alternativos" que no han sido aceptados por la mayoría de la red. Para entender las demás, primero hay que explicar qué es una "función hash" y a qué se llama una "prueba de trabajo".
Las funciones hash crean un código relativamente pequeño que resume un contenido más grande. Sirven para comprobar que el contenido original no se ha alterado; al recibir tanto el contenido como el resumen podemos calcular de nuevo este último y ver si coincide con el enviado. Un ejemplo de este tipo de funciones podría consistir en sumar todos los números de un mensaje, dividirlos por diez y quedarnos con el resto, que será una sola cifra. Por ejemplo, si un mensaje consiste en los números 3, 8, 5 y 9, la suma será 25 y el resto de la división 5. Si alguien altera el mensaje y nos manda los números 3, 8, 2 y 9, el resultado será un 3; al no ser 5 sabríamos que el mensaje ha sido alterado.
Naturalmente, este ejemplo es muy burdo porque el resumen es un número de una sola cifra, de modo que todos los mensajes del mundo sólo pueden producir diez resúmenes distintos y sería muy fácil alterar el mensaje original de modo que el resumen fuera el mismo. Las funciones hash que realmente se utilizan en la práctica emplean matemáticas mucho más complicadas y resúmenes mucho más largos, de modo que sea tan sumamente improbable que dos contenidos distintos tengan el mismo resumen que en la práctica sea imposible. A ese resumen se le llama hash.
Lo que hacen los mineros cada diez minutos es coger todas las transacciones que le han llegado, incluir una extra por la cual el minero se queda con unos cuantos bitcoins para él por las molestias, añadirle el hash del último bloque confirmado en el libro de contabilidad y un número aleatorio y calcular el hash de todo esto. Esto permite que no se pueda alterar el libro de contabilidad modificando transacciones antiguas: los hash de los siguientes bloques dejarían de ser correctos.
Sin embargo, la red Bitcoin no admite sin más un bloque como el que acabo de describir. Para evitar que la red se inunde con un montón de bloques igualmente válidos y complicar el consenso sobre cuál es el bueno, los ordenadores deben esforzarse de modo que no sea trivial para ellos crear un bloque válido. Así, se les obliga a hacer un montón de cálculos extra en principio inútiles, pero que sirven para comprobar que han tenido que estar trabajando más o menos unos diez minutos para resolverlos: a eso se le llama prueba de trabajo. En concreto, lo que se pide es que el hash del bloque debe ser más pequeño que cierto número. Así que los mineros van cambiando el número aleatorio que forma parte del bloque y calculando resúmenes uno detrás de otro hasta encontrar uno bueno. La mayor parte de las veces no lo consiguen y tienen que aceptar el que ha creado otro minero. Pero tienen un buen incentivo: cuando suena la flauta, se llevan bitcoins de regalo. Al principio eran 50, actualmente son 25 y su número irá disminuyendo hasta llegar a cero cuando se alcancen los 21 millones en el año 2024.
Lo que hay que recordar
Bitcoin, de por sí, es un sistema seguro. Sólo se vería comprometido si no tiene éxito y el número de transacciones y nodos decayera tanto que fuera relativamente fácil y barato para alguien hacerse con un porcentaje de la red tan importante –igual o superior al 51% del total– que le permitiera cambiar las reglas. Pero si eso sucediera, seguramente los bitcoins tendrían un valor cercano o igual a cero y no nos importaría a nadie que además el sistema fuera inseguro.
Bitcoin es lento. Las transacciones no son inmediatas, sino que tienen que esperar a que se añadan al libro de contabilidad común, lo cual lleva al menos 10 minutos, pero puede hacerse esperar más tiempo si el minero que logra completar el bloque no ha incluido tu transacción.
Bitcoin es completamente anónimo. Sólo si nosotros publicamos en algún sitio o decimos a alguien cuál es nuestra clave pública se podría saber qué negocietes hemos tenido con bitcoins. Incluso en ese caso, como no sabríamos a quién corresponden las claves públicas de aquellos con quienes hemos hecho transacciones en bitcoins, tampoco se puede saber qué has hecho realmente, más allá de comprar o vender "algo" a "alguien" por tantos bitcoins. Esto lo hace muy atractivo para quien quiera evitar la publicidad, ya sea por temas legales, fiscales o incluso morales: muchos activistas lo usan por eso.
Bitcoin es un sistema inmune a la inflación. No se pueden crear bitcoins más que al ritmo prediseñado. Cuando su valor se estabilice, si lo hace, se puede convertir en un depósito de valor mucho más efectivo que el dinero tradicional o incluso que el oro.