Ir al contenido
AtheronBlockchain
Todos los artículos

Cómo un block-DAG acuerda un único orden

ATON permite a los mineros crear bloques al mismo tiempo. Así es como una regla al estilo GHOSTDAG convierte esa red de bloques en una sola lista que todos aceptan, explicado sin jerga.

Por Shawn Wilson, fundador y consejero delegado

Publicado el · 4 min de lectura

También en English · Français · Deutsch · اردو

Corrientes abstractas de cubos translúcidos unidos por hilos luminosos que convergen en una única línea ordenada sobre un fondo azul oscuro.

La mayoría de las cadenas de bloques funcionan como una única cola. Un minero gana, se añade un bloque y todos esperan al siguiente. Si dos mineros terminan en el mismo instante, solo sobrevive un bloque y el otro se descarta.

ATON se está construyendo de otra manera. Los mineros pueden crear bloques al mismo tiempo, y la cadena los conserva. Eso plantea una pregunta evidente. Los pagos necesitan un único orden. Si dos bloques gastan la misma moneda, solo uno de esos pagos puede contar. Entonces, ¿cómo se convierte una red de bloques en una sola lista con la que todos los nodos están de acuerdo?

Qué es un block-DAG

En una cadena simple, cada bloque apunta a un solo padre. En ATON, cada bloque nuevo apunta a todos los bloques recientes que su minero ha visto y a los que nada más ha apuntado todavía. El resultado no es una línea, sino una red. Los bloques solo apuntan hacia atrás en el tiempo, nunca hacia delante, y nada forma bucles. Esa estructura es lo que se conoce como block-DAG, un grafo dirigido sin ciclos. Puede pensar en ella como una cadena a la que se le permite ser ancha.

La red en sí no es el problema. El problema es leerla. Dos nodos que miran la misma red deben obtener exactamente la misma lista ordenada, usando únicamente los propios bloques. Ese es el trabajo de la regla de ordenación.

Primer paso: encontrar los bloques bien conectados

La regla parte de una observación sencilla sobre el comportamiento honesto. Un minero honesto se entera rápido de los bloques nuevos y apunta a ellos. Así que los bloques honestos, en conjunto, están estrechamente conectados. Cada uno hace referencia a la mayoría de los bloques creados poco antes, y la mayoría de los bloques creados poco después hacen referencia a él.

Un bloque creado de forma aislada tiene otro aspecto. Si alguien mina en privado y publica los bloques tarde, esos bloques apuntan a poco, y poco apunta hacia ellos. Quedan sueltos en el borde de la red.

La regla aprovecha esta diferencia. Selecciona el grupo más grande de bloques que están todos estrechamente conectados entre sí y trata ese grupo como el cuerpo principal de la cadena. Los bloques mal conectados se conservan igualmente, pero se colocan después del cuerpo principal, no dentro de él.

Segundo paso: elegir una columna vertebral dentro del cuerpo principal

Dentro del grupo bien conectado, la regla elige una columna vertebral. Partiendo de los bloques más nuevos y recorriendo hacia atrás, en cada paso prefiere el bloque cuyo pasado conectado pesa más. Esto se parece a la idea conocida de seguir la cadena con más trabajo acumulado. La diferencia es que el peso cuenta toda la red conectada que hay detrás de un bloque, no solo una fina línea de antecesores.

Como la columna vertebral se elige por peso, extenderla con honestidad es la forma más fácil de aportar a ella. Retener bloques no ayuda, porque los bloques retenidos acaban mal conectados y aportan poco peso.

Tercer paso: completar el resto

La columna vertebral ofrece un eje. Cada bloque de la columna incorpora después los bloques a los que hace referencia y que aún no se han colocado, en un orden fijo. Cuando dos bloques son realmente iguales, decide un criterio de desempate basado en el hash del bloque, de modo que todos los nodos resuelven el empate de la misma manera.

El resultado es una única lista. Cada bloque de la red ocupa una posición en ella, y cualquier nodo que tenga los mismos bloques produce la misma lista. Nadie vota, nadie se coordina y no se confía en nadie. El orden es una función pura de los datos.

Qué significa el orden para un pago

Una vez que existe la lista, las transacciones se aplican en el orden de la lista. Si un bloque posterior contiene un pago que entra en conflicto con uno anterior, el pago posterior simplemente se omite. El bloque que lo contenía sigue contando, y el trabajo del minero sigue siendo válido.

Este es el sentido práctico de todo el diseño. El trabajo no se descarta porque dos mineros hayan coincidido en el tiempo. Más bloques por unidad de tiempo significa más espacio para pagos, sin pedir a los mineros que compitan por un único hueco.

Table: Una cadena única y un block-DAG, lado a lado

Cadena únicaBlock-DAG
Bloques al mismo tiempoSobrevive unoSe conservan todos
Cada bloque apunta aUn padreTodos los bloques recientes sin referenciar
El orden procede deLa posición en la líneaUna regla aplicada a toda la red
Pagos en conflictoSe pierden con su bloqueEl posterior se omite, el bloque se queda

Límites honestos

Ordenar no es lo mismo que dar finalidad. La posición de un bloque muy reciente todavía puede moverse un poco a medida que llegan bloques nuevos y la columna vertebral se asienta. Cuanto más profundo está un bloque, más peso conectado se acumula encima de él, y más difícil resulta moverlo. Cuánto debería esperar para un pago de un importe determinado es una pregunta que responderemos con parámetros publicados, no con una promesa hoy.

Si quiere seguir el trabajo a medida que avanza, la página del proyecto está en aton-chain.com.

Artículos por correo

Un correo cuando se publica un artículo nuevo, en tu idioma. Primero confirmamos tu dirección, y cada correo lleva un enlace para darte de baja.

Sin spam. Date de baja con un clic.