Upgrades Contracts

O MultiGov foi projetado para ser flexƭvel, mas estƔvel. As atualizaƧƵes devem ser raras e cuidadosamente avaliadas devido Ơ complexidade do sistema e Ơ sua natureza cross-chain. Quando as atualizaƧƵes forem necessƔrias, elas devem ser planejadas e executadas meticulosamente para garantir a integridade e continuidade do sistema.

ConsideraƧƵes-chave para AtualizaƧƵes

HubGovernor:

  • NĆ£o Ć© atualizĆ”vel. Uma nova implantação exige a reimplantação de vĆ”rios componentes do sistema MultiGov. Consulte a seção "Processo para AtualizaƧƵes Significativas do Sistema" para mais detalhes.

HubVotePool:

  • Pode ser substituĆ­do definindo um novo HubVotePool no HubGovernor.

  • Requer o re-registro de todos os spokes no novo HubVotePool.

  • Deve registrar o tipo de consulta e a implementação para decodificação de votos, chamando registerQueryType no novo HubVotePool.

  • Uma nova proposta deve autorizar o governador a usar o novo pool de votos do hub e tambĆ©m lidar com o registro dos decodificadores de consulta apropriados e o registro dos SpokeVoteAggregators apropriados.

SpokeMessageExecutor:

  • AtualizĆ”vel via padrĆ£o de proxy UUPS.

  • Armazena parĆ¢metros crĆ­ticos no SpokeMessageExecutorStorage.

HubEvmSpokeAggregateProposer:

  • Precisa ser reimplantado se o HubGovernor for alterado.

  • Requer o re-registro de todos os spokes após a reimplantação.

HubProposalMetadata:

  • Precisa ser reimplantado se o HubGovernor for alterado, pois ele faz referĆŖncia ao HubGovernor como um parĆ¢metro.

SpokeMetadataCollector:

  • Requer reimplantação se o ID da cadeia do hub mudar ou se o HubProposalMetadata for alterado.

Processo para Atualização Significativa do Sistema

Nova Implantação do HubGovernor:

  1. Implante o novo contrato HubGovernor.

Reimplantação de Componentes:

  1. Reimplante o HubEvmSpokeAggregateProposer com o novo endereƧo do HubGovernor.

  2. Reimplante o HubProposalMetadata referenciando o novo HubGovernor.

  3. Se o ID da cadeia do hub mudar, reimplante o SpokeMetadataCollector em todas as cadeias spoke.

Atualização do HubVotePool:

  1. Defina o novo HubVotePool no novo HubGovernor.

  2. Registre todos os spokes no novo HubVotePool.

  3. Registre o tipo de consulta e a implementação para decodificação de votos (HubEvmSpokeVoteDecoder).

Re-registro de Spokes:

  1. Re-registre todos os spokes no novo HubEvmSpokeAggregateProposer.

Verificação e Testes:

  1. Realize testes completos da nova configuração do sistema.

  2. Verifique se todas as interações cross-chain estão funcionando corretamente.

Transição de Sistema e Depreciação:

  1. Crie uma proposta para alterar o timelock para o novo governador.

  2. Comunique claramente Ơ comunidade quais mudanƧas foram feitas.

Monitoramento:

  1. Implemente um período de transição no qual o novo sistema serÔ monitorado de perto.

  2. Resolva rapidamente quaisquer problemas que surgirem.

ConsideraƧƵes Importantes

  • Sempre priorize a estabilidade do sistema. AtualizaƧƵes devem ser realizadas apenas quando absolutamente necessĆ”rias.

  • Realize auditorias completas de todas as novas implementaƧƵes de contratos antes de propor uma atualização.

  • Considere todos os componentes afetados em todas as cadeias no plano de atualização.

  • ForneƧa documentação completa para a comunidade sobre o processo de atualização e quaisquer mudanƧas nas funcionalidades.

  • Sempre teste as atualizaƧƵes extensivamente em testnets antes de implementĆ”-las em produção.

Last updated