¿Cómo funciona realmente el protocolo GHOST?

Estoy tratando de entender el protocolo GHOST... Sé que es demasiado para leer, pero no es mi culpa. Es GHOST eso es complicado (supongo)

Según leo, se dice que:

en lugar de una regla de consenso de cadena más larga, GHOST sigue el camino del subárbol con la prueba de trabajo/dificultad más difícil combinada.

ingrese la descripción de la imagen aquí

OK, Déjame explicarte cómo lo entiendo. Cada nodo comenzó en el bloque 0. Luego, otros nodos extrajeron el bloque 1B, el atacante tiene en cuenta el bloque 1A ... y el atacante resuelve su bloque (el más bajo) en secreto. No lo transmite. Otros nodos están en 1B y ahora resultó que había una bifurcación (2D, 2C, 2B) ya que los bloques se extrajeron al mismo tiempo. luego, algunos nodos siguieron adelante y obtuvieron la cadena más larga que termina en 5B (la cadena más alta). Los nodos restantes (L1) están en 2C y 2B. algunos nodos (L2) de estos nodos restantes (L1) están en 3E, 3D, 3C. y uno de los nodos de L2 está ahora en 4B. Ahora, tomemos un momento y digamos que todos en la red transmitieron sus cadenas de bloques. La cadena del atacante no se aceptará porque solo hay 1 subárbol (solo una ruta). Además, la cadena más alta es solo una. Como podemos ver en la imagen, el subárbol más grande es 3E, 3D, 3C. Entonces, lo que sucede es que algunos nodos comparten 0->1B->2C->3E, algunos comparten 0->1B->2C->3D->4B, algunos comparten 0->1B->2C->3C. Digamos que soy nodeA y recibo todas las cadenas transmitidas. Cuando tengo todos esos, tengo que elegir entre ellos. Como descubrí que se derivan diferentes cadenas de 2C, debería seguir ese camino. Lo sigo y trato de encontrar el más largo en ellos que da como resultado 0->1B->2C->3d->4B y ese es el que voy a aceptar.

En este caso, la cadena del atacante está condenada. así que creo que una de las posibilidades del problema, que es tener una potencia de tasa de hash del 51% y transmitir la cadena más larga, se ha reducido (lo cual es genial). Pero todavía veo un par de problemas.

  1. Si los bloques no se extraen al mismo tiempo, no tendremos subárboles como se muestra en la imagen, por lo tanto, el protocolo GHOST es impotente aquí. y todavía tenemos un 51% de posibilidades de ataque y, en este caso, la cadena secreta del atacante tendrá éxito.
  2. Entonces, si los bloques se extraen al mismo tiempo, es cuando el protocolo GHOST nos ayudará. Supongo que el protocolo GHOST es un poco más de seguridad adicional además de la prueba de trabajo. pero tan pronto como los nodos siguieron el protocolo GHOST (lo que significa que aceptaron la cadena - de la imagen es 0->1B->2C->3D->4B), regresamos a donde estábamos (la cadena más larga gana). hasta que los bloques comiencen a ser minados al mismo tiempo nuevamente.
  3. Digamos que el atacante transmitió su cadena y mi nodo la recibió. Y también digamos que no he recibido la cadena de otros nodos debido al retraso en la propagación de la red. ¿Cómo sabrá mi nodo que no debe aceptar la cadena del atacante? si mi nodo hubiera recibido todas las cadenas de otros nodos, se daría cuenta de que el subárbol en 0->1B->2C es más grande y rechazaría la cadena del atacante. Alguna idea ?

Respuestas (1)

Creo que lo principal que te has perdido es el problema que GHOST se propuso resolver.

En primer lugar, está pensado como una actualización de escalabilidad/velocidad. Queremos aumentar el tamaño de cada bloque y/o disminuir el intervalo entre bloques. Cualquiera de estos aumentaría la relación entre el tiempo de propagación y el intervalo de bloque.

Cuanto mayor sea la proporción, más bloques se extraen al mismo tiempo. Y luego se desperdicia mucho hashrate honesto en bloques que quedan huérfanos.

Esto hace que sea más fácil para un atacante atacar, porque no necesita tener más tasa de hash que la red honesta; solo necesita tener más tasa de hash que la tasa de hash no desperdiciada de la red honesta.

Esto no es un gran problema ahora , cuando los bloques están separados por 10 minutos y tienen aproximadamente 3 MB. Pero si intentáramos, digamos, reducir el intervalo entre bloques a 1 segundo, el tiempo para propagar bloques sería un múltiplo del tiempo promedio para encontrar un bloque, lo que generaría un desperdicio enorme y un ataque fácil.

GHOST (y el SPECTRE más reciente) está diseñado para permitirnos aumentar el tamaño o la velocidad de los bloques sin este desperdicio.

Al contrario de lo que dijiste, simplemente adoptar GHOST no causará menos ramificación en el árbol de bloques. Solo significará que no desperdiciaremos hashrate debido a esta ramificación.

Re pregunta 3 - Creo que tienes las cosas al revés. La forma en que funciona un ataque de doble gasto es:

  1. El atacante paga al comerciante, tx se incluye en la cadena honesta.
  2. El comerciante da el producto.
  3. El atacante libera la cadena secreta, donde el tx se reemplaza por uno que acredita al atacante.
  4. El atacante tiene tanto el producto como su dinero.

Si no está actualizado sobre el estado de la red y cree que la cadena del atacante está ganando incluso si no es así, en realidad está mejor: verá que el atacante tiene la intención de no pagar y usted sabrá que no debe hacerlo. enviar el producto.

Después de enviar el producto, quiero que toda la cadena reconozca el tx que me paga. Incluso si hay nodos que no están actualizados y creen brevemente que la cadena del atacante es válida, eso se resolverá rápidamente después de que reciban los bloques que les faltaban (y verán que la cadena honesta tiene más peso).

Gracias por la buena explicación. ahora entiendo para que sirve el protocolo fantasma. Simplemente no entiendo cómo resuelve el problema (desperdicio del hashrate del minero, disminución de la posibilidad del atacante)...
¿Podría explicar cómo resuelve el problema, comenzando con el escenario cuando hay 10 nodos y todos ellos minaron el bloque al mismo tiempo? Uno de ellos también es un atacante. Déjame saber si es mejor hacer una nueva pregunta.
@NikaKurashvili: Considere la imagen en su pregunta. El atacante solo tiene el 33% del hashrate total: pudo encontrar 6 bloques, mientras que la red honesta encontró 12. Pero puede ponerlos todos en una fila ordenada, por lo que en el esquema de cadena más largo, podría crear una cadena más larga que la red honesta (porque solo una rama de la red honesta es contrarrestante). En el protocolo GHOST, no puede: el árbol enraizado en 1B es más pesado, por lo que se ignorará la rama larga pero delgada del atacante. Se cuentan todos los bloques extraídos por la red honesta, a pesar de la ramificación.