¿Qué es un DAG y cómo funcionan?

José Maldonado
02 ABR 2020
¿Qué es un DAG y cómo funcionan?
1.

Introducción

Recientemente muchas personas y proyectos han centrado su atención en una herramienta de nombre DAG. Se les conoce como la evolución de la tecnología blockchain. Una nueva tecnología que dejaría finalmente atrás a la creación de Satoshi Nakamoto. Un hecho impulsado por su alto nivel de seguridad, gran escalabilidad y fácil implementación.

Sin embargo, estas afirmaciones no son compartidas por muchas personas en la comunidad criptográfica. Pero si en algo están de acuerdo, es que los DAG pueden brindarnos una visión totalmente nueva de cómo solucionar diversos problemas en la tecnología blockchain.

Pero ¿Qué es un DAG? ¿De dónde ha surgido este nuevo concepto? ¿Cómo funcionan? Estas son algunas de las preguntas a las que daremos respuesta a continuación.

2.

¿Qué es un DAG?

Un Directed Acyclic Graph o Grafo Acíclico Dirigido (DAG), es un tipo de grafo por el cual se puede representar una serie de datos relacionados entre sí. Estos datos se presentan visualmente como un conjunto de círculos o nodos. Cada uno de estos círculos o nodos, representa un determinado conjunto de datos dentro de todo el grupo. A la vez, estos nodos están conectados por líneas, que representan el flujo de datos de un punto a otro dentro del grafo.

Cada círculo se conoce como un "vértice" y cada línea se conoce como un "borde". En este punto entra en juego el nombre de "Dirigido", que significa que cada borde tiene una dirección definida. Por lo que cada borde necesariamente representa un flujo de datos direccional único de un vértice a otro. Por otra parte, el término "Acíclico" significa que no hay bucles o ciclos en el gráfico. Esto significa que, para cualquier vértice dado, si sigue un borde que conecta ese vértice con otro, no hay camino en el gráfico para volver a ese vértice inicial.

https://lh3.googleusercontent.com/Dd7VYnExW97KixnE_R_-dnD5InTAYDK2wKv8pAtcJoyV9lxbHJxvvGxRwkMptga0t5z8TNK7RcBF0YlPPKlVyqMoJHcggFtd-7eFVNiRPyAl9G9Whu2XNBzBBE5ZPourNTJxrVl4

Los DAG son un concepto nacido en el seno de la Teoría de Grafos, y son parte esencial de las Ciencias de la computación.  Son ampliamente utilizados en la construcción de sistemas acíclicos en los que se necesita una representación compacta de los datos de ese sistema. Por ejemplo, en la resolución de tarea de sistemas de construcción de software o la representación y estudio de redes bayesianas. Además de funciones dentro de lenguajes de programación con operaciones de flujo de datos o la revisión de datos dentro de una red de datos distribuidos.

Precisamente esto último, es donde los DAG han demostrado un enorme potencial para resolver determinados problemas mucho mejor que la blockchain. Pero ¿Qué tan cierto es? ¿El funcionamiento de los DAGs es tan revolucionario? Pues bien conozcamos más sobre esta herramienta.

Relacionado: Blockchain: Qué es y cómo funciona. Guía para principiantes

3.

¿Cómo funciona un DAG?

Ahora bien, sabemos que los DAG son un tipo de grafo dirigido y acíclico que permite establecer relaciones entre sus partes de forma única. Pero ¿Qué significa todo esto? ¿Cómo podemos ver este funcionamiento de forma sencilla?

Básicamente un DAG lo que hace es organizar datos en una serie de vértices que luego son conectados de forma única con otros vértices gracias a los bordes. Esta organización origina un grafo con dos cualidades únicas. En primer lugar, la conexión entre los vértices gracias a los bordes es dirigida. Es decir, solo va en un sentido. Esto te asegura de que, si empiezas en un vértice A, sin importar que camino tomes en el grafo, nunca volverás al punto de inicio.

En segundo lugar, es acíclico. Esto significa que la estructura del grafo no crea bucles. En todo momento, el grafo mantendrá una linealidad, sin importar las ramificaciones que puedan originarse en el mismo. Esto significa que el flujo de datos dentro del grafo siempre irá en un solo sentido, ayudando a un diseño y procesamiento de datos eficiente.

Estas dos cualidades son muy útiles a la hora de representar flujos de datos. Ya que, gracias a ellos, nos es posible organizar de forma más eficientes los datos y las posibles bifurcaciones que puedan originar los mismos. Todo mientras garantizamos que los datos se han almacenado de forma procedimental y vinculada. Es decir, que el flujo de datos es almacenado punto por punto. Y cada uno de estos puntos, está vinculado de forma tal que esta siempre nos dé como resultado el flujo de datos original.

4.

Propiedades de los DAG

Entre las propiedades de los DAG podemos mencionar

  1. Están conformados por nodos, que son los lugares donde se almacenan los datos.
  2. Los bordes o línea de conexión entre nodos son dirigidos y van en una sola dirección.
  3. Cuentan con un nodo ancestral. Este es un nodo especial que no tiene padres o nodos que le anteceden.
  4. Su estructura contiene nodos que no tienen hijos, llamadas hojas.
  5. Su organización de datos es distinta a los árboles. Ya que en una estructura en forma de árbol, esta debe tener una ruta única entre cada dos nodos. Sin embargo, en los DAG, un nodo puede tener dos nodos principales.
  6. La naturaleza matemática de los DAG les otorga una serie de propiedades matemáticas que son: el ordenamiento topológico, la enumeración combinatoria, la accesibilidad, el cierre transitivo y la reducción transitiva.  Todas estas características son esenciales dentro del marco matemático descrito por la Teoría de Grafos para los DAG.
5.

DAG vs Blockchain ¿Cuáles son sus diferencias?

Ahora bien, nos encontramos que un DAG es una estructura muy parecida a la cadena de bloques o blockchain. En ambas estructuras, somos capaces de segmentar la información de un sistema y almacenarla en pequeños bloques de datos. Estos segmentos luego son vinculados de forma única con el fin de crear una estructura de datos mayor e invariable.

Sabemos que el Bitcoin es la creación pionera en el uso de la blockchain, desde su creación en 2009. Pero no sabemos las diferencias entre un DAG y una blockchain.

Pues bien, la verdad es que podemos ver la estructura de una blockchain como una cadena de listas simples vinculadas entre sí. Estas listas se colocan unas sobre otras y se encuentran vinculadas por un Árbol Merkle, que garantiza la validez e integridad de los datos. De esta manera obtenemos lo que llamamos cadena de bloques o blockchain.

Esta cadena de bloques nos permite rastrear cualquier registro que queramos y que esté registrado dentro de ella. Un punto a favor de esta estructura secuencial. Pero esta característica también representa un problema, la secuencialidad dificulta el rendimiento de sus transacciones. De allí que la tecnología blockchain tenga graves problemas de escalabilidad.

https://lh5.googleusercontent.com/f5gTYUv2N5_ogxpxI15iqKBJQM05wHKAB-4R9iSWPuBfNscgqB5WEJIDhqdJQDF4ta6GnyhqG4YBcvs5BK7xchqrDQEeDcCzaED2JXMnMD-nLUeS_ncriZd2n67-7pLRPZi6G9A7

Sin embargo, un DAG funciona de una forma radicalmente distinta. La estructura de un DAG se asemeja a un diagrama de flujo donde todos los puntos se dirigen en una dirección. De hecho, un DAG puede ramificarse en otros DAG, que forman parte del DAG principal y mantener esta misma propiedad. Esta capacidad permite simplificar la estructura y agrega paralelismo. Con lo cual los DAG nos ofrecen un alto nivel de rendimiento y escalabilidad para procesar grandes cantidades de transacciones.

Acá es donde está la diferencia entre los DAG y la blockchain. Y es el origen de la idea de que los DAG pueden llevar a nuevos niveles de rendimiento y escalabilidad a las criptomonedas.

Relacionado: Criptomonedas: qué son y cómo funciona el dinero digital

6.

Uso de los DAG en la actualidad

Ahora bien, todas estas características han permitido que los DAG sean ampliamente utilizados para resolver distintos problemas de orden computacional. Un ejemplo de ellos son los algoritmos de scheduling o gestión de tareas en los sistemas operativos. En estos casos, los DAG son usados para generar grafos de asignación de recursos. Con el fin que permitan crear un grafo para la ejecución de procesos de acuerdo a los distintos parámetros del sistema.

Estas estructuras también son usadas en lenguajes de programación y sus respectivos compiladores, para procesos de manipulación de flujo de datos y optimización de código. Ambos procesos revisten una alta dificultad y los DAG ayudan a crear grafos para elegir los mejores cursos de acción en cada caso.

También son usados para el análisis de redes bayesianas. Esto resulta muy útil en computación y en otras ramas de las ciencias como la epidemiología, la inteligencia artificial y la física cuántica. En cada uno de estos casos, los DAG han demostrado una gran utilidad no solo para representar datos, sino también para interpretarlos y entender el funcionamiento de fenómenos dentro de cada unas de las ciencias nombradas.

7.

DAG y sus usos en las criptomonedas

En el caso de las criptomonedas, los DAG puede usarse para sustituir la estructura de la blockchain, sin que esto signifique un problema de seguridad para la misma. Casos como estos podemos ver en proyectos como:

IOTA

El proyecto de criptomoneda IOTA es el primer proyecto de criptomonedas en usar un DAG para su criptomonedas. El objetivo de IOTA, es el de crear una criptomoneda de alto rendimiento donde sea innecesario el concepto de tarifa de minería. Y todo ello gracias al uso de DAG como estructura de funcionamiento.

Para ello, IOTA usa un DAG donde puede asignar los deberes de cada miembro. De esta forma, todos los usuarios de la red se convierten en emisores y validadores de transacciones al mismo tiempo. Para que IOTA verifique una transacción, un usuario debe aprobar dos transacciones anteriores. Es importante en este punto, que en dicha validación no exista ningún tipo de conflicto. Además, es necesario adjuntar una pequeña cantidad de prueba de trabajo, ya que se necesitan cálculos de baja dificultad para evitar el spam en la red.

Esto elimina por completo la necesidad de pagar tarifas a los mineros y, por lo tanto, abre la posibilidad de ejecutar microtransacciones que podrían valer tan poco como unos pocos centavos.

Además, la estructura de datos DAG de IOTA permite ofrecer una alta escalabilidad de la red. Esto gracias a que todos participan en alcanzar un consenso y, por lo tanto, mientras más personas usen IOTA, más rápida se volverá la red.

Además de los activos, la red permite adjuntar datos a las transacciones; tiene el potencial de permitir transacciones rápidas de máquina a máquina. Inicialmente, IOTA fue diseñado específicamente para servir como una columna vertebral para Internet de las cosas (de ahí el nombre IOTA). Pero las características que ha introducido seguramente se pueden utilizar para otros infinitos casos de uso.

Obyte

Otra criptomoneda famosa por usar DAG en su estructura es Obyte. Obyte o anteriormente conocida como Byteball, tiene un desarrollo interesante que va desde su propia criptomoneda, sistema de identidad digital, pagos rápidos y anónimos, sistema de contratos inteligentes, así como chats privados dentro de la red.

Lo particular de Obyte es que no es una red descentralizada, sino que en su lugar, existen solo 12 nodos coordinadores en la red. Sobre estos nodos, recae todo el proceso de verificación de transacciones y el manejo del DAG. Pese a ello, la tecnología ofrecida por Obyte es completamente usable y está disponible públicamente.

Estos dos ejemplos nos dan una idea clara de que los DAG pueden ser usados para crear estructura que permitan el funcionamiento de una criptomoneda. De hecho, lo hacen uniendo lo mejor del mundo de la blockchain y ofreciendo al mismo tiempo, nuevas características y posibilidades a la tecnología detrás de las criptomonedas.