¿Qué es Dfinity? Una blockchain para cambiar todo Internet

José Maldonado
23 JUN 2021
¿Qué es Dfinity? Una blockchain para cambiar todo Internet
1.

Introducción

Uno de los proyectos más recientes en el mundo cripto es Dfinity, una red descentralizada impulsada por tecnología blockchain que busca crear una computadora bajo el concepto de computing cloud o computación en la nube. La idea busca ofrecer una red completamente descentralizada, funcional y segura, para desplegar aplicaciones públicas y privadas con bajos costes, y un sistema económico integrado gracias a la tecnología blockchain y su token nativo ICP.

Pero ¿Cómo inició esta idea? ¿Cuál es su alcance y que podemos esperar a futuro de este proyecto? Pues bien, esto y más podrás descubrirlo a continuación.

2.

Evolución e Historia detrás de Dfinity

Los inicios de la computación distribuida

La computación distribuida es una realidad desde hace mucho tiempo. Proyectos como SETI@HOME que inició en 1999, ya nos mostraba el enorme poder que este tipo de sistema ofrecía. Imagina por un momento lo siguiente: ¿Necesitas procesar cientos de gigabytes de información generada diariamente y no tienes los recursos para ello? Pues bien, SETI@HOME era una red que resolvía este problema para el instituto SETI (Search for extraterrestrial intelligence - Búsqueda de inteligencia extraterrestre).

Para lograrlo, la Universidad de Berkeley creó una plataforma llamada BOINC (Berkeley Open Infrastructure for Network Computing). Esta plataforma permite crear un sencillo programa que las personas podían instalar en su computador y a través de él "prestar" poder computacional. Este poder computacional se usaba luego para analizar todos esos datos en una enorme computadora distribuida tan potente como un supercomputador de la época (e incluso más poderoso). ¿Ventajas? No gastas dinero comprando un supercomputador y, para SETI, eso era clave.

Puedes pensar que una tecnología de 1999 es inútil en nuestros días, pero nada más lejos de la realidad. Lo que hicieron en SETI@HOME fue solo el comienzo de una tecnología con prácticamente infinitas posibilidades. De hecho, actualmente proyectos como Folding@HOME hacen presencia ayudando a descifrar datos sobre enfermedades y virus como el COVID-19. Esto tiene lógica especialmente cuando observamos que el poder computacional de Folding@HOME alcanza la increíble suma de 2,48 exaFLOPS, convirtiéndose así, en la "computadora" más poderosa creada por la humanidad hasta la fecha.

La llegada de Bitcoin, blockchain y Dfinity

Todo esto sin duda suena impresionante, pero ¿Qué relación guarda todo esto con la tecnología blockchain y Dfinity? Pues bien, la verdad es que mucha. La creación de Bitcoin por Satoshi Nakamoto, y el resto de criptomonedas que le siguieron, usan todo lo aprendido con SETI@HOME. De hecho, puedes ver a estas redes como "una inmensa computadora distribuida". Una que se encarga de llevar todo lo referente a las transacciones y su historial en la red. Y, en la que participan, cientos de miles de personas al mismo tiempo, aportando su granito de arena para que todo funcione como debe. Así nos queda claro una cosa: el futuro de la computación es distribuido y Bitcoin fue quien inició una revolución que hoy en día no se detiene. 

Proyectos como Ethereum buscaron llevar la revolución de Bitcoin a otro nivel, y lo logró, iniciando la revolución de las DApps que ahora tenemos. Pero ¿Es todo el potencial de la tecnología blockchain y la computación distribuida? Esa respuesta nos la responden proyectos como Golem (una especie de SETI@HOME funcionando sobre Ethereum), Cosmos o Polkadot.

Pero, en el año 2013, Dominic Williams (presidente y jefe científico de Dfinity) se dio cuenta de que podíamos usar una secuencia aleatoria de números para asegurar una red a gran escala, liberando con ello una gran cantidad de recursos y permitiendo protocolos de consensos únicos capaces de llevar la blockchain a un nuevo nivel. Nacía entonces, Dfinity con el firme propósito de cambiar radicalmente la concepción de la tecnología blockchain, sus capacidades y el alcance a gran escala de esta tecnología.

Así, se creó en 2017 la DFINITY Foundation, una fundación sin ánimo de lucro con sede en Zug (Suiza) que apoya el proyecto Dfinity. Ya para el 2018, grandes como Andreessen Horowitz apoyaban el proyecto, que contaba con un capital superior a los 60 millones de dólares para su desarrollo. Tras tres años de desarrollo, Dfinity se hacía una realidad, ya que el 10 de mayo de 2021 comenzaría el funcionamiento de la mainnet de Dfinity y el funcionamiento inicial de su token ICP.

3.

Internet Computer, el objetivo de Dfinity

Ahora bien ¿Qué busca realmente Dfinity con su idea? Pues bien, su principal objetivo es construir una nube que funciona sobre una infraestructura blockchain, conocida como Internet Computer (IC). Este computador tendría la capacidad de unirse a la Internet actual y permitir el despliegue de software público o privado de alcance global, integrado a una estructura de acceso segura, transaccional y de desarrollo abierto para todos.

Suena complejo ¿Cierto? Pues, imagínalo de esta manera: imagina que cuando accedes a la red Dfinity en realidad haces login en un computador, solo que el computador es global. Accediendo al computador tienes acceso a sus aplicaciones, las cuales puedes usar de forma segura desde la comodidad de tu computador, tablet o smartphone.

La información que generas y todas las operaciones que realizas son seguras, porque todo está bajo tecnología blockchain y su amplio uso de criptografía. Es como una DApp supervitaminada, porque no solo te permite interactuar con ella, sino también modificarla a tu gusto, o incluso, prestar servicios propios haciendo uso de la DApp desplegada. Por ejemplo, crear un sitio web que use una DApp de Dfinity dentro de su propia red.

Adicional a esto, IC es un sistema Inter operativo. Es decir, IC es capaz de interactuar con otros protocolos e intercambiar información con ellos de forma nativa o extensible. Además, la red es relacional y mnemónica, lo que posibilita la creación de aplicaciones que no necesitan de una base de datos para acceder y mantener información, agilizando las transacciones en el proceso y permitiendo la creación de sistemas completamente autónomos. Y si, acá también entra el concepto de Deep Learning e Inteligencia Artificial, que son esenciales en los servicios de funcionamiento de IC, y a los que todos pueden acceder de forma sencilla. Sería el caso de una verdadera masificación de la tecnología DL e IA en el mundo.

Lo mejor de todo es que el acceso a Internet Computer puede ser controlado por un protocolo estandarizado conocido como ICP, que permitiría crear redes autónomas interconectadas entre sí, que combinan su potencia de cómputo para hacer funcionar a IC. Este protocolo tiene todo lo necesario para su funcionamiento desde un equivalente para DNS, controlador de accesos, control de identidad y más, y todo ello integrable al software actual que ejecutan nuestros sistemas.  Es decir, IC es un sistema al que puedes acceder desde la comodidad de tu PC o smartphone y disfrutar así de todas sus bondades.

Relacionado con: Dfinity está listo para posicionarse directamente entre los 5 principales tokens por capitalización de mercado

4.

¿Cómo funciona Dfinity?

Protocolo de Consenso "Threshold Relay"

Dfinity funciona gracias a la creación de diversas novedades, como es el caso de su protocolo de consenso Threshold Relay. Este protocolo funciona bajo un principio completamente nuevo dentro del mundo de la blockchain, y es que, sus nodos producen un número aleatorio o “baliza” que se utiliza para elegir el siguiente grupo de nodos que harán de validadores y generadores de bloque.

Los nodos conectados a la red principal y subredes Dfinity, pueden ampliarse tanto como sea posible con la llegada de nuevos nodos. Pero en todo caso, el proceso es el mismo, cada subred es protegida por una baliza, y la red principal también. Al final, este funcionamiento dividido permite que la red pueda escalar enormemente usando el mismo protocolo de consenso.

Pero ¿Qué función tiene la baliza o número aleatorio en Threshold Relay? Pues bien, esta baliza sirve de selector, para entre el grupo de nodos de la red, elegir a los nodos que serán los encargados de producir un bloque en un momento determinado. La idea es que dicha baliza se genere, se envíe a la red, y los nodos resuelvan un problema criptográfico asociado. Al resolver ese problema, los nodos que cumplen con el criterio dado por la baliza sabrán que son los elegidos para el próximo grupo de generación de bloques, mientras que el resto no tiene ni idea de ese hecho. Esto asegura dos cosas:

  1. Los nodos que estarán habilitados sabrán que están en el grupo de generación, junto al resto de nodos que forman parte de la selección para cada segmento de la red.
  2. El resto de nodos no elegidos, no sabe quiénes fueron elegidos, y no pueden interferir de alguna manera con su trabajo.

Esta es una medida de seguridad para la red, y al mismo tiempo, una característica que brinda velocidad, ya que el sistema no está basado en PoW (Prueba de Trabajo), sino en un sistema PoS (Proof of Stake) modificado. Seguramente te habrás dado cuenta que este sistema se parece mucho al presentado por Hyperledger e Intel con su Proof of Elapsed Time (PoET), uno de los protocolos de consenso blockchain más rápidos que existen.

Proceso de funcionamiento de Threshold Relay

Sin embargo, las mejoras de Threshold Relay no terminan con esto. En primer lugar, la generación de bloques está dividida en una serie de etapas bien definidas. Y, en cada una de esas etapas, hay una serie de innovaciones únicas aplicables a este protocolo de consenso, las cuales destacamos a continuación:

Resumible

Una de las características clave del protocolo de consenso Threshold Relay es la posibilidad de resumirlo. Esto significa que es relativamente trivial que un nodo abandone o se una a la red sin afectar a la vitalidad de una subred o tardar mucho tiempo. Esto es importante para el éxito de Dfinity, ya que algunos proyectos de blockchain disminuyen el número de nodos a medida que se hace más difícil participar plenamente en una red. En este caso, la reanudación permite que el rendimiento del Internet Computer de Dfinity, se mantenga siempre al máximo.

Para lograr esto, Threshold Relay permite que el estado de la red pueda ser descargado de forma parcial, e incluso, desde cero. Es decir, para que un nodo participe en la red, no es necesario que este descargue toda la información de la blockchain de Dfinity. Piensa por un momento en las implicaciones de esto. Por ejemplo, en Bitcoin cada nodo debe descargar toda la blockchain de Bitcoin (unos 350 GB) y mantener dicha información almacenada, además de almacenar toda la información nueva que es generada. Esto en una conexión de Internet lenta lleva horas e incluso días en realizarse, un tiempo en el que nuestro nodo no hace absolutamente nada dentro de la red.

Sin embargo, en Dfinity esto no es necesario. En su lugar, basta con que el nodo se una, almacene el último estado de la red, y entonces puede iniciar su trabajo. Es como si hiciéramos que el nodo Bitcoin comenzará a trabajar una vez descargue el último bloque de la red (unos 2 MB), lo que permitiría ponerlo en funcionamiento en menos de un minuto. La principal ventaja en este sentido es que los nodos Dfinity pueden aportar su poder de cómputo rápidamente a la red sin muchas complicaciones.

Creación de bloques

La creación de bloques sucede cuando el grupo de generación elegido por la baliza comienza la proposición de un nuevo bloque. Dfinity al ser una red de shards, es capaz de definir bloques tanto en subredes (o sidechains) como en la red principal (mainchain). Así, los nodos de una subred pueden comenzar la generación de un bloque (asociado a una aplicación específica), realizar ese trabajo con su propio poder computacional, y enviar dicha información a la red principal, donde será recogida por los nodos generadores de esa red principal.

Al final, el trabajo asincrónico de ambas redes, garantiza velocidad y el hecho de un doble registro, garantiza que no haya manipulaciones. Para evitar mal uso de la red, Dfinity busca seccionar el sistema de generación lo más posible usando algo conocido como Réplicas, esto con el fin de que existan muchos creadores de bloques, que puedan hacerse cargo de la tarea, dificultando así cualquier ataque a la red.

Notarización

Uno de los problemas de ejecutar redes y subredes que pueden generar bloques, es que hay espacio para hacer trampa. Manipular el sistema en esas condiciones es fácil, y por ello, se deben crear mecanismos robustos de seguridad. En tal sentido, el primer mecanismo de seguridad en Dfinity es la notarización de los bloques.

La notarización de bloques en Dfinity funciona en rondas, y en cada ronda se asegura que tenemos al menos un bloque válido que puede extender la blockchain. Como ejemplo, digamos que la Réplica 1 tiene una cadena de bloques notariada hasta la altura 29. Si ahora ve un bloque que extiende la cadena de bloques a la altura 30, validará ese bloque. Si la Réplica 1 ve que este bloque es válido, podría colocar una firma criptográfica en él que llamamos cuota de notarización. La cuota de notarización se enviará a las otras réplicas y a las subredes expresando que la Réplica 1 piensa que este es un buen bloque.

Puede que la Réplica 3 y la Réplica 4 también creen acciones de notarización sobre ese mismo bloque. Definamos que tres de las cuatro réplicas tienen suficiente aprobación. Obsérvese que, en este caso, tres de cuatro es el mayor porcentaje de aprobación que podemos esperar obtener, en el que el protocolo debería progresar incluso si una de las notas se comporta mal o está desconectada. Combinamos estas tres acciones de notarización en un único artefacto, al que llamamos notarización, lo que significa que el bloque 30 está notarizado. Los notarios pasarán ahora a la siguiente ronda y empezarán a buscar bloques a la altura del 31.

Para estas acciones de notarización, utilizamos firmas especiales llamadas multifirmas. Las multifirmas tienen una buena propiedad que permite comprimir muchas firmas sobre el mismo mensaje en una única firma de tamaño constante que demuestra que todos los nodos firmaron el mensaje. Este sistema, es una segunda línea de defensa contra trampas dentro del protocolo de consenso de Dfinity.

Baliza aleatoria

La baliza aleatoria permite que el creador de bloques y el notario puedan identificar los bloques válidos y llegar a un acuerdo en su veracidad y validez. Para lograr esto, en cada altura, tenemos un número especial aleatorio cuyo valor es imprevisible.

Las réplicas usan esta baliza aleatoria para identificar los bloques dentro de una ronda de notarización, hasta el momento, en el que termina y crean la siguiente baliza aleatoria. Esta baliza va acompañada de una firma criptográfica especial sobre el valor de la baliza aleatoria anterior, que es conocida como cuota de baliza aleatoria.

Esta información se envía a la red, y solo podrá ser vista en su totalidad por los notarios y generadores de bloques que participen en la ronda actual de generación (y la futura). Para mantener este secreto se usan firmas de umbral BLS. Esto es lo que garantiza la seguridad de la baliza y que solo los nodos autorizados en la ronda puedan saber su valor.

Finalización

La finalización de bloques solo se da por medio de un proceso asincrónico, en el que los generadores, notarios y réplicas pueden detectar cuándo han llegado a un acuerdo sobre el bloque generado recientemente. En primer lugar, los generadores enviarán su bloque y las Réplicas recibirán el mismo. En ese punto, los notarios agregan sus firmas y datos para dar el visto bueno al bloque, y la información es enviada al resto de la red. 

Así una vez que el bloque alcance el punto de aceptación por parte de los notarios, las réplicas y generadores sabrán que el bloque es válido, y lo agregan a su historial, mientras que, en paralelo, ya ha iniciado la próxima ronda de generación. 

El proceso suena largo y tedioso, pero te sorprenderá que todo esto se ejecuta en un máximo de 3 segundos. De hecho, en el estado actual de la red Dfinity, el sistema no llega a ocupar un segundo de ejecución entre bloques.

Recordemos que los notarios crean acciones de notarización hasta que ven que un bloque está totalmente notarizado, momento en el que pasan a la siguiente ronda. Ahora vamos a hacer que los notarios compartan información sobre cuántos bloques han notariado, lo que nos ayudará a llegar a un acuerdo. Más concretamente, si el notario no creó ninguna acción de notarización para bloques distintos del primer bloque notado que recibió en esa ronda, creará un tipo diferente de firma que llamamos acción de finalización.

Network Nervous System (NNS), el sistema de control de Dfinity

Network Nervous System o NNS, es el software autónomo que gobierna Internet Computer. Dicho software está a cargo de gestionar todo, desde la economía hasta la estructura de la red. Este sistema está alojado dentro de la propia red y es completamente autónomo. Su papel es tan vital, que de este sistema depende la seguridad y la sincronización de todos los nodos dentro de Dfinity. Además, actúa como un blockchain "maestro" autónomo con una clave pública para validar todas las transacciones del ICP.

Gracias a estas funciones, NNS es capaz de someter a votación propuestas como la ampliación de la red mediante la adición de subredes. Además, es el encargado de permitir la incorporación de nuevas máquinas de nodos. Dichas propuestas serán votadas por los titulares de tokens ICP que hayan bloqueado sus tokens, para obtener Neurons y poder votar.

Además, también combina nodos de centros de datos independientes para crear subredes, que se utilizan para alojar aplicaciones dentro de Dfinity. De esta forma, el NNS sigue creando subredes en función de las demandas de capacidad para alojar nuevas aplicaciones. Esto es lo que permite una escalabilidad indefinida de la red.

Chain Key Technology, revolucionando el concepto de sincronización blockchain

Chain Key Technology es una cadena pública de 48 bytes que hace innecesarios los bloques antiguos. Esta es lo que permite que Dfinity no necesite descargar un historial completo para que sus nodos puedan funcionar.

Para lograr esto, Chain Key Technology permite que Internet Computer cree un marcador de estado sobre la red. Este marcador es usado como punto de referencia en la red. La idea detrás de Chain Key Technology no es nueva, de hecho, Cardano tiene una implementación parecida en su red (permitiéndole sincronizaciones rápidas) y Bitcoin está detrás de UTreeXO, que le brindaría algunas ventajas parecidas. En todo caso, Chain Key Technology busca mejorar no solo la velocidad de las operaciones on-chain sino también la sincronización de la red.

Motoko, lenguaje de programación para Dfinity

Motoko es un lenguaje de programación desarrollado por Dfinity Foundation. Su principal función es permitir una programación mucho más intuitiva y segura de aplicaciones dentro de Dfinity. Adicional a esto, Motoko cuenta con una poderosa ventaja, y es que este compila en WebAssembly (WASM). Esto le brinda una enorme versatilidad para operar a través de Internet.

La idea detrás de esto es que Internet Computer pueda aprovechar WASM para almacenar datos y ejecutar código directamente en Internet. Esto permite que las ejecuciones sean muy rápidas, ampliamente compatibles con el software actual y sin necesidad de software intermediario para ello. De hecho, todo lo que necesitas es un navegador web con soporte para acceder a una DApp de Dfinity. En este punto, la programación se ejecutará directamente en la maquina WASM de tu navegador, aplicando las medidas y políticas de seguridad del mismo.

Adicional a esto, WASM está diseñado para mantener la naturaleza sin versiones, probada y compatible con versiones anteriores de la web. Los módulos de WASM podrán llamar dentro y fuera del contexto de JavaScript y acceder a la funcionalidad del navegador a través de las mismas APIs web accesibles desde JavaScript. WASM también es compatible con incrustaciones no web.

ICP Token, el mecanismo económico de Dfinity

El token de utilidad ICP (antes conocido como "DFN") es el principal mecanismo que permite a la comunidad de Internet en general participar en el gobierno de la red Internet Computer. El ICP también puede disolverse y convertirse en ciclos, que luego se utilizan para ejecutar sitios web y aplicaciones. Además, sirve para alimentar cálculos en el Internet Computer a través de boats. Boats es el nombre como se conocen las aplicaciones DApps y los smart contracts asociados a las mismas.

ICP Token se ha transformado en 2021 en uno de los tokens con mayor crecimiento económico de la criptoesfera. De hecho, pasó de 0$ el 10 de mayo de 2021, a los 51 $ para el 19 de junio de 2021. Eso es un 510 % de crecimiento en poco más de un mes, y la tendencia sigue al alza. Por otro lado, la emisión de este token es infinita, y su generación es dinámica, ajustando la recompensa de los mineros en todo momento. 

Neuron, gobernanza on-chain para Dfinity

Neuron es el sistema que permite a los usuarios "bloquear el tiempo" de sus tokens ICP para ser recompensados con poder de voto (Neurons). Dicho poder de voto puede ser utilizado para decidir sobre las propuestas presentadas al sistema que pueden ser ejecutadas automáticamente. El sistema incluso puede ser automatizado, al programarse para que se sigan unas a otras de diversas maneras.

De esta forma, podemos emitir votos de forma automática, lo que representa una forma de democracia líquida. Los usuarios también pueden disolver sus Neurons, para liberar los tokens y convertirlos en ciclos para alimentar la computación.

5.

Dfinity Foundation, abriendo camino al desarrollo de este ecosistema

La Fundación DFINITY es una organización de investigación científica sin ánimo de lucro con sede en Zúrich (Suiza). Está supervisa los centros de investigación de Palo Alto, San Francisco y Zúrich, así como los equipos de Japón, Alemania, Reino Unido y Estados Unidos.

La misión de la Fundación es construir, promover y mantener el ordenador de Internet. Su consumado equipo -que incluye a muchos de los mejores criptógrafos y expertos en sistemas distribuidos y lenguajes de programación del mundo. Además, cuenta con casi 100.000 citas académicas y 200 patentes en conjunto. Todo ello deja muy en claro que están comprometidos con la construcción de tecnologías experimentales avanzadas para mejorar la Internet pública.

6.

Futuro de Dfinity

Dfinity es un proyecto con mucho camino por recorrer, pero lo que nos muestra ya nos dice claramente el inmenso potencial de su tecnología. Su visión de una nube basada en blockchain, junto con las experiencias conocidas de su modelo, nos permiten prever una explosión de uso de su tecnología, en especial por su enorme escalabilidad.

Sin embargo, pese a su etapa de desarrollo tan temprano, Dfinity se ha convertido en uno de los proyectos blockchain de mayor crecimiento económico de este 2021, y hay una poderosa razón para ello: su tecnología y visión nos muestran que blockchain puede llegar a niveles nunca imaginados.

Relacionado con: Dfinity responde a las preocupaciones sobre la descentralización y la privacidad de Internet Computer