Actualizando la Cadena
Iniciar la Red
Inicia la red y desencadena la actualización después de que la propuesta haya sido aprobada.
# inicia un nodo completo de la aplicación gaia
$ crossfid start
# configura la cli
$ crossfid config trust-node true
$ crossfid config chain-id testing
# crea una propuesta de gobernanza de actualización de software
$ crossfid tx gov submit-proposal software-upgrade \
--title --description \
--from --upgrade-height --deposit 10000000mpx
# una vez que la propuesta sea aprobada, puedes consultar el plan pendiente
$ crossfid query upgrade plan
Realizando una actualización
Asumiendo que la propuesta pasa, la cadena se detendrá en la altura de actualización dada.
Puedes detener y iniciar el binario original todo lo que quieras, pero se negará a ejecutarse después de la altura de actualización.
Necesitamos un nuevo binario con el manejador de actualización instalado. Los registros deberían verse como:
E[2019-11-05|12:44:18.913] SE NECESITA ACTUALIZACIÓN "
" a la altura: : módulo=main
E[2019-11-05|12:44:18.914] ¡¡¡FALLA DE CONSENSO!!!
...
Ten en cuenta que el proceso se colgará indefinidamente (no sale para evitar bucles de reinicio). Por lo tanto, debes matar manualmente el proceso y reemplazarlo con un nuevo binario. Hazlo ahora con Ctrl+C
o killall crossfid
.
En gaia/app/app.go
, después de que se inicializa y se configura el upgrade.Keeper
en la aplicación, establece el Handler
de actualización correspondiente con el correcto
:
app.upgradeKeeper.SetUpgradeHandler("
", func(ctx sdk.Context, plan upgrade.Plan) {
// lógica personalizada después de que se haya ejecutado la actualización de la red
})
Recibirás un pánico ante cualquier error: esto haría que la actualización falle si no se pudiera ejecutar la migración, y ningún nodo avanzaría, permitiendo una recuperación manual. Si ignoramos los errores, procederíamos con una actualización incompleta y tendríamos un tiempo muy difícil recuperando el estado adecuado.
Compilar el Nuevo Binario
Ahora, compila el nuevo binario y ejecuta el código actualizado para completar la actualización:
# crea un nuevo binario de gaia con el manejador de actualización agregado
$ make install
# Reinicia la cadena usando el nuevo binario. Deberías ver que la cadena se reanuda desde
# la altura de la actualización:
# `I[2019-11-05|12:48:15.184] aplicando actualización
a la altura: módulo=main`
$ crossfid start
# verifica que no haya un plan pendiente
$ crossfid query upgrade plan
# verifica que puedas consultar el encabezado del bloque de la actualización completada
$ crossfid query upgrade applied