De blockchain a DAG: deshacerse de los intermediarios

En este artículo, le contaré sobre el DAG (Gráfico Acíclico Dirigido) y su uso en registros distribuidos, y lo compararemos con la cadena de bloques.



DAG no es nuevo en el mundo de las criptomonedas. Es posible que haya oído hablar de él como una solución a los problemas de escalabilidad de blockchain. Pero hoy no hablaremos sobre la escalabilidad, sino sobre lo que hace que las criptomonedas sean diferentes de todo lo demás: descentralización, ausencia de intermediarios y resistencia a la censura.



También le mostraré que el DAG es realmente más resistente a la censura y que no hay intermediarios para acceder al registro.



En las cadenas de bloques habituales para nosotros, los usuarios no tienen acceso directo al registro en sí. Cuando desee agregar una transacción al registro, debe "pedir" al productor de bloques (productor de bloques, también conocido como "minero") que haga esto. Son los mineros quienes deciden qué transacción agregar al siguiente bloque y cuáles no. Son los mineros los que tienen acceso exclusivo a los bloques y el derecho de decidir qué transacción aceptar para agregar al registro.

Los mineros son intermediarios entre usted y el registro distribuido.



En la práctica, generalmente un pequeño número de grupos mineros controlan colectivamente más de la mitad de la potencia informática de la red. Para bitcoin, estos son cuatro grupos, para Ethereum: dos. En caso de colusión, pueden bloquear cualquier transacción que deseen.



En los últimos años, se han propuesto muchas variaciones de blockchains, que difieren en los principios para elegir productores de bloques. Pero los productores de bloques por sí mismos no van a ninguna parte, todavía están "parados en la barrera": cada transacción debe pasar por el productor de bloques, y si él no la acepta, la transacción, de hecho, no existe.



Este es un problema inevitable en el caso de la cadena de bloques. Y si queremos resolverlo, debemos cambiar radicalmente el diseño y eliminar por completo los bloques y los fabricantes de bloques. Y en lugar de construir una cadena de bloques, uniremos las transacciones en sí, incluidos los hashes de varios anteriores en cada transacción. Como resultado, obtenemos una estructura conocida en matemáticas como un gráfico acíclico dirigido - DAG.

Ahora todos tienen acceso directo al registro, sin intermediarios. Cuando desee agregar una transacción al registro, simplemente agréguela. Elija varias transacciones principales, agregue sus datos, firme y envíe su transacción a sus pares en la red. Listo No hay nadie que le impida hacer esto, por lo que su transacción ya está en el registro.

Esta es la forma más descentralizada y más libre de censura para agregar transacciones al registro sin intermediarios. Porque todos quieren simplemente agregar sus transacciones al registro sin pedir permiso a nadie.



DAG puede considerarse la tercera etapa de la evolución del registro. Al principio había registros centralizados, donde un lado controlaba el acceso a ellos. Luego vinieron las blockchains, en las que ya había varios controladores que registraron las transacciones en el registro. Y finalmente, en el DAG no hay controladores, los usuarios agregan sus transacciones directamente.



Ahora que tenemos tanta libertad, no debería conducir al caos. Debemos tener un acuerdo sobre el estado del registro. Y este consentimiento, o consenso, generalmente significa un acuerdo sobre dos cosas:

  1. Que paso
  2. ¿En qué orden sucedió esto?

Podemos responder fácilmente la primera pregunta: tan pronto como se agregó una transacción creada correctamente al registro, sucedió. Y el punto. La información sobre esto puede llegar a todos los participantes en diferentes momentos, pero al final todos los nodos recibirán esta transacción y descubrirán que ha ocurrido.

Si se tratara de una cadena de bloques, los mineros decidirían qué estaba pasando. Todo lo que el minero decide incluir en el bloque es lo que sucede. Todo lo que no incluye en el bloque no sucede.

En blockchains, los mineros también resuelven el segundo problema de consenso: el orden. Se les permite organizar transacciones dentro del bloque como lo deseen.

¿Cómo determinar el orden de las transacciones en el DAG?



Solo porque nuestro gráfico está dirigido, ya tenemos algún orden. Cada transacción se refiere a uno o más padres anteriores. Los padres, a su vez, se refieren a sus padres, y así sucesivamente. Los padres obviamente aparecen antes de las transacciones de los hijos. Si se puede llegar a alguna de las transacciones haciendo clic en los enlaces padre-hijo, sabemos con certeza el orden entre las transacciones en esta cadena de transacciones.



Pero el orden entre transacciones no siempre se puede determinar solo a partir de la forma del gráfico. Por ejemplo, cuando dos transacciones se encuentran en ramas paralelas de un gráfico.



Para resolver la ambigüedad en tales casos, confiamos en los llamados proveedores de pedidos. También los llamamos "testigos". Estos son usuarios comunes cuya tarea es enviar constantemente transacciones a la red de manera ordenada, es decir. para que cada una de sus transacciones anteriores se pueda lograr haciendo clic en los enlaces "padre-hijo". Los proveedores de pedidos son usuarios de confianza, y toda la red confía en ellos para no violar esta regla. Para confiar racionalmente en ellos, requerimos que cada proveedor de pedidos sea una persona u organización conocida (no anónima) y tenga algo que podría perderse si infringe las reglas, por ejemplo, una reputación o un negocio basado en la confianza.



Los proveedores de pedidos son seleccionados por los usuarios, y cada usuario incluye una lista de sus proveedores de confianza en cada transacción que envía a la red. Esta lista consta de 12 proveedores. Este es un número bastante pequeño para que una persona pueda verificar la identidad y la reputación de cada uno de ellos, y suficiente para que la red continúe funcionando en caso de problemas inevitables con una minoría de proveedores de pedidos.

Esta lista de proveedores varía de usuario a usuario, pero las listas de transacciones vecinas pueden diferir en un máximo de un proveedor.



Ahora que tenemos los proveedores de pedidos, podemos resaltar sus transacciones en el DAG y organizar todas las demás transacciones en torno al pedido creado por ellos. Existe la posibilidad de crear dicho algoritmo (consulte el Libro blanco de Obyte para obtener detalles técnicos).

Pero el pedido en toda la red no puede determinarse instantáneamente, necesitamos tiempo para que los proveedores de pedidos envíen un número suficiente de sus transacciones para asegurar el pedido final de las transacciones pasadas.

Y, dado que el orden está determinado solo por las posiciones de las transacciones de los proveedores en el DAG, tarde o temprano todos los nodos de la red recibirán todas las transacciones y llegarán a la misma conclusión con respecto al orden de las transacciones.



Entonces, tenemos un acuerdo sobre lo que consideramos que sucedió: cualquier transacción que ingresó al DAG sucedió. También estamos de acuerdo en el orden de los eventos: esto es visible sobre la base de transacciones relacionadas o se deduce del orden de las transacciones enviadas por los proveedores de pedidos. Entonces tenemos un consenso.



Tenemos esta opción de consenso en Obyte. A pesar de que el acceso al registro de Obyte está completamente descentralizado, el consenso sobre el orden de las transacciones todavía está centralizado, ya que 10 de los 12 proveedores están controlados por el creador (Anton Churyumov), y solo dos de ellos son independientes. Estamos buscando candidatos que quieran convertirse en uno de los proveedores independientes de orden para ayudarnos a descentralizar el establecimiento del orden en el registro.

Recientemente, apareció un tercer candidato independiente que quiere establecer y mantener un nodo del proveedor de pedidos: la Universidad de Nicosia.



Ahora, ¿cómo controlamos los gastos dobles?

De acuerdo con las reglas, al detectar dos transacciones que gastan la misma moneda, gana esa transacción que apareció anteriormente en el orden final de todas las transacciones. El segundo está deshabilitado por el algoritmo de consenso.


Si es posible establecer un orden entre dos transacciones que gastan una moneda (en relaciones padre-hijo), entonces todos los nodos rechazan inmediatamente tal intento de doble gasto.



Si el pedido no es visible desde la relación parental entre dos de esas transacciones, ambos son aceptados en el registro, y tendremos que esperar un consenso y establecer el orden entre ellos utilizando los proveedores de pedidos. Luego, la transacción anterior gana y la segunda se invalida.



Aunque la segunda transacción se vuelve inválida, todavía permanece en el registro, porque ya tiene transacciones posteriores que se refieren a ella, lo que no violó nada y no sabía que en el futuro esta transacción se volverá inválida. De lo contrario, tendríamos que eliminar al padre de las buenas transacciones posteriores, lo que violaría el principio principal de la red: cualquier transacción correcta se acepta en el registro.



Esta es una regla muy importante que permite que todo el sistema sea resistente a los intentos de censura.

Supongamos que todos los proveedores de pedidos conspiran en un intento de "censurar" una transacción en particular. Pueden ignorarlo y nunca elegir un "padre" para sus transacciones, pero esto no es suficiente, esta transacción aún se puede incluir indirectamente como el padre de alguna otra transacción emitida por cualquier usuario de la red que no esté involucrado en la conspiración. Con el tiempo, dicha transacción recibirá más y más hijos, nietos y bisnietos de usuarios comunes, expandiéndose como una bola de nieve, y todos los proveedores de pedidos acordados tendrán que ignorar estas transacciones también. Al final, deberán censurar toda la red, lo que equivale a sabotaje.



Por lo tanto, el DAG sigue siendo resistente a la censura, incluso si hay una colusión de proveedores de pedidos, superando así la cadena de bloques en la resistencia a la censura, en la que no podemos hacer nada si los mineros deciden no incluir ninguna de las transacciones. Y esto se deduce de la propiedad principal de DAG: la participación en el registro es absolutamente independiente y sin intermediarios, y las transacciones son irreversibles.

Source: https://habr.com/ru/post/477032/


All Articles