¿Cuál es la regla exacta de la "cadena más larga" implementada en el protocolo "Homestead" de Ethereum?

Este documento de 2016 afirma (en la sección 3.3.2, hablando de la implementación real de Ethereum en oposición a la especificación) que:

aunque los bloques tío que están incluidos en un bloque reciben una recompensa, no cuentan para la dificultad total de una cadena , es decir, Ethereum usa una regla de cadena más larga con recompensas adicionales para los bloques tío. Esto contradice claramente la afirmación de Ethereum de usar un protocolo blockchain que adapta GHOST

(Énfasis en el original). La única referencia que se ofrece es a este documento que parece afirmar una afirmación contrastante, que:

El proyecto Ethereum ha adoptado e implementado una variante de GHOST.

Su única referencia es a ethereum.org, por lo que tampoco ayuda. Soy consciente de la extensa documentación que describe las reglas de Ethereum para recompensar los bloques ommer/uncle, y con frecuencia dice que "contribuyen a la seguridad". Sin embargo, la cuestión específica de si los ommers/tíos se cuentan para determinar la cadena más larga no parece estar tan claramente documentada.

El primer artículo continúa afirmando:

Ethereum también modificó recientemente su algoritmo de cadena más larga para incorporar un desempate uniforme... [que] permite que un minero egoísta aumente sus posibilidades de ponerse al día con la cadena honesta

Y en este caso se vincula a un compromiso específico , así como a este documento sobre estrategias óptimas de minería egoísta que señala que el desempate uniforme es una compensación específica, lo que hace que los ataques sean mucho más difíciles para los atacantes altamente conectados y coordinados, mientras que los hace un poco más fáciles para menos. conectados o coordinados. Sin embargo , dado que ese documento es un documento sobre Bitcoin y asume una regla de la cadena más larga que no cuenta el tío (ni tiene en cuenta específicamente las implicaciones estratégicas de las recompensas ommer/tío), evaluar el impacto en el mundo real del desempate uniforme en Ethereum todavía requiere saber si la dificultad ommer/uncle se está contando o no en primer lugar.

Entonces, ¿qué están haciendo los nodos de Ethereum en Homestead en cuanto a su regla de cadena más larga real ?

¿Están contando la dificultad del tío como contribuyente a la cadena más larga? ¿Y siguen haciendo desempates uniformes? ¿Se han realizado otros cambios? Por ejemplo, la minería SPV predominó en bitcoin a pesar de que en realidad no se implementó en los lanzamientos oficiales. En teoría, Ethereum prescribe que los bloques en la cadena principal estén completamente validados, mientras que los bloques ommer/uncle solo tengan sus encabezados validados. Sin embargo, tanto las marcas de tiempo de bloque como la inclusión de transacciones definitivamente han sido modificadas por los mineros antes por razones estratégicas.

Lo que quiero es simplemente la mejor respuesta a esta pregunta que podemos obtener actualmente para los nodos que realmente se ejecutan en grupos, clientes, etc. Tenga en cuenta que los enlaces a los libros blancos o amarillos son insuficientes aquí, ya que este documento afirma específicamente que la implementación difiere de la teoría y documentación. Las respuestas deben provenir de los desarrolladores de clientes reales, como geth y parity, y/o vincularse directamente a repositorios que muestren cómo se implementa realmente la regla.

Quiero preguntar si el hijo del bloque del tío obtendrá una recompensa.

Respuestas (3)

Ethereum determina la cadena más larga en función de la dificultad total , que está incrustada en el encabezado del bloque. Los lazos se rompen al azar.

La dificultad total es la simple suma de los valores de dificultad de los bloques sin contar explícitamente los tíos. La dificultad se calcula en función de la dificultad principal y la marca de tiempo, la marca de tiempo del bloque y el número de bloque , nuevamente sin referencia a los tíos.

Todos estos, excepto el desempate, son críticos para el consenso y, por lo tanto, se puede esperar que sean los mismos en todos los clientes.

Gracias por la claridad: afirma los puntos del documento de 1) Los tíos no cuentan para la dificultad total 2) Geth implementa el desempate uniforme (aunque otros clientes no).
@all: ¿Las preguntas vinculadas aquí necesitan respuestas nuevas o mejoradas, o aclaración del documento técnico? Por ejemplo, partes como "contribuir a la seguridad de la cadena principal" .
¿Seguramente esto fue un error? La publicación de blog de Vitalik que justifica el tiempo de bloque de ~12 segundos se basó en el beneficio de seguridad de GHOST, pero si los tíos no cuentan para la dificultad, entonces no hay beneficio de seguridad. Actualmente, Ethereum parece vulnerable a ataques de ~34 % según el análisis en eprint.iacr.org/2015/1019.pdf . (Es un límite inferior teórico, suponiendo rondas discretas de propagación de la información que toman 12,6 segundos, por lo que la realidad podría ser un poco diferente, pero un ataque del 35 al 40 % parece muy plausible).
¿Quiere decir que Ethereum ahora está usando la selección de cadena más larga como en Bitcoin y la única diferencia es que Ethereum activa los bloques tío?
@MWH y la dificultad se ajusta utilizando también la tasa de emisión de tíos, pero sí, parece que "más largo"/"más pesado" se basa en la dificultad total a lo largo de la cadena, sin tíos.

Las cosas han cambiado desde que se publicó la respuesta de Nick.

Especialmente, con la introducción de EIP 100 (que fue aceptado en junio de 2017, solo 3 meses después de la respuesta de Nick) que cambia el algoritmo de cálculo de dificultad para incluir a los tíos.

Soy nuevo en Ethereum, así que no entiendo completamente qué efecto tiene esto, así que si alguien pudiera explicarlo, sería genial.

Nuevos enlaces al código:

Cadena más larga basada en la dificultad total.

Cálculo de dificultad (ahora también dependiendo de los tíos)

Creo que estás respondiendo una pregunta diferente, pero relevante. El EIP ajusta la fórmula de orientación de la dificultad para ajustarse a la emisión de ommer. Sin embargo, esto no significa que se utilice una dificultad menor para calcular la cadena "más pesada".

Aquí se indica que el protocolo GHOST no se usa en ethereum. ¿Por qué Ethereum abandonó el protocolo GHOST?

y que fue abandonado 2 semanas después del lanzamiento de mainet y que Ethereum usa una versión modificada del protocolo Inclusivo