Los DAG o Grafos Dirigidos Acíclicos son una construcción matemática y computacional que permitiría la creación de sistemas y redes distribuidas con muchos parecidos funcionales por los ofrecidos con la tecnología blockchain.
La creación de la tecnología blockchain por Satoshi Nakamoto supuso una revolución tecnológica sin igual, y desde entonces, muchos desarrollos intentaron posicionarse como el siguiente gran paso, siendo uno de esos intentos los DAG.
Las siglas DAG significan Directed Acyclic Graph o Grafo Acíclico Dirigido, es una construcción conocida en el mundo matemático e informático durante muchos años. De hecho, son más antiguos que la tecnología blockchain por mucho. Pero han capturado recientemente la atención debido a la posibilidad técnica de construir sistemas distribuidos idénticos que los creados en la actualidad usando la tecnología blockchain.
Interesante ¿No crees? Esta “desconocida” y apasionante tecnología es entendida por algunas personas como una herramienta capaz de ofrecernos la funcionalidad de la blockchain prometiendo, además, importantes mejoras. Pero ¿Qué hay de cierto en todo esto? ¿Qué son realmente los DAG? ¿Cuáles son sus orígenes? ¿Son realmente los DAG la evolución de la tecnología blockchain? ¿Por qué Satoshi Nakamoto en toda su genialidad no los usa en primer lugar? Estas y otras preguntas las responderemos a continuación.
¿Qué es DAG y cuál es su origen?
En primer lugar, debes saber que los DAG no son un concepto nuevo. De hecho, los DAG se conocen desde el desarrollo de las Teorías de Grafos en matemáticas y que luego fueron usadas en computación debido a su enorme utilidad en este campo. Como comentamos, cuando hablamos de DAG hablamos de un grafo con dos propiedades muy interesantes: son dirigidos y acíclicos. Pero ¿Qué significa esto?
Primero, un grafo es dirigido, cuando todos los nodos (o vértices) que forman parte del grafo están conectados por aristas que indican una dirección bien definida.
Segundo, hablamos de grafo acíclico, cuando estamos ante un grafo donde no existen ciclos de recorrido para el mismo. Es decir, es imposible ir desde un vértice del grafo, recorrer el resto de sus vértices y terminar en el vértice donde se inició el recorrido.
Gracias a estos conceptos básicos, podemos decir entonces que:
Un grafo acíclico dirigido, o DAG por sus siglas en inglés, es un grafo dirigido finito sin ciclos dirigidos. Esto significa que sus vértices están conectados por aristas con una dirección específica y el recorrido de todo el grafo nos lleva de una punta A al B, sin tener la posibilidad de regresar al punto en A de ninguna forma.
El estudio de este tipo de estructuras comenzó en 1878, cuando James Joseph Sylvester, un reconocido matemático inglés, comenzó sus estudios de los grafos. Desde entonces, la Teoría de Grafos se ha dedicado a estudiar y clasificar este tipo de estructuras especialmente útiles en matemática, física, informática, lingüística y otras áreas de las ciencias.
Matemáticas y gráficos ¿Qué tiene que ver esto con las criptomonedas?
Ahora que sabes el origen y el concepto de un DAG, seguramente te preguntas ¿Qué relación guarda todo esto con las criptomonedas y la blockchain? ¿Cómo podemos usar un DAG para hacer lo mismo que con blockchain?
Pues bien, ambas preguntas son muy válidas, y las respuestas son igualmente válidas y te darán una nueva perspectiva de cómo la cadena de bloques puede o podría evolucionar. Para ello imaginamos lo siguiente:
Una blockchain o cadena de bloques es lo que su mismo nombre dice: información que agrupada en conjuntos se relacionan de forma ordenada y criptográfica con el conjunto anterior. Y dicha relación no puede romperse en ningún punto anterior de la cadena sin anular los siguientes bloques de inmediato.
Algo como lo que se muestra en el siguiente gráfico donde vemos una cadena sin modificación en su historial y otra con modificación en dicho historial.
Pues bien esta estructura de unir bloques de una forma específica para crear con ellos un historial inmodificable, y de que en caso de que se modifique, se genere una bifurcación (como lo muestra el gráfico arriba), también lo podemos hacer con un DAG.
Para eso mira el siguiente ejemplo:
Si observas bien verás que existe una relación entre los vértices (que en blockchain son bloques) y dicha relación está dada por las aristas (el hash y el Merkle Root de los bloques en blockchain). Si en el DAG modificamos una arista, cualquier cosa que sea, la relación del mismo se reescribe, generando un nuevo DAG, y por lo tanto un historial distinto (una bifurcación en blockchain).
Este otro DAG modificado, es una bifurcación o reescritura del DAG del ejercicio original, y nos demuestra que es posible recrear la misma relación dada en la cadena de bloques, usando este tipo de gráficos.
Propiedades de los DAG
Ahora bien, los DAG tienen unas propiedades determinadas que son vitales para que funcionen como lo son:
- Tienen un punto de partida (origen) y un punto de llegada o final (sumidero). Al ser dirigidos, esto garantiza que nuestro recorrido siempre vaya de un punto de origen a un punto final, y no podamos regresar sobre dicho recorrido. De aplicar la construcción de esta estructura de forma consecutiva, estaremos creando un historial incremental dentro del DAG, tal como pasa en una cadena de bloques.
- La modificación de una relación entre vértices, reescribe la totalidad del DAG, debido a que su estructura y peso ha variado. Esto es equivalente a que si modificamos un bloque en la cadena de bloques, el resultado es una cadena de bloques distinta desde ese punto en adelante.
- Son paralelizables. Un DAG puede tener generación paralela y recorridos de diferente valor entre distintos vértices. Esto optimiza su generación y la capacidad de verificar la relación entre los vértices y la información que pueden contener.
- Son reducibles. Una propiedad única de los DAG es que su estructura puede ser reducida a un punto óptimo en que su recorrido cumpla con todas las relaciones especificadas en el mismo sin ninguna pérdida. Básicamente significa que es posible reducir las relaciones de los vértices (o bloques) hasta un punto mínimo en que dicha reducción no afecta la capacidad de verificar la información de ningún vértice en ningún momento. Esto es especialmente útil por ejemplo en carteras ligeras o SPV.
DAG vs Blockchain ¿Cuál es mejor?
Ahora bien, ya que sabemos que son los DAG, sus propiedades y que pueden hacer el mismo trabajo que una blockchain o cadena de bloques, podemos hacernos la pregunta ¿Cuál es mejor?
Pues bien la respuesta a esto es compleja y responderla depende de tomar en perspectiva varias cosas. En primer lugar. aunque la estructura blockchain puede considerarse, aún hoy en día con más de 10 años después de su creación, una tecnología experimental, los DAG son una tecnología que en este momento es altamente experimental en el contexto de las criptomonedas.
Por otro lado, la creación de un sistema de minería y de consenso es mucho más complejo en una DAG. La forma en cómo se pueden generar bloques, crear relaciones entre los mismos, reducir dichas relaciones sin pérdidas, entre otras funciones agregan un nivel de complejidad algorítmica superior.
Esta mayor complejidad lleva también a que puedan cometerse errores de programación o fallos en la estructuración del funcionamiento del sistema. Y si hay algo peor que un error grave de software, es un fallo en la estructura de un sistema que implique alterar completamente el funcionamiento de la misma para repararlo, y si es que eso se puede.
Es posible que Satoshi Nakamoto hubiese visto y abordado este problema y en su lugar decidió diseñar una solución mucho más simple e igualmente efectiva, creando con ello la blockchain. Sin duda, esto es algo que nunca sabremos, pues no se tiene constancia pública de ello.
Pros y Contras
Pros
- En un DAG un nodo puede emitir y validar por sí mismo una transacción. Para lograr esto, la transacción y su validación debe estar ligada y agregar verificación a, al menos, dos transacciones anteriores dentro del DAG.
- Son altamente escalables debido a la forma descentralizada y paralela de su funcionamiento. Esto es posible porque las transacciones en una DAG son independientes. Igualmente de independientes son los procesos de validación para la misma.
- Las transacciones en una DAG crean un esquema conocido como “Transacciones doblemente confirmadas”. Esto significa que bajo cualquier esquema, se puede dar como irreversible una transacción con solo dos confirmaciones, un hecho, que puede llevar a cabo unos pocos segundos gracias al trabajo paralelo de la red.
- En las DAG no hay mineros, por lo que no hay pago de fee o comisiones de gran valor. Gracias a la facilidad criptográfica de validar y su alto rendimiento, las ganancias de los nodos por las transacciones confirmadas se ven recuperadas por el volumen total de transacciones atendidas entre otros servicios que puedan prestar el nodo.
Contras
- Resulta complejo desarrollar DAG, especialmente debido a su complejo algoritmo de consenso y las protecciones necesarias para evitar que su debilidad de paralelismo pueda ser explotada.
- Las DAG requieren de sistemas de coordinación. Estos sistemas de coordinación se vuelven a un punto de falla que puede afectar de forma negativa el funcionamiento de la red.
- Muchos proyectos DAG no usan herramientas criptográficas seguras y esto abre las puertas a ataques. Esto se presentó en la famosa criptomoneda IOTA, donde las protecciones criptográficas de la red fueron superadas por un generador de semillas online. Los atacantes usaban este generador para ganar acceso a los fondos de los usuarios de IOTA y robarles su dinero. En total se perdieron más de 10 millones de dólares por este ataque.
- El uso de técnicas criptográficas débiles hace que la generación de direcciones de privacidad sea prácticamente inexistente, siendo esto un grave problema a la.
Casos de uso de los DAG
En la actualidad existen varios proyectos que hacen uso de la tecnología DAG para presentar opciones reales y funcionales en forma de criptomonedas. Algunos de estos proyectos son:
Etéreo
El algoritmo de minería de Ethereum, el conocido Ethash (o Ethash Dagger-Hashimoto, como también se le conoce), hace uso de los DAG para crear una estructura compleja de datos que en la actualidad puede llegar a los 4-5 GB de datos . Esta estructura es creada por el algoritmo Dagger, diseñada por Vitalik Buterin, y su objetivo es brindar una base de minería para el algoritmo Hashimoto.
IOTA
IOTA es un proyecto de criptomoneda dirigido al mundo del IoT (Internet of Things), que promete gracias a su DAG, transacciones rápidas, muy económicas y una escalabilidad sin igual. El proyecto fue lanzado en 2016, pensando en ofrecer los miles de millones de aparatos conectados al internet de las cosas una infraestructura sólida y escalable para transmitir valor.
Desde entonces ha destacado por su interesante propuesta. Sin embargo, se ha visto afectado negativamente por graves problemas de seguridad que han afectado a sus usuarios y han supuesto la pérdida de unos 50 millones de dólares, una suma importante y que representa un entorno al 10% de su capitalización real de mercado.
Obyte
Obyte es un proyecto también enfocado en generar una criptomonedas y demás servicios integrados en una DAG. El proyecto data de 2016 y fue presentado en Bitcointalk. Es un proyecto pequeño, con una capitalización de mercado que ronda los 12 millones de euros. Sin embargo, pese a esto, el valor de su token es de 17 $ USD y su suministro está limitado a 1 millón de monedas. Esto hace de Obyte un token con un extraño alto valor de mercado. Es usado, sobre todo, en Rusia (país de donde es su creador, Anton Churyumov).