Usted está aquí

El uso y abuso del término ‘blockchain’

En los medios de comunicación y foros relacionados con la tecnología se suele comentar que lo interesante de Bitcoin es la tecnología blockchain y no tanto Bitcoin en sí mismo.  Vamos a tratar de ver que hay detrás de tal afirmación.  

Esta utilización del término blockchain es de entrada engañosa pues pretende implicar inmutabilidad y neutralidad, intentando transmitir con este término no tanto la estructura en la que se almacenan los datos (cadena de bloques de transacciones), sino más bien el mecanismo para garantizar la inmutabilidad (algoritmo de consenso). 

¿Y por qué afirman que es más interesante la tecnología blockchain que Bitcoin? Porque son escépticos de su utilidad como dinero y porque consideran que la tecnología es aplicable a muchos más casos de uso distintos del dinero. Por ejemplo utilizarla como sello de tiempo, para registrar mercancías en una cadena de suministro, para registrar y transmitir activos financieros como bonos o acciones, o para registrar y transmitir títulos de propiedad sobre inmuebles, oro, sociedades civiles o mercantiles, etc.

La idea parece atractiva, y aunque pudiera tener interés en determinados casos, pierde de vista varias cuestiones absolutamente fundamentales.  Vamos a analizar las dos cuestiones que considero más relevantes. La primera cuestión es que un sistema informático, basado en blockchain o no, es incapaz de verificar de forma autónoma la existencia y las cualidades de cosas que son externas al propio sistema. Un registro informático de monedas de oro no tiene manera de saber si una moneda de oro existe físicamente o no, si es auténtica, donde está y quien la controla. Esta información la tiene que proporcionar un tercero. Tampoco puede saber si el pollo campero que te venden en el supermercado es realmente campero y si picoteó el alpiste del suelo del corral o si se lo insuflaron por un tubo.  Esa es una información que tiene que ser introducida en el sistema informático, no es una información nativa o inherente a la propia naturaleza del sistema.  

Un sistema informático puede dar cuenta de la existencia, integridad y exactitud de un conjunto de datos solo si el ámbito y naturaleza de los datos está estrictamente circunscrita al propio sistema informático (datos nativos), como es el caso de Bitcoin.  Si los datos son externos el sistema necesitará delegar en terceros de confianza, ¡que es exactamente lo que se supone que un sistema basado en blockchain pretende evitar!

La segunda cuestión es que incluso si los datos son nativos, para alcanzar esa pretendida inmutabilidad es imprescindible que podamos verificar fácilmente y de forma autónoma todos los datos que sean relevantes, de nuevo, sin tener que delegar en terceros.  

A efectos meramente ilustrativos, vamos a asumir que “verificar fácilmente” implica que lo sea al menos para la mitad de la población mundial. Es decir, que el ciudadano medio de un país como Brasil tenga la posibilidad de verificar sin ningún coste o esfuerzo especialmente oneroso todas las transacciones pasadas, actuales y futuras de todos los usuarios del resto del mundo.   

Si partimos de un sistema naif donde no existiera ningún límite para enviar transacciones y este usuario medio mundial fuera capaz de verificar por ejemplo 100 millones de transacciones por segundo, entonces, ¿Por qué no iba a ser también posible que cualquier usuario pueda crear esa misma cantidad de transacciones? Vemos claramente que cualquiera podría saturar este sistema y dejar fuera de juego a la gran mayoría de los usuarios simplemente enviando 100 millones de transacciones falsas o más, para lo cual tan solo necesitaría una capacidad de proceso igual o ligeramente superior al usuario medio mundial. Y no solo eso, pongamos que el coste de electricidad, ancho de banda y amortización del dispositivo para enviar esas transacciones falsas es de 0,0001 dólares por segundo o 0,36 dólares por hora, e incluso concedemos que no es más costoso verificarlas que enviarlas. Si hubiera 3.000 millones de nodos conectados al sistema, un ataque con un coste de tan solo 0,36 dólares supondría un coste global de 1.080 millones de dólares cada hora.  

Por tanto, es obvio que cualquier sistema que aspire a esta cuasi total verificabilidad necesariamente ha de imponer una fortísima asimetría entre la capacidad de enviar transacciones y la capacidad para verificarlas. 

¿Cómo lo hace Bitcoin? Pues aunque el bueno de Satoshi Nakamoto tuvo la idea genial del Proof of Work por el que para enviar transacciones se exige un alto coste computacional que a su vez es muy barato de verificar, no pudo saltarse los límites de lo materialmente posible. La idea genial de Satoshi tuvo que pasar además por la prosaica condición de limitar el número de transacciones por unidad de tiempo.  Es posible que ni el propio Satoshi fuese consciente de la necesidad de esta limitación desde un principio, y por eso en la implementación original de Bitcoin no estableció explícitamente un límite máximo de tamaño de bloque, y en su whitepaper admitió como viables nodos light que no verificasen todas las transacciones. Pero después de un año de lanzar Bitcoin cayó en la cuenta, y de ahí que introdujera una limitación de 1 Megabyte al tamaño de los bloques.  Algunos no nos enteramos de la necesidad de esta limitación hasta muchísimo más tarde gracias a una gran bofetada de realidad, y lamentablemente muchos, demasiados, aún no se han dado cuenta. Por eso la charlatanería blockchain tiene el éxito que tiene cuando acusa a Bitcoin de ser lento.  No, la lentitud de la capa básica de Bitcoin no es un problema sino una virtud necesaria que habilita la verificación universal.

Decíamos al principio que es imprescindible que podamos verificar todos los datos y transacciones que sean relevantes. Este matiz es esencial porque si bien toda transacción de ámbito global es siempre relevante para la totalidad de los usuarios de Bitcoin, no tienen por qué serlo las transacciones locales entre dos usuarios concretos. Si dos usuarios bloquean un saldo de bitcoin en una “cuenta” común, para el resto de usuarios no cambia nada hasta que aquellos dos usuarios decidan finalmente repartirse el saldo como consideren oportuno.  Así, desde el establecimiento de la cuenta común hasta el reparto final estos dos usuarios pueden enviarse millones de transacciones entre sí, siempre dentro del importe de la cuenta común, sin necesidad de publicarlas.  Esta es la base de las soluciones de segunda capa como Lightning Network, y es la solución mediante la cual muy probablemente Bitcoin acabe por superar la necesaria lentitud de la capa base, que siempre será el ancla imprescindible para cualquier solución de capa superior. 

Podemos concluir que toda blockchain que prometa inmutabilidad sin ser universalmente verificable es con toda probabilidad un cuento chino. Y volviendo a las aplicaciones de la “tecnología blockchain” yo me pregunto, ¿dónde es más interesante centrar nuestro esfuerzo, en intentar monitorizar la procedencia del pollo campero o en construir un sistema candidato a ser un dinero de libre mercado?

No creo que volvamos a tener un buen dinero hasta que se lo quitemos al Gobierno de las manos, es decir, no podemos quitárselo violentamente, todo lo que podemos hacer es introducirlo astutamente de tal forma que no lo puedan parar.

F.A. Hayek, 1984