¿Qué sucede si el tiempo de bloque cambia a 5 segundos?

Relacionado con esto y esto .

El algoritmo de ajuste de dificultad es:

block_diff = parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99) + int(2**((block.number // 100000) - 2))

donde // es el operador de división de enteros, p. 6 // 2 = 3, 7 // 2 = 3, 8 // 2 = 4.

Por lo que entiendo, se eligió un umbral de 10 segundos para mantener el tiempo de bloque en el rango de 10-20 segundos. Además, el código fuente está disponible aquí . Entonces, ¿puedo modificar el algoritmo (tal vez cambiar //10a //5) y crear una red de cadena de bloques que tarde 5 secondsen confirmar un bloque? ¿Es esto alcanzable? Esperaba obtener una respuesta a esta pregunta a través de esta publicación de blog, pero no pude descubrir las fallas exactas al hacer esto.

PD: Básicamente, tengo una aplicación que se ejecuta en una cadena de bloques privada que requiere menos tiempo de confirmación de bloque. Empecé la cadena de bloques con una dificultad baja ( 0x400) pero aumentó con el tiempo para mantener un tiempo de bloque promedio de 15 segundos. Entonces, estoy buscando una manera de evitar que esta dificultad aumente. ¿Es posible lograr esto sin comprometer la seguridad?

estoy usando geth-1.4.9

Respuestas (1)

Una cosa a considerar sería la tasa de huérfanos , a la que se alude en los comentarios del hilo al que se vinculó.

Cuanto menor establezca la dificultad, menor será el tiempo de bloque, que es lo que está buscando.

Sin embargo, cuanto menor sea la dificultad, mayor será la posibilidad de que varios mineros resuelvan el bloque al mismo tiempo y la cadena se bifurque. En última instancia, esto lleva a que los bloques en una de las bifurcaciones queden huérfanos, y es por eso que Ethereum (con su tiempo de bloqueo de 15 segundos) ya usa el protocolo GHOST (o una versión limitada del mismo). Tendría que experimentar para ver si los reordenamientos de la cadena causarían algún problema a su red.

Tenga en cuenta que el algoritmo al que se ha vinculado incluye los cambios realizados para la bomba de dificultad , lo que significa que la dificultad aumentará con el número de bloque .

... int(2**((block.number // 100000) - 2)) <---- this part

El objetivo de esto es eventualmente hacer que la minería sea (efectivamente) imposible , allanando el camino para el cambio a PoS. Presumiblemente querrá usar el algoritmo tal como estaba antes de esos cambios .

¿Conoces alguna plataforma donde pueda ejecutar simulaciones y experimentar con tiempos de bloque reducidos?