Criptomonedas (2ª Parte. Blockchain)

BlockchainNo poca gente cree que Bitcoin es una moda pasajera, pero que su tecnología subyacente, Blockchain, será piedra angular de una nueva revolución en servicios digitales a través de Internet. Blockchain es una idea disruptiva, pero ninguna de sus implementaciones actuales prevalecerá tal cual. En este post explico las razones.

¿Qué es Blockchain?

Muy sucintamente y a los efectos prácticos que importan, Blockchain es una sucesión de apuntes en un libro compartido (general ledger). Los apuntes no se pueden alterar ni borrar una vez escritos y, además, es posible garantizar quién fué el autor de cada apunte.

La forma en la que esto se consigue para Bitcoin es la siguiente:

• A cada usuario de la red P2P de Blockchain se le asigna una dirección que está basada en un par clave pública/privada. No comentaré aquí los detalles de la encriptación asimétrica con clave pública/privada. Todo lo que importa con respecto a Blockchain es que el par de claves son dos cadenas de caracteres que identifican unívocamente a cada usuario y, además, le permiten encriptar mensajes con destino a otro usuario de manera que: a) se pueda garantizar quién ha sido el emisor del mensaje y b) nadie excepto el receptor puede descrifrar el mensaje.

• Los pares de claves se almacenan en una cartera/monedero (wallet). La elección del término wallet es desafortunada porque los wallets no almacenan realmente bitcoins sino que el saldo de cada monedero se calcula en función de del historial de transacciones de su dirección de Bitcoin asociada.

• Además de usuarios cada uno con su dirección de Bitcoin, puede haber nodos en la red P2P. Cada nodo contiene una copia entera del general ledger que a 28 de enero de 2018 ocupaba 150Gb creciendo aproximadamente a razón de 5Gb al mes.

Blockchain size 28/01/2018

• El general ledger está dividido en bloques, los cuales para Bitcoin son actualmente de 1Mb. Otras criptomonedas usan tamaños mayores de bloque y se está estudiando ampliar el tamaño de bloque a 32Mb por razones que expondré más adelante. En Bitcoin, la velocidad de generación de bloques está ajustada para que aparezca uno nuevo aproximadamente cada 10 minutos.

• Para cada bloque es necesario generar una signatura (hash) que lo identfica unívocamante. El proceso para generar esta firma está diseñado a propósito para ser computacionalmente muy costoso y, además, para Bitcoin, se vuelve más costoso a medida que pasa el tiempo.

• Un conjunto de “mineros” cada uno con su propia copia del general ledger compiten para hallar una firma válida para el último bloque que acaba de ser generado. La signatura de cada bloque depende de la su bloque inmediatemente anterior. Cualquier alteración en un bloque, por pequeña que sea, modifica su signatura (hash). Por consiguiente, para alterar cualquier bloque una vez escrito habría que alterar también todos los anteriores.

• A los mineros se les recompensa con bitcoins por su participación en la minería. Aunque no todas las criptomonedas se generan mediante minería.

• La confianza en la veracidad de la información contenida en el general ledger se basa en un sistema de consenso entre todos los nodos que contienen copias del mismo. La versión correcta del general ledger es la que creen ser correcta al menos el 51% de los nodos. Este sistema de seguridad ha probado ser bastante robusto sin que se hayan registrado ataques importantes a Bitcoin desde su aparición en 2009, aunque otras criptomonedas cómo Ethereum basadas en Blockchain sí han sido exitósamente hackeadas.

¿Para qué puede servir Blockchain?

Es fácil imaginar como consecuencia de las características anteriormente descritas que Blockchain sirve para almacenar cualquier mensaje intercambiado entre un emisor y un receptor de manera segura, garantizando la autoría, destinatario, fecha y contenido del mensaje. Esto se usa en la actualidad para registrar transacciones comerciales en criptomonedas, pero el uso de Blockchain no está en absoluto restringido a los pagos online.

Oro uso potencial de Blockchain es como sistema de gestión de identidad ya que cada par de claves pública/privada representa a un usuario. La identidad no está restrigida a usuario. Por ejemplo, Onename proporciona el equivalente a un sistema de registro de dominios de Internet.

¿Por qué es Blockchain disruptivo?

La razón principal es que se trata de un registro distribuido que puede registrar transacciones casi en tiempo real. El problema principal de las transferencias bancarias es que no existe una base de datos sino al menos dos: la del banco emisor y la del banco receptor. Ergo primero hay que hacer el apunte de transferencia en el banco emisor, seguidamente enviarlo al banco receptor lo cual puede ser un proceso por lotes, esperar a que el banco receptor confirme la recepción y, por si acaso, ejecutar procesos de conciliación entre las transacciones registradas por ambos bancos.

Con Blockchain, el dinero se transfiere directamente de la cuenta del emisor a la del receptor y queda confirmado para siempre en el general ledger tan pronto cómo uno de los mineros obtenga la signatura (hash) del bloque en el que está registrada la transacción.

Blockchain también proporciona un medio de identidad digital independiente de la asignación de ningún gobierno o empresa a través de los pares de claves pública/privada.

Con Blockchain es imposible la confiscación de bienes. A menos que se tenga acceso al monedero del propietario, el saldo no puede pasar de una cuenta a otra sin autorización. Blockchain no impidió que el FBI le confiscase en 2013 26.000 bitcoins a Ross Ulbricht, el operador de Silk Road, pero la confiscación se consiguió obligando a Ulbricht a entregar la clave privada de su monedero.

Por poner tan sólo otro ejemplo de intercambio de datos no económicos con gestión de identidad, examinemos el caso de la información médica. Legalmente el paciente es el propietario de su historial médico y puede decidir sobre su confidencialidad. Pero esto es sólo en teoría porque en la práctica son los hospitales quienes manejan los historiales y no es raro que intenten colarle a los pacientes cláusulas de cesión de datos. Con un sistema basado en Blockchain los laboratorios podrían enviar los resultados de cada prueba directamente al paciente en lugar de al médico. Entonces el paciente podría decidir con quién compartir dicha información. Además, si el médico re-enviase la información recibida a un tercero quedaría constancia de a quién se la enviado y cuando.

¿Cuales son los problemas técnicos de Blockchain?

Antes de entrar en la discusión sobre la sostenibilidad de Blockchain, es necesario tener en cuenta que existen los llamados Blockchain 1.0 (Bitcoin) y Blockchain 2.0 (Ethereum) y se está especulando sobre un hipotético Blockchain 3.0. Aunque los problemas de escalabilidad para Blockchain 1.0 y 2.0 son similares.

Problema Nº1: Máximo número de transacciones por segundo (throughput).

Por razones principalmente históricas, Bitcoin usa un tamaño de bloque fijo en 1Mb y se genera un bloque cada 10 minutos. Debido a estas restricciones intrínsecas en el diseño, el número máximo de transacciones por segundo que soporta el Blockchain de Bitcoin es alrededor de 6. Una cifra minúscula comparada con la velocidad de pico de Visa que ronda las 56.000 transacciones por segundo.

Este problema puede aliviarse incrementando el tamaño del bloque o la velocidad de creación de nuevos bloques. La propuesta actual es incrementar el tamaño de bloque a 32Mb. Pero incrementar el tamaño y frecuencia de los bloques no es una solución exenta de inconvenientes. Para empezar se requeriría que todos (o casi todos) los nodos de la red P2P de Bitcoin empezasen aceptar los nuevos tamaños de bloque simultáneamente haciendo uso de un “fork duro” de código. Cuanto más grande sea el tamaño del bloque más costoso es mantener un nodo, y, por consiguiente se reduciría el número de nodos. Hay que tener en cuenta también el ancho de banda requerido para replicar los bloques en todos los nodos. Y, no obstante cualquier ampliación, ningún tamaño de bloque podría acomodar cualquier número de transacciones por segundo. Es decir, siempre existirá una velocidad de pico de toda la red.

No todas las criptomonedas basadas en Blockchain usan tamaños de bloque de 1Mb. Ethereum usa un tamaño de bloque variable, pero en Ethereum todavía existe otra medida llamada gas que representa el consumo de recursos requerido por una transacción. El gas está limitado a 6,7 millones por bloque y aproximadamente 3 milliones (89Kb) por transacción. Con esos parámetros, el throughput de Ethereum tiene un pico máximo de 1.000 transacciones por segundo.

Problema Nº2: Tiempo requerido para completar una transacción (latencia).

La red actual de Bitcoin puede tardar hasta 10 minutos en confirmar una transacción. El problema es que cuantos más nodos participan en una red P2P más tiempo se tarda en alcanzar el consenso de un número suficiente de ellos. El tiempo requerido para alcanzar el consenso afecta especialmente a Ethereum por ser la red que más nodos tiene, más de 25.000 frente a los menos de 10.000 de Bitcoin.

Problema Nº3: Coste económico por transacción.

Debido a lo computacionalmente costoso que es el minado, el coste total por transacción debido al precio de la energía requerida ronda los 6,2 dólares. Las transacciones sólo son gratis (o muy baratas) para los usuarios porque los mineros reciben recompensas en forma de nuevos Bitcoins cuando son los primeros en encontrar una signatura aceptable para un bloque.

Minar Bitcoins es tan caro que sólo resulta rentable hacerlo con hardware especializado cómo circuitos ASIC y en paises cómo China donde la energía eléctrica se puede comprar por entre 3 y 6 centavos el kW/h (mucho más barata que en EE.UU. y Europa donde el precio ronda los doce centavos o céntimos el kW/h).

Bitcoin Power Consumption Evolution

Problema Nº4: Impacto medioambiental del minado.

Además del coste económico, según un estudio de PowerCompare, en 2017 el minado de Bitcoin consumió 29,05TWh y supuso el 0,13% del consumo eléctrico mundial. Si la red de Bitcoin fuese un país se encontraría en la posición 61 de consumo por encima de otros 159 países.

Problema Nº5: Vulnerabilidad de la red a la concentración de mineros.

Como ya hemos mencionado, la robustez de la red de Bitcoin frente a cambios fraudulentos en la cadena de bloques se fundamenta en el consenso entre los nodos, necesitando un atacante poseer al menos el 51% de la potencia de cálculo total de la red para persuadir a los otros nodos de que cambien su información sobre uno o varios bloques. Pero según un artículo de MIT Technology Review, las cuatro principales operaciones de minería de Bitcoin tenían más del 53% de la capacidad minera media del sistema; y en el caso de Ethereum la concentración es aún mayor con tan sólo tres mineros representando el 61 % de la capacidad del sistema.

En definitiva, Bitcoin no es seguro debido a Blockchain, es seguro debido a que la cantidad de recuros necesaria para hackear la red supera el valor de los Bitcoins que podrían ser robados. El teórico ataque del 51% proporciona una probabilidad de cambiar el último bloque generado, pero incluso con el 51% re-escribir la historia de los bloques antiguos es prácticamente imposible.

Problema Nº6: Redundancia del general ledger.

Otro problema es el crecimiento continuado del tamaño del general ledger. Debido a que el coste del almacenamiento tiende a disminuir rápidamente, el tamaño total del general ledger no parece un problema acuciante. Pero podría, por supuesto, incrementar el tiempo de arranque de un nuevo nodo, ya que tendría que descargar todo el general ledger antes de empezar a operar. Además, no es imposible pensar en algún proceso de consolidación de saldos que hiciese innecesario el mantenimiento de todo el histórico de transacciones en el general ledger. Podría limitarse a, por ejemplo, 5 o 10 años quedando el resto de transacciones en algún tipo de copia de respaldo que no fuese sistemática y constantemente replicada a todos los nodos.

Para lo que la redundancia sí supone una limitación importante es en el caso de que se desease utilizar el general ledger cómo almacén de archivos grandes. Supongamos, por ejemplo, que se desease utilizar una cadena de bloques para almacenar mamografía digitales. Cada mamografía ocupa 50Mb de modo que habría que trocearla en bloques y almacenarla en más de 50 fragmentos. No obstante, existen soluciones como Filecoin para el almacenamiento distribuido de ficheros empleando tecnología Blockchain.

Problema Nº7: Dependencia de las claves públicas/privadas.

Históricamente, ningún sistema con seguridad basada en encriptación asimétrica ha tenido aceptación generalizada entre los usuarios. Los pares de clave pública/privada se utilizan extensamente todos los días en los sistemas informáticos y casi cualquier programador tiene varios pares de claves para diferentes usos. Pero al usuario medio la gestión de claves no se le da nada bien. Aunque los pares de claves se pueden proteger con una contraseña adicional fácil de recordar, en definitiva perder el monedero equivale a perder todo el saldo sin posibilidad de recuperarlo.

Aunque, en teoría, Blockchain puede servir como fundamento a un sistema de gestión de identidad, en la práctica casi todos los grandes proveedores de servicios en Internet han intentado sin éxito convertirse en el estándar de gestión de identidad. Ni siquiera el ubicuo Facebook ha conseguido que sus usuarios sean el medio de facto para identificar usuarios en la red. Microsoft está apostando últimamente por su nuevo sistema biométrico Hello en el convencimiento de que los usuarios jamás aprenderán a gestionar adecuadamente sus contraseñas.

Post relacionado: Criptomonedas (1ª Parte. Bitcoin).

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Bookmarks
Esta entrada fue publicada en Criptomonedas, Disrupción, Iniciativas que cambiarán el mundo, Tecnologías Emergentes, Tecnologías Libres. Guarda el enlace permanente.

Una respuesta a Criptomonedas (2ª Parte. Blockchain)

  1. Pingback: Criptomonedas (1ª Parte. Bitcoin) | La Pastilla Roja

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *