Una de los retos técnicos principales del ámbito blockchain es el de la escalabilidad, la cual se refiere al desarrollo de tecnologías y protocolos capaces de procesar un mayor número de transacciones dentro de un periodo fijo. Mientras que una red de pago tradicional como la de Visa puede procesar miles de transacciones por segundo, la mayoría de las cadenas de bloques pueden procesar solo un par.

Estamos trabajando en dos soluciones: Las cadenas laterales y un protocolo de DAG de bloques. En este artículo nos adentraremos a la segunda, pues le hemos dedicado un artículo aparte al desarrollo de nuestras cadenas laterales.

¿Qué es DAG?

Las siglas DAG vienen del inglés directed acyclic graph, un grafo acíclico dirigido. La estructura a la extrema izquierda de la imagen a continuación es de un grafo simple compuesto de nodos y las vértices que los conectan. En un grafo dirigido cada conexión tiene una dirección, indicada aquí por las flechas. Un DAG no permite relaciones cíclicas entre nodos como el que se puede apreciar en la parte inferior del grafo dirigido al centro de la imagen.

DAG DAG

Hay dos maneras diferentes de montar un DAG para criptomonedas. Los nodos pueden estar compuestos de transacciones individuales o bien, pueden ser bloques que contengan un número de transacciones. El primer protocolo DAG destacable fue Tangle, desarrollado por IOTA. En el Tangle, cada nodo se compone de una transacción. Cada transacción contiene una referencia a dos transacciones previas y tiene una pequeña prueba de trabajo adjunta.

Horizen está considerando el uso de un protocolo DAG de bloques. Cada nodo del DAG será un bloque, algo similar a la composición de una cadena de bloques. Cada bloque tendrá un encabezado con información importante como la marca de tiempo y referencias a bloques anteriores, así como un grupo de transacciones. La diferencia más marcada a comparación de una cadena es que un bloque del DAG de bloques puede contener referencias a más de uno de sus antecesores. Este permite que la estructura de datos se vuelva bidimensional al compararse a la unidimensionalidad o estructura de datos lineal de una cadena de bloques. De esta manera buscamos cambiar únicamente la forma de la estructura de datos, conservando así el mismo mecanismo de consenso, las pruebas de trabajo, para que la red acuerde el orden del historial de transacciones.

chain DAG chain DAG

Los mineros de un DAG de bloques

Como ya sabrá, hay una entidad llamada minero en una cadena de bloques PoW tradicional, la cual se encarga de asegurar el libro contable con grandes cantidades de poder computacional. Los mineros se ven incentivados a hacer su labor por medio de una recompensa de monedas recién creadas. También en el protocolo del DAG de bloques habrá mineros. Lo que cambiará será en esencial la estructura de datos del registro de transacciones. El mecanismo de consenso empleado por la red, en este caso el de prueba de trabajo, permanecerá intacto.

Una diferencia entre la estructura de recompensas de nuestro DAG a comparación de la cadena de bloques es que no solo recibirá una recompensa el minero que resuelva un bloque, sino también un número determinado de mineros que lo confirmen posteriormente. Esto incentiva a los mineros a referenciar todos los bloques sin referencias. A los bloques recién creados que aún no tienen una referencia en otros bloques se les llama “hojas” del DAG.

El minado en el DAG de bloques de Horizen será similar al minado tradicional con la excepción de que esperamos que en el DAG se minarán más bloques en total con una dificultad general menor, lo cual debería llevar a la descentralización del proceso de minado, pues no será necesario que tantos mineros individuales se unan a grupos de minería.

leaves leaves

Hemos tenido que hacer también una adaptación a la regla de la cadena más larga que emplean las cadenas de bloques para determinar qué bifurcación de la cadena es válida en caso de una separación. En nuestro DAG existe un algoritmo ligeramente más complejo que determina la validez de dos bloques en conflicto con base en cuántas veces se ha confirmado cada bloque. El principio fundamental del consenso de Nakamoto se mantiene; entre más confirmaciones tenga un bloque en el DG, más alta la probabilidad de que sea el válido de un par en conflicto.

Ajustes de dificultad

Modificamos también el algoritmo que determina el ajuste de la dificultad en el caso de nuestro DAG de bloques. La dificultad determina qué tan difícil es crear un nuevo bloque y, en consecuencia, cuántos bloques pueden crearse durante un plazo dado. Generalmente, la dificultad se ajusta comparando el tiempo que les debería tomar a los mineros crear un bloque nuevo con el tiempo que les toma en realidad. Si están creándose bloques con demasiada frecuencia, la dificultad incrementa; si los mineros están tardando demasiado, disminuye.

Planeamos basar el ajuste de dificultad de nuestro DAG de bloques no solo en el tiempo que les toma a los mineros crear bloques nuevos sino también en el tamaño de los bloques más reciente. Que varios bloques lleguen al límite de su tamaño de manera consecutiva es un indicador de mucha actividad en la red, un hecho que les permite a los mineros producir más bloques durante la misma cantidad de tiempo. Como resultado, se pueden procesar más transacciones durante el mismo periodo y el rendimiento general de la red incrementa. Este mecanismo le permite a nuestro DAG manejar dinámicamente la variabilidad de la actividad en la red sin comprometer su seguridad.

El reto principal

Desde una perspectiva ingenieril, el reto principal en el caso de un DAG de bloques como el que hemos propuesto es establecer el orden de todos los bloques. Mientras que el orden de bloques puede solo ser uno en una cadena de bloques linear, en el caso de un DAG debe ser establecido por un grupo de reglas predefinidas. El ordenamiento de bloques en nuestro DAG dependerá de la intersección de los bloques. Una transacción válida puede incluirse en dos bloques válidos diferentes en un DAG. Al analizar este traslape de transacciones en un grupo de bloques puede establecerse un orden final para todo el conjunto.

Resumen

El rendimiento que puede lograr un DAG de bloques nos motivó a hacer realidad este tipo de protocolo dentro del ecosistema Horizen. La mayoría de los libros contables contenidos en un DAG contienen nodos que constan de una transacción, mientras que el nuestro estará compuesto por bloques.

Minar en un DAG de bloques será similar al minado tradicional, con la excepción de algunas adaptaciones en la estructura de recompensas. Adaptamos también ligeramente la regla de la cadena más larga para hacerla funcionar en el contexto de un DAG y diseñamos un algoritmo para determinar la dificultad de minado no solo con base en el tiempo de bloque pero también en el número de transacciones por bloque. Que un bloque alcance su límite de tamaño rápidamente indica mucha actividad en la red, lo cual llevará a una reducción de la dificultad para que se minen más bloques durante el mismo tiempo. El reto principal al diseñar un protocolo de DAG de bloques es el de establecer un orden para todos los bloques, lo cual se logrará prestando atención al traslape de las transacciones incluidas en más de un bloque.

Contenido para Principiantes a Continuación - DAG de bloques

Una de las limitantes que ha evitado que la tecnología blockchain se adopte en masa es la cuestión de escalabilidad. Hoy por hoy, la mayoría de las cadenas de bloques son capaces de manejar solo unas pocas transacciones por segundo, mientras que una red de pago como la de VISA puede procesar miles de transacciones en el mismo tiempo.

Hay disponibles muchos métodos para escalar una cadena de bloques, dos de los cuales han captado el interés de Horizen. Una solución sería construir un protocolo DAG, la otra sería la habilitación de cadenas laterales, un tema que se abordará más adelante.

Las siglas inglesas DAG provienen de directed acyclic graph, o grafo acíclico dirigido. En la imagen a continuación, la estructura en el extremo izquierdo es un grafo simple, compuesto de nodos y los bordes que los conectan. En un grafo dirigido como el del centro, cada conexión tiene una dirección, indicada por la orientación de las flechas. Un grafo acíclico dirigido, como el que aparece en la extrema derecha, no permite relaciones circulares entre nodos como las que se aprecian en la parte inferior del grafo dirigido.

DAG in ES DAG in ES

Un bloque en un DAG de bloques (block DAG) es similar al bloque de una cadena de bloques, pues posee también un encabezado y número de transacciones. Los mineros minan el bloque, intentando resolver una tarea computacional por medio de conjeturas. El minero que primero resuelve la tarea crea por derecho el próximo bloque, determinando así el orden de las transacciones. Esta manera de lograr un consenso en la red respecto al orden de las transacciones es igual al que utilizan muchas cadenas de bloques, en especial las cadenas PoW (con pruebas de trabajo), un concepto que se explica a fondo en la sección de tecnología.

La principal diferencia entre ambos sistemas es que mientras en una cadena de bloques un bloque siempre hace referencia a otro (el anterior), un bloque en un DAG de bloques puede referirse a más de un bloque anterior. Establecer el orden definitivo de los bloques de un DAG requiere también otro ajuste especial. Abordaremos cómo se establece este orden en la sección de tecnología.

Suponiendo que ambos tipos de bloque contienen el mismo número de transacciones, con solo ver la gráfica a continuación se vuelve evidente que el DAG procesa transacciones más rápidamente que una cadena de bloques, pues posee una mayor capacidad de almacenamiento.

El DAG le introduce una segunda dimensión a lo que de otra manera sería la estructura puramente unidimensional o lineal de una cadena de bloques, un avance prometedor cuando se trata de hacer posible el escalar redes descentralizadas.

Para aprender sobre los DAG con mayor detalle, siéntase libre de leer este artículo en un nivel de conocimiento superior.

DAG Blockchain in ES DAG Blockchain in ES

Resumen

El DAG de bloques emplea el mismo mecanismo de consenso que una cadena de bloques para ponerse de acuerdo respecto al orden de los eventos, pero sirviéndose de una estructura diferente para conectar los bloques individuales. La promesa del DAG es aumentar el rendimiento de un libro contable descentralizado, en este caso, de unas cuantas transacciones por segundo a posiblemente miles, aunque solo el tiempo dirá si este tipo de tecnología se encuentra a la altura de las exigencias del mercado.