Blockchain y Bitcoin, la tecnología de moda

blockchain bitcoin

La tecnología blockchain o cadena de bloques aparece permanentemente en los medios. Parece como si finalmente hubiésemos dado con la fórmula del portentoso bálsamo de Fierabrás que puede dar fin a todos los males. Pero mas vale conocer con un poco de profundidad de que se trata, pues lo que sirvió para curar a Don Quijote deja al borde de la muerte a su fiel amigo Sancho. Y es que quizás, como el bálsamo, la tecnología blockchain solo funcione con caballeros andantes y con locos de atar.

Júzgalo por ti mismo entendiendo qué es blockchain, cómo funciona internamente, y por qué las criptomonedas como Bitcoin se basan en esta tecnología.

criptomonedas
Bitcoin es tan solo una de las criptomonedas existentes (aunque fue la primera).

Trataré de explicarlo con las palabras mas llanas posibles, pero dado que es una tecnología, entender realmente su funcionamiento requerirá de que el lector tenga nociones básicas de cómo funcionan las firmas digitales, las claves asimétricas o qué es una función de dispersión.

Qué es blockchain

Lo primero que tenemos que tener claro es qué no es blockchain. Bitcoin no es blockchain, Ethereum no es blockchain, un contrato inteligente no es blockchain. Y sin embargo ninguno de ellos existiría si previamente no se hubiese creado la tecnología blockchain.

Como cualquier tecnología, blockchain se ha creado para tratar de resolver un problema concreto. Un problema que se ha tratado de resolver de diversas formas a través de la historia, pero que sigue presentando algunos aspectos a resolver.

En esencia blockchain sirve para mantener un registro de transacciones, de forma similar a lo que sería el libro mayor de la contabilidad de una empresa (otra aproximación al mismo problema). El libro mayor nos permite obtener el balance de cada cuenta y explicar por que el balance cambia a lo largo del tiempo.

libro mayor
Libro de contabilidad

La forma mas sencilla de entenderlo es pensar en una cuenta bancaria. La abrimos haciendo un ingreso de 100 unidades, con lo que el banco anota una transacción de entrada de fondos a la caja de 100 unidades y un abono en nuestra cuenta por el mismo importe. Nuestro saldo es +100,00.

Unos días mas tarde hacemos una transferencia de 10 unidades a Ciudadano B. Primero el banco comprobará que tengamos un saldo suficiente para autorizar el traspaso de fondos (para ello necesita consultar los libros contables). Luego se hará un cargo de 10 unidades en nuestra cuenta y un abono de las mismas en la cuenta de Ciudadano B, anotando la nueva transacción en el registro contable.

Posiblemente el banco crea adecuado cobrar por sus servicios de gestión de transacciones y mantenimiento de saldos, y asociado a la transferencia anterior de fondos nos cobre una comisión. Será una segunda transacción que pongamos implica un cargo de 0,1 unidades que se abonan en una cuenta perteneciente al banco. La nueva transacción también se registra y nuestro nuevo saldo pasa a ser de +89,9 unidades.

La tecnología blockchain no es mas que un enorme libro de contabilidad en el que quedan registradas todas estas transacciones. Cuando blockchain se usa para soportar una criptomoneda, las transacciones funcionan de una forma muy similar a la mecánica del banco expuesta anteriormente. Pero blockchain puede usarse para registrar transacciones sobre cualquier tipo de bien, material o inmaterial, susceptible de intercambio.

Por qué necesitamos blockchain

La primera aproximación al problema se diseñó en la época renacentista, fruto de la expansión del comercio frente al sistema tradicional del trueque. La solución inicial adoptada por banqueros y prestamistas consistió en usar un libro o cuaderno en el que apuntar de forma manual las transacciones.

Si esta solución no hubiese planteado problemas blockchain no sería necesario. Pero había. Y no eran menores. Describo los dos mas importantes.

Por un lado aquellos que tienen acceso al libro pueden crear entradas que no son reales, alterando así el saldo de los interesados. Tus fondos pueden ser esquilmados con tan solo una pluma, un poco de tinta y algo de mala fe. 

El libro, por tanto, se trataba de mantener seguro y a buen recaudo y solo era accesible a unas pocas personas en las que no nos quedaba mas remedio que confiar en que obrarían con rectitud. Pero ¿que pasaría si el libro desaparece? Puede perfectamente ser robado o perecer en un incendio.

caja fuerte

Para paliar el primer problema se crean instituciones dignas de confianza, que se denominan bancos, y que responden a la supervisión del poder político para asegurar que no se cometen fraudes. Pero siendo humanos los actores, el fraude es posible y la historia demuestra que por mas controles que haya habido, algunos han encontrado la forma de alterar fraudulentamente los registros contables.

Del mismo modo la informatización de la banca ha paliado en gran medida el riesgo asociado a la pérdida del propio soporte (libro) con el registro de las transacciones. Aunque una vez mas nadie está a salvo de que un sofisticado ataque informático pueda destruir completamente los registros de un banco.

Hay un problema mas. El sistema obliga a depositar nuestra confianza en que el banco y el organismo que lo supervise obrarán con rectitud. Pero, amén de la confianza, les cedemos todo el poder. El banco puede decidir cobrar por sus servicios precios que pueden o no ser acordes con el valor creado. Los organismos reguladores pueden instaurar impuestos sobre los depósitos o a las transacciones; y pueden, a través de la regulación, imponer límites a las transacciones que podemos ejecutar.

La tecnología blockchain trata de resolver estos tres problemas:

  • Crear consenso entre todos los actores del sistema respecto a qué es la verdad, creando los mecanismos para que ésta no pueda ser alterada.
  • Distribuir la información sobre la verdad de forma que no pueda ser destruida ni de forma fortuita ni por un ataque intencionado.
  • Eliminar a los intermediarios y a cualquiera que pueda imponer su voluntad sobre el resto de los actores.

En qué se basa blockchain

Blockchain (o la cadena de bloques) es una base de datos distribuida que implementa un registro de transacciones. Es tan distribuida que cada usuario de blockchain almacena una copia de la base de datos completa, con un contenido idéntico al del resto de los usuarios. Y hay tantos miles de usuarios que es hipotéticamente imposible destruir o inhabilitar todas las copias de la cadena de bloques.

De forma conjunta a todos los usuarios que comparten un mismo registro de transacciones se denomina red de cadena de bloques y a cada una de las computadoras que forma parte de esa red con su copia de la base de datos se la denomina nodo.

blockchain
Red de nodos de un blockchain

Como se verá mas adelante, cualquier nodo de esta red distribuida puede fallar sin alterar el funcionamiento del resto de la red. Y el nodo que ha fallado podrá volver a sincronizarse con el resto de los nodos cuando se subsane el problema. En realidad cualquier número de nodos puede fallar de forma simultánea sin alterar el funcionamiento de la red.

Existiendo un número de nodos los suficientemente grande, se soluciona el problema de poder perder el registro de transacciones.

El problema de la identidad

En un sistema como el bancario, cuando Ciudadano B recibe una carta (o email) indicándole que ha recibido una transferencia de Ciudadano A, el primero confía en que el banco se ha asegurado de verificar la identidad de Ciudadano A, y de hecho Ciudadano B no tiene ninguna forma de verificarlo por sus medios.

Blockchain es un sistema distribuido y descentralizado y por tanto debe proveer de algún mecanismo para que cada usuario pueda validar de forma independiente que cualquier otro actor es realmente quien dice ser.

En el mundo electrónico la forma mas segura conocida para gestionar las identidades son los certificados digitales. Un certificado digital contiene mucha información, pero para entenderlos observemos sus tres elementos principales:

  • Información referente a la identidad de la persona, empresa o ente al que identifica. Básicamente su nombre o algún tipo de identificación única.
  • Una clave pública.
  • Una clave secreta.

Las claves pública y secreta como su nombre indican se diferencian en la visibilidad que daremos de ellas. La clave pública debe ser visible y accesible a cualquier otro usuario de la red con el que necesitemos intercambiar información. La clave secreta, por el contrario, debe estar a buen recaudo y solo ser accesible por el usuario al que representa.

La seguridad se basa en la encriptación de los mensajes intercambiados.

Los mensajes se transmiten por medios inseguros. Personas ajenas al emisor o al receptor legítimos del mensaje pueden interceptar el mensaje y tratar de alterarlo en su beneficio. Por ello el mensaje se cifra usando algún algoritmo que el destinatario conoce y puede usar para descifrarlo, pero que un potencial atacante que no conozca los detalles del cifrado solo puede tratar de descifrar por un mecanismo de fuerza bruta (probando una tras otras todas las posibilidades).

Un ejemplo de algoritmo de encriptación con clave muy muy sencillo sería aquel que transforma a una letra, en la letra mas la calve. Así por ejemplo si la clave es 3, la letra ‘a’ se codifica como ‘d’, la ‘b’, como ‘e’ y así sucesivamente. El mensaje codificado de esta manera estará ofuscado y la secuencia de letras que vemos no tendrá ningún sentido. Bastará con aplicar la transformación inversa (descifrado) para volver a obtener el texto en claro. Si emisor y receptor conocen el algoritmo y la clave, no les será difícil realizar las transformaciones. Pero en este caso tan sumamente simple, cualquier curioso, con un poco de esfuerzo, puede llegar a descubrir el patrón y comenzar a aplicarlo con las claves 1 (no tiene sentido), 2 (no tiene sentido) y 3 (¡bingo!), desbaratando nuestra protección.

El método de cifrado con clave pública y secreta se denomina un mecanismo de encriptación asimétrico por que la clave que se usa para cifrar un mensaje no es la misma que se usa para descifrarlo (los simétricos usan una sola clave para ambas operaciones).

Sin entrar en los detalles matemáticos del funcionamiento, digamos que ambas claves son números muy grandes que presentan una serie de propiedades matemáticas. Lo principal a conocer es que un mensaje cifrado con la clave secreta de un usuario puede ser descifrado con su clave pública. Y viceversa.

Aunque el método de cifrado es conocido, las claves son números tan grandes que un ataque por fuerza bruta requeriría de un tiempo tal (años) que haría inútil el haberlo descifrado.

clave publica y secreta cifrado asimétrico
El cifrado asimétrico se basa en pares de claves (llaves).
Lo que se cierra con una clave solo lo puede abrir la otra.

Así si Ciudadano A quiere mandar un mensaje que solo Ciudadano B pueda ver, deberá cifrarlo usando la clave pública de Ciudadano B. Aunque muchos puedan recibir el mensaje cifrado, solo Ciudadano B podrá descifrarlo usando su clave secreta.

La firma digital

De la forma anterior se valida que solo el receptor legítimo podrá leer el mensaje. Pero el receptor podría tener fundadas dudas sobre el origen del mismo, dado que cualquiera conoce su clave pública. Además querrá cerciorarse de que el propio mensaje no ha sido alterado durante su transmisión. Para solventar ambos problemas el emisor debe firmar el mensaje digitalmente.

La firma digital no es mas que otro número muy grande que se calcula de la siguiente manera:

  • Primero se aplica al mensaje una función de dispersión (hash) que reduce un documento (mensaje) de una longitud arbitraria a un número de una longitud fija. Las funciones de dispersión que se usan para estos fines son un tanto especiales y tienen la propiedad de que dos documentos muy similares obtienen como resultado de la función hash valores muy distintos. Con una hash suficientemente grande (pongamos que de 256 bits), la probabilidad de que dos documentos diferentes generasen la misma hash es despreciable. También tienen la propiedad de que no es posible obtener el documento original a partir del valor obtenido por la función de dispersión.
  • El resultado de la función de dispersión (hash) se cifra usando la clave secreta del emisor y el numero resultante es la firma digital del documento.
firma digital

Mensaje original y firma digital son publicados o transmitidos (encriptándolos para un receptor en particular en caso de ser necesario). Cuando alguien quiere verificar la validez y autenticidad del mensaje hace lo siguiente:

  • Aplica la misma función de dispersión al mensaje original calculando así su hash. Llamémoslo H1.
  • Usa la clave publica del emisor para decodificar la firma digital del mensaje. Llamémoslo H2.
  • Si H1 y H2 coinciden exactamente, tenemos la certeza tanto de que el mensaje no ha sido alterado, como de que el emisor es aquel cuya clave pública hemos usado.

El proceso de propagación

Entonces si en blockchain Ciudadano A quiere hacer una transferencia de 10 unidades a Ciudadano B, lo que hará es mandar a un nodo de la red un documento o mensaje con los detalles de la transacción. Y lo firmará digitalmente para que no quepa duda de que el emisor es Ciudadano A y el mensaje está inalterado.

El nodo que lo reciba validará la identidad del emisor a través de la firma digital y su clave pública. Dado que el nodo tiene una copia completa del registro de transacciones, puede obtener el saldo de Ciudadano A y verificar que tiene fondos suficientes para hacer esa transferencia.

blockchain cadena de bloques propagación de operaciones confirmadas en una base de datos distribuida
Propagación de operaciones confirmadas en una base de datos distribuida

En caso afirmativa escribirá una nueva transacción en la copia local del registro y pasará la transacción a sus nodos vecinos, que repetirán la operativa y reenviarán la transacción a sus vecinos hasta que toda la red haya sido actualizada con el nuevo movimiento.

La importancia de la estructura de bloques

Como su nombre indica, un blockchain es una secuencia de bloques enlazados unos con otros en un orden cronológico, formando una cadena.

cadena de bloques
Bloques encadenados formado una secuencia cronológica

Por otro lado cada bloque no es mas que un conjunto de transacciones junto con cierta información que permite enlazarlo con el resto de los bloques en la cadena.

Una vez que añadimos un bloque a la cadena, ya no podemos alterar su contenido. Lo único que podemos hacer en una base de datos blockchain es añadir mas y mas bloques siempre al final de la cadena.

La estructura de bloques podría parecer arbitraria, pero veremos que de esta forma podemos crear una imagen consensuada de «la verdad» y en ese sentido es clave que no podamos alterar el contenido de los bloques una vez añadidos a la cadena.

Hasta este punto la discusión ha sido genérica sobre la tecnología blockchain. Para poder avanzar debemos hablar de una implementación concreta de esta tecnología, pues los detalles de cómo se asegura el proceso, como se identifican a las partes, que contiene una transacción, … dependen de la implementación concreta de cada blockchain.