¿Qué es la tecnología blockchain?
Los avances tecnológicos están introduciendo constantemente nuevas oportunidades y formas de afrontar los servicios usados diariamente. La tecnología blockchain se configura como un ejemplo disruptivo de estos nuevos avances, auspiciando cambios en la forma en la que se han entendido hasta el momento muchos de estos servicios, y generando nuevas caminos de desarrollo para las tecnologías basadas en Internet.
Hasta el momento, si bien la Red ha permitido de una forma inimaginable para muchos el desarrollo de los medios de transmisión de la información, seguía presentando limitaciones cuando se buscaba, a través de la misma, el intercambio de activos que en sí un tuviesen valor intrínseco. La facilidad para el envío de la información, iba asociada al mismo tiempo a una facilidad para “la copia” de los activos, y en gran medida a una disminución de la seguridad y la falta de confianza que en muchos casos requiere la transmisión de este tipo de activos.
La revolución auspiciada con el nacimiento del Bitcoin, y el desarrollo de las tecnologías que soportaban esta criptomoneda, promete la superación de estos problemas de confianza en la transmisión de activos con valor a través de la Red, y ha originado lo que ya por algunos expertos se ha venido a denominar el “Internet del valor”.
Si bien esta tecnología nació para dar solución a un problema financiero, como era el de la transferencia de activos monetarios entre partes sin la necesidad de participación de un tercero confiable que valide la operación (es decir que valide la disponibilidad de fondos, que identifique a las partes, o que asegure que una misma operación no se realiza múltiples veces), su utilidad ha saltado del citado ámbito, extendiéndose por otros tan dispares como la logística, la sanidad, o la gobernanza.
Cuando hablamos de Blockchain o tecnología blockchain en realidad nos referimos a un conjunto de tecnologías y conceptos que unidos permiten definir nuevas formas de encarar muchos de los servicios cotidianos que prestados por las empresas (ya sean financieros, logísticos, sanitarios, de gobernanza, …) con un considerable ahorro de costes, tiempo, solventando la necesidad de intermediarios o personas de confianza en los mismos, y garantizando la integridad de los datos y la seguridad de las operaciones.
El surgimiento de la “Blockchain”, ha sido posible gracias al avance que durante los últimos años, han experimentado tecnologías como, las comunicaciones peer to peer –P2P, o las técnicas criptográficas, y el desarrollo de nuevos conceptos como el asociado a “distributed ledger technologies” (tecnologías de registro distribuido), o los protocolos de consenso en redes distribuidas.
La combinación de estas tecnologías y conceptos hacen posibles que tanto ordenadores como otros dispositivos conectados a una red, puedan gestionar y compartir de forma segura información y realizar operaciones entre ellos, compartiendo un registro distribuido descentralizado y sincronizado de las mismas, en vez de utilizar una base de datos tradicional.
Inicialmente se identificaron 5 rasgos básicos de esta tecnología: descentralización -por la ausencia de un tercero de confianza-, seguridad –gracias al uso de tecnologías criptográficas-, distribución y consenso – al hacer que miles de usuarios dispongan de los mismos datos y operen coordinadamente – y carácter público –ya que estaba abierta al uso de cualquier usuario-. Sin embargo esta 5ª propiedad con la difusión de la misma tecnología ha dejado de ser globalmente aplicable, ya que, como veremos, su versatilidad y potencia ha originado el nacimiento de redes privadas.
Esta vinculación entre bloques y su ordenación lineal, ha dado pie a la comparación de la blockchain, con una cadena, en la que cada registro de la base se corresponde a un eslabón de la misma, que está firmemente asido al utilizar códigos criptográficos en los que uno de los puntos de entrada es “la identificación” del bloque previo.
¿Qué es la Blockchain?
La Blockchain (o cadena de bloques), es simplemente una base de datos lineal, distribuida, sincronizada y ordenada temporalmente, en la que cada registro o bloque se vincula con el anterior.Esta vinculación entre bloques y su ordenación lineal, ha dado pie a la comparación de la blockchain, con una cadena, en la que cada registro de la base se corresponde a un eslabón de la misma, que está firmemente asido al utilizar códigos criptográficos en los que uno de los puntos de entrada es “la identificación” del bloque previo.
Cada uno de los eslabones de la cadena es un registro de la base de dato en el que usando técnicas criptográficas y una datación temporal se almacena la información que permitirá el desarrollo de diferentes servicios.
Es normal también visualizar la blockchain como un conjunto de bloques apilados, y entrelazados, usando el concepto de altura para referirnos a la distancia entre el primer bloque conocido normalmente como “bloque génesis” y cualquier de los otros bloques de la cadena. Dado que normalmente el tiempo de generación de cada uno de los bloques está tasado por los protocolos internos de funcionamiento de la blockchain, existe una correlación directa entre el concepto altura y las dataciones temporales de cada bloque.
Cuando el uso de la tecnología blockchain se aplica a transacciones financieras, se suele decir que la blockchain es el libro de registros contables (ledger en inglés). Un libro inmutable y que contiene la historia completa de todas las transacciones que se han ejecutado.
¿Qué es un bloque de la red y como se genera?
De las analogías anteriores surgen de forma gráfica dos propiedades básicas de cada uno de los registros de la blockchain.
- Por un lado cada elemento de la blockchain es un contenedor o bloque en el que se puede almacenar diferentes tipos de información.
- Por otro lado y al mismos tiempo es un eslabón de una cadena, que se enlazado mediante técnicas criptográficas al eslabón que le antecede y al eslabón que le sucede.
Cada bloque dentro de la cadena se identifica mediante un código llamado “hash”. Dicho código se genera utilizando un algoritmo criptográfico.
Nota: Una función hash (o función resumen) es un algoritmo matemático que transforma una cadena de entrada de datos en otra cadena de datos de longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud. Se dice que la función resumen es inyectiva cuando cada dato de entrada se mapea a un valor resumen diferente. Asimismo, estas funciones usan algoritmos unidireccionales, es decir que a partir del hash, no es posible volver a reconstruir los datos insertados, por lo tanto el “hash” no sirve para identificar un contenido, pero no para saber qué es lo que contiene.
La forma de vincular un bloque con el anterior es a través de este código “hash”, para la generación del mismo, uno de los datos que se usará es el código “hash” del bloque anterior (conocido como bloque padre).
Al ser la función hash inyectiva cualquier modificación de los datos contenidos en el nuevo bloque, o del hash del Bloque anterior, originaría que se modificase el hash del nuevo bloque. Generándose de esta forma tanto un vínculo con el bloque anterior, como un mecanismo de verificación de la integridad de la información relativa a cada bloque. Por tanto cualquier modificación de un bloque no solo afecta a su sucesor, sino que afectaría a todos los bloques que le suceden. Este efecto cascada asegura que, una vez que un bloque tiene varios sucesores, no puede ser cambiado sin forzar un cambio de todos los bloques siguientes, con el consiguiente esfuerzo de generación.
La secuencia de los hashes que unen cada bloque a su padre crea una cadena que se remonta hasta el primer bloque creado, que como hemos dicha anteriormente se conoce como el bloque génesis.
Siendo la existencia de esta larga cadena de bloques la que confiere solidez a los datos que incluidos en la misma, por la dificultad que requeriría alterarlos.
Por otro lado y tal como hemos dicho al principio otras dos de las propiedades fundamentales de esta base de datos es que es distribuida y que está sincronizada entre todos los nodos que componen la red.
Cuando hacemos mención a que es distribuida, nos referimos a que no existe una sola copia de la misma, sino que existen tantas como nodos compongan la red. Esta propiedad si bien es un seguro ante cualquier intento de modificación, conjuntamente con la necesidad de sincronización entre todas las copias origina uno de los principales problemas (o retos) a los que se ha enfrentado para su desarrollo, y este no es otro que el del “consenso”. Es decir, que mecanismo se usan para asegurar que la información disponible en todas las copias de dicha base de datos es correcta, e incluso como se consigue ante una modificación de una de las copias, analizar su veracidad.
El problema del consenso.
Cuando tenemos un sistema distribuido uno de los problemas fundamentales al que nos enfrentamos es el problema del consenso. Dicho problema consiste en que mecanismo se deben establecer para poner de acuerdo los diferentes elementos del sistema distribuido en algo. A vece este problema se conoce como el problema de los generales bizantinos:
Supongamos un escenario de guerra en el que tenemos un grupo de generales bizantinos que están asediando una ciudad desde distintos lugares y tienen que ponerse de acuerdo para atacar o retirarse de forma coordinada. Entre los generales hay solo uno que puede cursar la orden por ser el comandante. El resto se dice que son tenientes.
Los generales se comunican a través de mensajeros y las dos posibles órdenes del comandante son "atacar" y "retirarse".
Uno o más de los generales puede ser un traidor (al resto se les llama leales), por lo que su objetivo es conseguir que todos los generales leales no se pongan de acuerdo. Para ello pueden ofrecer información errónea. Por ejemplo, si el comandante es el traidor, podría mandar órdenes contradictorias a los distintos tenientes. Si el teniente es un traidor podría indicarles a otros tenientes, con el fin de confundirlos y que creyeran que el traidor es el comandante, que el comandante les envió la orden contraria a la que realmente les envió.
Para poder solucionar estos problemas se establecen los mecanismos de consenso. En el caso que nos ocupa, y al tener múltiples nodos cada uno con una versión de la base datos, tenemos que encontrar un mecanismo que permitan ponernos de acuerdo en cuál es la versión correcta de la Base de datos, cuando nos encontremos antes dos opciones.
La versión más básica del consenso es que la copia verdadera será la aquella que tenga más respaldos por parte de los nodos, es decir la que se encuentre en la mayoría de los nodos es la copia correcta. Este sistema relativamente sencillo, se suele complementar con otro serie de algoritmos o pruebas, encaminados a dificultar una posible vulneración de los datos. Los tres sistemas o pruebas de consenso más conocidos son:
- Proof of Work (PoW). Esta variación del mecanismo de consenso, está basada en que no todos los nodos pueden “votar” directamente. Para poder introducir un cambio y por tanto alterar la base de datos (lo que hemos asimilado a votar), es necesario resolver con antelación un problema matemático, lo que equivale a invertir forzosamente cierta capacidad de cómputo y cantidad de tiempo (es decir incurrir en un gasto monetario). Como se ha comentado anteriormente, para conseguir que una “modificación errónea” de la base de datos sea aceptada por todos los nodos, la mayoría de ellos tiene que haber llegado a la misma solución. De ahí que, si intencionadamente queremos alterar la blockchain, debemos actuar al menos sobre el 51% de los nodos, lo que en sistemas elevado número de nodos requería una capacidad de cálculo y un gasto económico abismal.
- Proof o Stake (Pos). En el caso de este segundo mecanismo de consenso, el peso de cada nodo en una supuesta votación se establece en función del número de recursos que posee del sistema global. Es decir, en este caso en realidad para poder validar una “modificación errónea” en la base de datos, es necesario disponer del 51% de los recursos (así en una criptomoneda que haya optado por el mecanismo de consenso, este 51% puede equivaler a poseer el 51% de las divisas en circulación, y no parece lógico que alguien que posee el 51% del sistema busque perjudicar el propio sistema validando una operación errónea). Este sistema inicialmente es más sostenible que el mecanismo de PoW, ya que el consumo de energía se reduciría drásticamente, ya que no estaría enfocado a resolver un problema matemático, sino simplemente a validad la cantidad de recursos que se disponen del sistema. El problema más importante de los sistemas PoS puros es que, en caso de una bifurcación (más adelante en este artículo explico que se entiende por una bifurcación) en la cadena principal, los participantes no tendría por qué decidir, por una de las dos cadenas, y podría seguir apoyando ambas soluciones, ya que esto no les supone un gasto de recursos excesivos.
- Proof of Importance (PoI). Proof-of-Importance es un mecanismo de consenso similar al PoS, pero introduciendo algunas modificaciones. Así para este mecanismo el peso de cada nodo en una supuesta votación no se asigna en base a los recursos que posee del sistema sino en base a la participación del nodo en el sistema. Es decir, si volvemos otra vez al ejemplo de las criptomonedas, en vez de tener en cuenta sólo los recursos (cantidad de monedas, tiene también en cuenta que ha hecho con ellos, es decir el número de transacciones que ha registrado. Esto resulta ser un incentivo muy útil ya que previene que los participantes del sistema se dediquen a acumular dinero. En PoI, el que más dinero mueve, más peso tiene dentro del sistema.
¿Qué es un Fork o bifurcación de la cadena?
Como hemos mencionado las redes blockchain, están compuesta por componentes de hardware, sobre los que se corren programas informáticos, y por tanto estarán sujetos a cambios y mejoras, máxime cuando en la mayoría de los casos la parte de software utilizado se ha desarrollado sobre estándares de código abierto.
Comúnmente, dentro del marco del desarrollo del software se utiliza el término “fork” o bifurcación para designar un proyecto que se crea siguiendo una dirección distinta de la principal u oficial, y tomando como punto de partida el código fuente del proyecto ya existente.
En el ámbito de las redes blockchain, estas bifurcaciones intencionadas pueden ser usadas tanto para crear nuevos proyectos partiendo del anterior como para actualizar o mejorar el proyecto en cuestión. Aunque también pueden haber surgido por una falta de consenso entre los desarrolladores del sistema, al valorar la solución a un problema.
Normalmente se habla de bifurcaciones suaves o “soft forks”, cuando la aplicación, de la misma permite una compatibilidad con los protocolos existentes y por tanto o bien se podrán seguir utilizando los anteriores protocolos, o los nuevos. Por otro lado, se usa el termino de bifurcaciones duras o “hard forks” cuando no existe dicha compatibilidad y el usuario se ve obligado a elegir entre una de las ramas de la cadena de bloques generada.
Así cuando se implementa una bifurcación suave, los nodos de la red que se actualicen a la misma solo podrán verificar o aprobar las operaciones que se realicen atendiendo a las nuevas reglas, mientras que los nodos existentes que no se actualicen podrán seguir validando tanto las operaciones realizadas con las reglas antiguas, como las validadas con las reglas nuevas.
Es decir gráficamente es como si en una misma cadena tuviésemos dos tipos de eslabones, pero se mantiene la linealidad de la misma y la capacidad de engarzar ambos tipos de eslabones dentro de la cadena. Igualmente en nuestro sistema existirán nodos que pueden generar eslabones nuevos y eslabones viejos y otros nodos que solo están capacitados para generar los nuevos eslabones.
Con el paso del tiempo, normalmente los nodos desactualizados desaparecen del sistema, volviendo a tener un único tipo de eslabones.
Por otro lado, cuando se produce una bifucarción dura o “hard fork”, solo los nodos que se actualicen al nuevo software podrán aplicar las nuevas reglas y por tanto solamente ellos podrán generar nuevos bloques en la cadena siguiendo los nuevos protocolos. Los nodos que no se actualicen seguirán haciendo uso de los protocolos antiguos y generando bloques que no son compatibles con el nuevo estándar.
Gráficamente, la implementación de un proceso de bifurcación fuerte o “hard fork”, se puede asimilar a la generación de una nueva rama en la cadena de bloques. En este caso a partir de un determinado momento, la cadena se divide con la aparición de dos tipos dos ramas y dos tipos de eslabones que no son intercambiables.
Cuando las bifurcaciones se usan para acometer una actualización de la red, es normal establecer un umbral de adopción para medir el grado de aceptación de dicha mejora. En este caso alcanzado el umbra establecido, puede darse el caso que los nodos no actualizados dejen de tener la capacidad para seguir trabajando sobre la red.
Al igual que las bifurcaciones se puede producir de manera intencionada, también pueden surgir de forma espontánea en el propio proceso de generación de bloques, sin que se haya implementado un cambio. Así, si bien un bloque solo tiene un padre, temporalmente podría tener varios hijos. Los hijos múltiples surgen durante una bifurcación temporal de la cadena de bloques, una situación que se produce cuando se validan diferentes bloques casi simultáneamente por diferentes nodos. Con el tiempo, una de las dos cadenas se convierte por su peso en la cadena principal y la "bifurcación" se resuelve automáticamente por los mecanismos de consenso.
Diferentes tipos de Blockchains
En función del nivel de acceso y modificación de los registros de la cadena de bloques pueden definirse tres tipos de Blockchain: públicas, privadas e híbridas. A continuación se detallan brevemente las principales características de cada uno de estos tipos:
- Blockchain Públicas: como su nombre indica una blockchain pública es aquella que a través de una conexión a Internet y el uso del software apropiado es completamente accesible para cualquier usuario. Es decir, un usuario normal no solamente tiene acceso a los diferentes registros que componen la cadena de bloques, sino que además descargándose el software correspondiente puede convertirse en un nodo de la red, así como validar la creación de nuevos registros. Los ejemplos más conocidos de este tipo de redes son Bitcoin y Ethereum.
- Blockchain privada: a diferencia de una Blockchain pública, no es accesible a cualquier persona, requiriéndose por tanto una invitación para poder participar en la misma. Es decir los permisos de uso a todos los niveles se mantienen centralizados en una organización. En general responden a necesidades particulares de empresas o grupos de empresa y por tanto están orientada a dar servicios a las mismas. Ejemplos de blockchain privadas son Hyperledger (de la Fundación Linux), R3 (un consorcio de bancos internacionales para desarrollar soluciones bancarias de blockchain privada) o Ripple (un protocolo para facilitar las transferencias internacionales de dinero). Como ya se comenté en apartados anteriores este tipo de redes choca contra algunas de las propiedades inicialmente inherentes de una red Blockchain, que es ser pública y descentralizada, ya que en cierto modo sigo existiendo un organismo central que controla el desarrollo de la red.
- Blockchain híbridas: son una combinación de las públicas y privadas. En ellas por regla general todo el mundo tiene acceso a los registros, mientras que para convertirte en un nodo de la red requieres de una invitación. Algunos ejemplos de blockchains híbridas Evernym, una blockchain híbrida que quiere facilitar la gestión y obtención por cada persona de una Identidad Digital propia, es decir Soberana (Self Sovereign Identity) e independiente del dispositivo, la web, etc; Dragonchain, o Stellar (una red que surgió como una bifurcación de Ripple)
¿Utilidad de la Blockchain?
El origen de la Blockchain está estrechamente ligado a la búsqueda de una solución a un problema financiero, sin embargo las capacidades y características de esta tecnología hacen que su aplicación sobrepase este ámbito y permita encontrar usos en múltiples sectores.
La disrupción tecnológica y hasta de cultura, que los conceptos asociados a esta nueva tecnología hacen de la misma una herramienta con unas posibilidades enormes, en una sociedad en la que cada día más se requieren soluciones prácticas, escalables, y fiables a problemas y servicios que trascienden las divisiones nacionales. Así la eliminación del “tercero de confianza” derivando la identificación de los usuarios o la validación de las operaciones a los propios nodos de la red, permite el desarrollo de soluciones más autónomas y confiables y al mismo tiempo más rápidas y trasparentes. Todo esto ha hecho que su aplicación esté pasando del plano conceptual a la realidad.
A continuación se listan algunos de los sectores y posibles aplicaciones de esta tecnología:
- Financiero. Permitiendo realizar de forma rápida, segura y barata, pagos directos entre usuarios, sin necesidad de una entidad intermediaria. Asimismo la implantación de lo que se ha venido a denominar como “Smart contracts” o contratos inteligentes, permitirá que muchas de las funciones típicas de un banco (como puede ser los préstamos de dinero, la gestión de cobros o pagos, los cambios entre divisas, etc) se puedan realizar directamente entre particulares.
- Seguros. El desarrollo de los citados Smart Contracts, y la posibilidad de que dichos contratos respondan automáticamente ante eventos acaecidos en el mundo real, abre las puertas a la automatización de algunos tipos de seguro, y la eliminación de la posible subjetividad o la necesidad de reclamaciones. Por poner un ejemplo, el cobro de un seguro por fallecimiento, puede ser automático, siempre que se establezca un contrato, que vincule su ejecución a un disparador que en este caso es el fallecimiento de una persona, evitando de esta forma la intervención humana, desde el momento que se ejecuta el disparador.
- Logística. La datación temporal de los registros de la Blockchain, conjuntamente con las propiedades de inmutabilidad y transparencia de un registro distribuido y consensuado, elimina la necesidad de intermediarios que verifiquen determinados aspectos de la cadena de producción o de suministro. Así a través de los registros de la blockchain se puede tener constancia de los movimientos o transformaciones que ha tendido un producto a lo largo de una cadena de suministro, dificultando sobremanera la manipulación de los datos.
- Gobernanza. Que la cadena de bloques sea inmutable y al mismo tiempo publica o transparente, unido a las ventajas que los sistemas criptográficos introducen para la identificación de una persona, así como la datación temporal de los registro, abre múltiples aplicaciones en el sector de la gobernanza o de la administración pública. Estás van desde la posible implantación de sistema de voto a través de tecnología blockchain o la auditoria completa y transparente de las cuentas de una administración si estás se realizasen sobre un criptomoneda.
- Derechos de propiedad y titularidad. En este caso se podrían combinar las características asociadas a la seguridad que las técnicas criptográficas introducen para la identificación de una persona, conjuntamente con la datación temporal de los registros para establecer un registro inmutable de derechos de propiedad. Igualmente dicho registro contendría las transacciones entre la titularidad de los activos, de una forma pública, segura y transparente, evitando los consabidos problemas asociados a los registros de bienes y de derechos de propiedad.
- Sanidad. La ventaja de utilizar una base de datos distribuida, conjuntamente con la fortaleza de los sistemas de protección generados gracias al uso de técnicas criptográficas podría permitir compartir los registros, manteniendo los requisitos de privacidad derivados de las leyes de protección de datos.
- Pilar para el desarrollo de IoT (Internet de las Cosas). La aplicación de Smart Contracts, la escalabilidad de los sistemas, conjuntamente con la posibilidad de usar mecanismo de consenso sin intervención humana, puede ser un pilar el desarrollo y la expansión del IoT, ya que permitirá el desarrollo de transacciones entre dispositivos de un modo seguro y rápido sin la participación del ser humano.
En general establece los cimientos para el desarrollo de toda una nueva economía descentralizada y colaborativa, eliminado los intermediarios, y garantizando transacciones seguras, transparentes y globales.








Comentarios
Publicar un comentario