¿Qué es un DAG?
La creación de la tecnología blockchain por Satoshi Nakamoto supuso una revolución tecnológica sin igual, y desde entonces, muchos desarrollos intentan posicionarse como el siguiente gran paso, siendo uno de esos intentos los DAG.
Las siglas DAG significa 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 recientemente han capturado 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 uso en primer lugar? Estas y otra 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 comenzó 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 un 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ática 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 grafos ¿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 perspectivas de cómo la blockchain puede o pudiera evolucionar. Para ello imaginemos 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 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 blockchain, usando este tipo de grafos.
Propiedades de los DAG
Ahora bien los DAG tienen unas determinadas propiedades 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 aplicarse la construcción de esta estructura de forma consecutiva, estaremos creando un historial incremental dentro del DAG, tal como pasa en una blockchain.
- 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 blockchain, el resultado es una blockchain 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 puedan 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 light wallets 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 una 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 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 pueda 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 un punto de fallo 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 sobrepasadas 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 sea prácticamente inexistente, siendo esto un grave problema a la privacidad.