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.
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.
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:
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).
Nika Kurashvili
Nika Kurashvili
Meni Rosenfeld