Pular para o conteúdo principal

Atualizando a Cadeia

Iniciar a Rede

Inicie a rede e acione a atualização após a proposta ter sido aprovada.


# iniciar um nó completo da aplicação gaia
$ crossfid start

# configure o cli
$ crossfid config trust-node true
$ crossfid config chain-id testing

# crie uma proposta de atualização de governança
$ crossfid tx gov submit-proposal software-upgrade
\
--title
--description
\
--from --upgrade-height --deposit 10000000mpx

# assim que a proposta for aprovada, você pode consultar o plano pendente
$ crossfid query upgrade plan

Realizando uma atualização

Presumindo que a proposta seja aprovada, a cadeia irá parar na altura de atualização dada.

Você pode parar e iniciar o binário original quantas vezes quiser, mas ele se recusará a rodar após a altura da atualização.

Precisamos de um novo binário com o manipulador de atualização instalado. Os logs devem se parecer com isso:

E[2019-11-05|12:44:18.913] ATUALIZAÇÃO "
" NECESSÁRIA na altura: : módulo=main
E[2019-11-05|12:44:18.914] FALHA DE CONSENSO!!!
...

Note que o processo ficará suspenso indefinidamente (não sai para evitar loops de reinício). Portanto, você deve matar o processo manualmente e substituí-lo por um novo binário. Faça isso agora com Ctrl+C ou killall crossfid.

Em gaia/app/app.go, após upgrade.Keeper ser inicializado e configurado no app, defina o Handler de atualização correspondente com o correto:

    app.upgradeKeeper.SetUpgradeHandler("
", func(ctx sdk.Context, plan upgrade.Plan) {
// lógica personalizada após a execução da atualização da rede
})

Você receberá um pânico em qualquer erro - isso causaria a falha da atualização se a migração não pudesse ser executada, e nenhum nó avançaria - permitindo uma recuperação manual. Se ignorássemos os erros, então prosseguiríamos com uma atualização incompleta e teríamos um tempo muito difícil para recuperar o estado correto.

Compilar o Novo Binário

Agora, compile o novo binário e execute o código atualizado para completar a atualização:


# crie um novo binário do gaia com o manipulador de atualização adicionado
$ make install

# Reinicie a cadeia usando o novo binário. Você deve ver a cadeia retomar a partir

# da altura de atualização:

# `I[2019-11-05|12:48:15.184] aplicando atualização
na altura: módulo=main`
$ crossfid start

# verifique se não há plano pendente
$ crossfid query upgrade plan

# verifique se você pode consultar o cabeçalho do bloco da atualização concluída
$ crossfid query upgrade applied