Detalhes sobre a atualização de contratos inteligentes Rust: as melhores práticas de Ethereum a NEAR

robot
Geração do resumo em andamento

Métodos de atualização de contratos inteligentes Rust detalhados

Os contratos inteligentes, como uma forma de programa, inevitavelmente apresentam falhas e vulnerabilidades. Mesmo após extensos testes e auditorias, ainda podem surgir problemas. Uma vez que uma vulnerabilidade é explorada por um atacante, pode resultar em consequências graves, como a perda de ativos dos usuários. Portanto, a capacidade de atualização dos contratos é muito importante, e este artigo irá apresentar as maneiras de atualizar contratos Rust.

Métodos de atualização de contratos Ethereum

Os contratos inteligentes na Ethereum têm imutabilidade, e não podem ser modificados diretamente após a implantação. Normalmente, são utilizados os seguintes métodos para atualização:

  1. Implantar um novo contrato, modificar o endereço do contrato na DApp. A desvantagem é que é necessário migrar os dados de estado do contrato antigo.

  2. Arquitetura de separação de dados e lógica. Armazenar dados em contratos de estado, e implementar a lógica em outro contrato. Durante a atualização, basta atualizar o contrato lógico.

  3. Usar contratos inteligentes. Os contratos inteligentes armazenam dados e chamam o contrato lógico através de deleGatecall; durante a atualização, basta atualizar o endereço do contrato lógico.

Método de atualização de contratos NEAR

Usando o projeto StatusMessage como exemplo, apresentamos o método de atualização dos contratos NEAR:

1. Estrutura de dados do contrato não foi modificada

Se apenas modificar a lógica do contrato, sem envolver alterações na estrutura de dados, pode usar diretamente o comando near deploy para reimplantar o novo código. Os dados originais serão mantidos.

2. A estrutura de dados do contrato foi modificada

Se a estrutura de dados for alterada, a reimplementação direta causará uma incompatibilidade entre a nova e a antiga estrutura de dados, impossibilitando a leitura normal dos dados.

3. Usar o método Migrate para atualizar

NEAR fornece o método Migrate para ajudar na atualização:

  1. Adicionar o método migrate no novo contrato
  2. Chame o método migrate durante a implantação para realizar a migração de dados
  3. Após a migração, a nova funcionalidade de contratos inteligentes poderá ser utilizada normalmente.

Considerações de segurança na atualização de contratos

  1. Controle de permissões - A função de atualização deve ser uma função only owner.
  2. Recomenda-se definir o owner como DAO, para evitar riscos de centralização
  3. Use #[init(ignore_state)] para garantir que o estado não seja carregado antes da execução da migração
  4. Apagar a função de migração após a migração, evitando chamadas duplicadas
  5. A nova estrutura de dados é inicializada durante a migração.

Através do design razoável de um plano de atualização, é possível alcançar a escalabilidade do contrato, garantindo a segurança e melhorando a manutenibilidade a longo prazo do projeto.

ETH4.55%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 6
  • Compartilhar
Comentário
0/400
FlatlineTradervip
· 2h atrás
Vulnerabilidade é a carteira...
Ver originalResponder0
Deconstructionistvip
· 9h atrás
Sugiro adicionar um hot reload.
Ver originalResponder0
rekt_but_not_brokevip
· 9h atrás
Contratos inteligentes, afinal, são tão problemáticos assim?
Ver originalResponder0
LiquidityWizardvip
· 9h atrás
teoricamente falando, padrões de proxy são apenas mutações de estado revestidas com 73,4% mais gás... smh
Ver originalResponder0
SchrödingersNodevip
· 9h atrás
Mais uma vez a velha operação de alterar o endereço do contrato.
Ver originalResponder0
NestedFoxvip
· 9h atrás
rust é muito complicado aqui
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)