Volver al inicio
Cinco ideas. Empieza donde quieras.

GHOSTDAG

GHOSTDAG: ¿cómo llegan todos los nodos al mismo orden dentro de un BlockDAG?

Un BlockDAG puede conservar, dentro de la misma estructura, bloques que se crearon en paralelo.

Pero eso todavía no es suficiente.

Si dos bloques se crearon en paralelo, el grafo puede decirnos:

«Los dos existen, y los dos se conectan con el mismo pasado.»

Por sí solo, no nos dice:

¿Cuál debería ir primero cuando se comprueban las transacciones que hay dentro?

Kaspa usa GHOSTDAG para eso.

¿Por qué necesitamos un orden?

Imagina que un bloque contiene:

Emma → Liam: 30 KAS

Un bloque en paralelo contiene:

Emma → Olivia: los mismos 30 KAS

Los dos bloques pueden quedarse en el BlockDAG.

Pero los dos pagos no se pueden aceptar.

Para que cada computadora llegue a la misma respuesta, necesitan llegar al mismo orden.

Si el pago a Liam va primero, el mismo dinero ya no está disponible para el pago a Olivia.

Así que:

Conservar los bloques es un problema.

Ordenarlos es otro.

GHOSTDAG le da a cada nodo las mismas reglas para ordenar los bloques

Cada nodo mira el BlockDAG y aplica las mismas reglas de GHOSTDAG.

Esas reglas miran:

cómo están conectados los bloques, y la prueba de trabajo que hay detrás.

Como los nodos usan las mismas reglas, pueden llegar a la misma respuesta sobre cómo se debe ordenar la historia.

No depende de:

«¿Qué bloque llegó primero a mi computadora?»

Un nodo puede enterarse primero de un bloque, mientras otro nodo se entera primero del otro bloque.

El orden tiene que salir de las reglas del protocolo, no del orden local de llegada en una computadora.

Los números muestran un orden ilustrativo de los bloques conectados. No es un cálculo de GHOSTDAG ni una garantía de aceptación; las reglas de las transacciones siguen vigentes.

GHOSTDAG identifica un camino preferido a través del grafo

Puedes pensar el BlockDAG como una red de caminos conectados.

GHOSTDAG identifica un camino central preferido según las reglas del protocolo y la prueba de trabajo que hay detrás del grafo.

Pero no tira simplemente todo lo que no está exactamente en ese camino.

Los bloques creados en paralelo todavía se pueden incluir en el orden general.

Esa es una diferencia importante respecto de un diseño de una sola cadena, donde con el tiempo permanece una línea principal.

¿Qué son los bloques «Blue» y «Red»?

GHOSTDAG clasifica los bloques como parte de la forma en que analiza el grafo.

Algunos se clasifican como Blue y otros como Red.

Los nombres pueden confundir si se toman demasiado al pie de la letra:

Blue no significa «bloque bueno».

Red no significa «bloque falso» ni «bloque malo».

El color describe el lugar del bloque en el cálculo de GHOSTDAG y su relación con otros bloques.

Un bloque Red puede seguir siendo un bloque válido creado por un minero honesto.

Para quien empieza, la idea importante es:

Los colores ayudan a GHOSTDAG a organizar el trabajo que ocurrió en paralelo.

No necesitas la matemática exacta para entender la idea principal.

GHOSTDAG está diseñado alrededor de un límite elegido de antemano para el trabajo en paralelo

Si dos mineros honestos trabajan casi al mismo tiempo porque la información todavía no llegó a los dos, eso es un evento normal de la red.

GHOSTDAG está diseñado para manejar cierta cantidad de este trabajo en paralelo.

Las reglas del protocolo incluyen un límite elegido de antemano para las condiciones de red alrededor de las cuales está diseñado GHOSTDAG.

No necesitas recordar un número para entender el punto:

Kaspa no supone que cada bloque tenga que llegar a todos antes de que se pueda crear el siguiente.

El protocolo está construido para manejar que se creen varios bloques antes de que la información haya tenido tiempo de llegar a todos.

Después de conocer el orden, las transacciones todavía tienen que comprobarse

GHOSTDAG no significa:

«Todo lo que hay dentro de cada bloque se acepta.»

Ayuda a determinar un orden acordado para la historia.

Una vez que hay un orden, los nodos todavía aplican las reglas de las transacciones.

De vuelta al ejemplo:

  1. Un bloque contiene Emma → Liam: 30 KAS.
  2. Un bloque en paralelo contiene Emma → Olivia: los mismos 30 KAS.
  3. GHOSTDAG ayuda a determinar un orden acordado entre los bloques.
  4. La primera transacción de ese orden puede gastar el dinero.
  5. Cuando se comprueba la segunda, el dinero ya no está disponible, así que no se puede aceptar.

Así que es útil mantener separados estos trabajos:

GHOSTDAG determina el orden.

Las reglas de las transacciones determinan qué es válido dentro de ese orden.

Esto es lo que hace útil al BlockDAG como historia compartida

Sin GHOSTDAG, tendríamos un grafo de bloques conectados, pero todavía necesitaríamos una forma de que todos los nodos lo usen como la misma historia.

En resumen:

El BlockDAG nos dice qué está conectado con qué.

GHOSTDAG determina cómo se debe ordenar esa historia conectada.

Las reglas de las transacciones determinan qué acciones se aceptan dentro de ese orden.

¿Por qué importa esto con una tasa alta de bloques?

Cuanto más frecuentemente se crean los bloques, más natural es que se creen varios bloques antes de que la información sobre los otros haya llegado a cada minero.

En lugar de tratar cada evento así como un problema en el que solo puede permanecer una rama, Kaspa puede:

mantener conectados los bloques en paralelo, y después ordenarlos con GHOSTDAG.

Esa es una parte importante de cómo Kaspa puede funcionar con una tasa alta de bloques.

Eso lleva a la siguiente pregunta:

Si se crean más bloques cada segundo, ¿qué significa eso de verdad para la capacidad de transacciones y para la velocidad que experimenta quien usa la red?

Fuentes

Las fuentes externas están en inglés.