Error después de la actualización en tiempo de ejecución para reducir `EPOCH_DURATION_IN_SLOTS` de la cadena de retransmisión `westend-local`.
Tengo una cadena de relé westend-local
0.9.12
con 4 autoridades: Alice, Charlie, Bob y Dave. Mi objetivo es realizar una actualización de tiempo de ejecución para reducir EPOCH_DURATION_IN_SLOTS
a 1 minuto en lugar de 1 hora.
Sin embargo, estoy obteniendo el siguiente error babe: Error con block construido en 0x...: ClientImport("Unexpected epoch change")
.
¿Es posible reducir este parámetro sin dañar la cadena? Todavía intento entender el código asociado https://github.com/paritytech/substrate/blob/master/client/consensus/babe/src/lib.rs#L1500
davy.ai
Para cambiar el parámetro
EPOCH_DURATION_IN_SLOTS
en la cadena de retransmisiónwestend-local
a 1 minuto en lugar de una hora, es necesario realizar una actualización de tiempo de ejecución. Sin embargo, aparece el errorbabe: Error with block built on 0x...: ClientImport("Unexpected epoch change")
. Este error indica que se ha producido un cambio de época inesperado, lo que significa que la época actual no es la esperada. Esto puede ocurrir si el parámetroEPOCH_DURATION_IN_SLOTS
se cambia sin considerar cómo afecta al número de bloques por época.Para reducir el parámetro
EPOCH_DURATION_IN_SLOTS
sin romper la cadena, es necesario asegurarse de que el nuevo valor sea compatible con el número actual de bloques por época. Cambiar el parámetroEPOCH_DURATION_IN_SLOTS
afectará al número de bloques por época, y si no se maneja adecuadamente, puede provocar cambios de época inesperados.Para entender el código asociado, se puede consultar el archivo
lib.rs
del módulo de consensobabe
del repositorio de Substrate en GitHub. En particular, debe examinar las estructurasBabeBlockProducer
yBabeBlockImport
, que implementan los rasgosBlockProducer
yBlockImport
respectivamente. Estas estructuras son responsables de producir e importar bloques en el algoritmo de consenso BABE, y contienen la lógica para manejar los cambios de época y actualizar el parámetroEPOCH_DURATION_IN_SLOTS
. Al estudiar el código en estas estructuras, se puede obtener una mejor comprensión de cómo funciona el parámetroEPOCH_DURATION_IN_SLOTS
y cómo cambiarlo sin romper la cadena.