15 de marzo de 2018

Para entender mejor el blockchain

Pocos entienden realmente como funcionan las cadenas de bloques. Una de las razones es, sin duda, la forma en que fue definida y construida por su inventor y la forma en que opera con el Bitcoin y casi todas las criptomonedas. pero hay que insistir en este punto: el diseño original no es el único posible y algunos de sus elementos no son en absoluto indispensables, como lo han entendido muchos programadores que desarrollan sus nuevas aplicaciones.

¿Cómo podemos llegar a distinguir y, al mismo tiempo, explicar en que consiste y cómo funciona la cadena de bloques a nivel esencial? Una buena pista es aplicar una suerte de "ingeniería inversa", no a nivel de programación sino a nivel de las ideas que se combinaron en su creación. Para ello, debemos "volver atrás" y pensar en términos de lo que existía anteriormente, siguiendo el modelo de los "adyacentes posibles", introducidos por Stuart Kauffman y explicados por Steven Johnson ("Where good ideas come from", cap.1). 
"Lo adyacente posible es una especie de futuro en la sombra, que se cierne sobre los bordes del estado actual de las cosas, un mapa de todas las formas en que el presente puede reinventarse a sí mismo. Sin embargo, no es un espacio infinito, o un campo de juego totalmente abierto. El número de posibles reacciones de primer orden es enorme, pero es un número finito. [...] Piense en ello como una casa que se expande mágicamente con cada puerta que abre. Empiezas en una habitación con cuatro puertas, cada una conduciendo a una nueva habitación que aún no has visitado. Esas cuatro habitaciones son las adyacentes posibles. Pero una vez que abres una de esas puertas y entras en esa habitación, aparecen tres nuevas puertas, cada una conduciendo a una sala nueva que no podrías haber alcanzado desde tu punto de partida original." (Johson, p.31)
Cuando Tim Berners-Lee creó la primera versión de la Web, utilizaba internet y el protocolo TCP/IP, como también un lenguaje de programación y un procesador de texto para escribir el contenido de la página, todas cosas que ya se utilizaba, y rescató la idea del hipertexto, que existía hacía tiempo, pero no se había aprovechado en computación. Pero, aunque no lo visualizó, abrió varias puertas adyacentes y, una puerta tras otra, hemos llegado al HTML 5.0, a Youtube, a Facebook y tantas otras aplicaciones. 

Del mismo modo podemos preguntarnos cuales fueron las piezas adyacentes al blockchain (las ideas preexistentes) que permitieron su aparición. Este es mi análisis:

Ideas esenciales
* La planilla de cálculo, especialmente las celdillas formando filas -> cadena de bloques.
* Las bases de datos que también pueden tomar la forma de una hoja de cálculo  <-> cada bloque es un registro y puede contener varios datos.
* La criptografía, su sistema de claves y su posibilidad de "firmar" documentos haciendo imposible una modificación sin alterar la firma.
* Los métodos de autenticación en accesos (login y password) y en documentos (firma digital).
* Las redes distribuidas (como las páginas web en múltiples servidores).

Ideas secundarias
* La aplicación de la criptografía a todo el contenido implicaba la idea de verificación de lo transmitido en dos niveles. Así, cada bloque debía tener su firma (hash) pero toda la cadena debía tener una nueva firma (hash de árbol) al agregar un nuevo bloque.
* Pero la verificación de los contenidos (datos), de cada nueva operación, puede hacerse de varias formas. El inventor optó por la validación basada en consenso para las criptomonedas. El consenso es indispensable tanto para la creación como para la mantención de un sistema totalmente nuevo y esencialmente descentralizado, para asegurar la confiabilidad. Pero ni siquiera el método de cálculo basado en la resolución de un acertijo matemático (que es la "minería"), como en Bitcoin, es esencial para la validación por consenso por cuanto no es el único posible. En muchas casos, especialmente en el caso de cadenas privadas e híbridas, es más adecuada la autenticación por una autoridad específica (piense en el Registro Civil para las identidades digitales, por ejemplo).
* La capacidad de unir programas de computación (programación modular), para que uno lance otro si se cumple cierta condición. Esto dio origen a los "contratos inteligentes", una idea genial posterior a la creación de criptomonedas. Aplican también, de otro modo, el concepto de consenso, consistente en la aceptación de los términos del contrato que, por programa, se aplicará en forma automática, sin intervención de un intermediario.
* Esta misma posibilidad abre otra puerta: la de otras formas de operar, en particular la interoperabilidad y la interconexión de las cadenas. ¡Es la idea del hipertexto ingresando en el mundo de las cadenas de bloques, que llevará a una suerte de web 3.0!

Síntesis en el siguiente gráfico:

Los recuadros superiores (negros) muestran las ideas básicas que se combinaron en el primer modelo (Blockchain 1.0) con el componente complementario del método de consenso. Con los contratos inteligentes y la validación alternativa por autenticación, se obtiene el modelo 2.0 (los cuadros azules son las alternativas para un mismo propósito, ambas aplicables) y, finalmente, con el modelo del hipertexto y de la programación modular (que también da lugar a los contratos inteligentes), obtenemos el modelo 3.0. El Blockchain 2.0 existe desde la creación de Ethereum. Estamos viendo los primeros prototipos de 3.0 y empiezan a aparecer intentos de incluir inteligencia artificial y análisis de big data: podría conducir a un Blockchain 4.0 (o, dada la velocidad de los avances, el 3.0 podría incluir también estos avances). 

Nota: Todo avance depende de la factibilidad técnica del momento: redes de telecomunicación, capacidad de los procesadores y memorias, etc. Una red de blockchain, especialmente de nivel 2 o 3 no habría sido posible cuando se inventó la web (condicionamiento contextual).

No hay comentarios:

Publicar un comentario

No se reciben comentarios.

Nota: solo los miembros de este blog pueden publicar comentarios.