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

robot
Geração de resumo em curso

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.

ETH2.88%
Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • 6
  • Partilhar
Comentar
0/400
FlatlineTradervip
· 1h atrás
Vulnerabilidade é a carteira...
Ver originalResponder0
Deconstructionistvip
· 8h atrás
Sugiro adicionar um hot reload.
Ver originalResponder0
rekt_but_not_brokevip
· 8h atrás
Contratos inteligentes, afinal, são tão problemáticos assim?
Ver originalResponder0
LiquidityWizardvip
· 8h 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
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)