Rust contratos inteligentes segurança avançada: prática de controle de permissões e gestão de acessos

robot
Geração do resumo em andamento

Diário de Desenvolvimento de Contratos Inteligentes em Rust (7) Segurança de Contratos: Controle de Permissões

Este artigo abordará o controle de permissões em contratos inteligentes Rust sob duas perspetivas:

  1. Visibilidade dos métodos de contrato
  2. Controle de acesso à função privilegiada

1. Visibilidade das funções de contrato

O controle de visibilidade das funções de contrato é crucial para proteger funcionalidades-chave. Tomando como exemplo o incidente de segurança da Bancor Network em junho de 2020, a exposição acidental de uma função de transferência crítica como public colocou os ativos dos usuários em risco.

Em contratos inteligentes Rust, a visibilidade das funções pode ser das seguintes formas:

  • pub fn: função pública, pode ser chamada externamente
  • fn: função interna, só pode ser chamada dentro do contrato
  • pub(crate) fn: restringir a chamada dentro do crate

Além disso, definir a função em um bloco impl que não é modificado por #[near_bindgen] também pode torná-la uma função interna.

Para a função de callback, deve ser definida como pública, mas ao mesmo tempo garantir que só pode ser chamada pelo próprio contrato. Pode usar o macro #[private] para implementar esta funcionalidade.

É importante notar que a visibilidade padrão em Rust é privada, ao contrário de algumas versões do Solidity, onde é pública por padrão. A exceção são os itens em pub trait e pub enum, que são públicos por padrão.

2. Controle de acesso das funções privilegiadas

Além da visibilidade da função, é necessário estabelecer um mecanismo de lista branca para controlar o acesso a funções privilegiadas. Semelhante ao modificador onlyOwner no Solidity, pode-se implementar um traço Ownable:

ferrugem pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }

Usar esse trait pode limitar que apenas o owner possa chamar certas funções privilegiadas. Com base nesse princípio, é possível configurar uma lista de permissões mais complexa para implementar um controle de acesso mais refinado.

3. Outros métodos de controlo de acesso

Pode-se considerar métodos adicionais de controle de acesso, como controle de momento da chamada do contrato, mecanismo de chamada multi-assinatura, governança DAO, entre outros. Estes serão detalhados em artigos posteriores.

Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 7
  • Compartilhar
Comentário
0/400
LootboxPhobiavip
· 11h atrás
Fiquei preso, não consigo aprender contratos inteligentes.
Ver originalResponder0
GasOptimizervip
· 11h atrás
A visualização do consumo de gás em multi-assinatura é mais um grande tema.
Ver originalResponder0
BridgeJumpervip
· 11h atrás
O código está seguro, certo? Continua a ser injetado.
Ver originalResponder0
UncleLiquidationvip
· 11h atrás
A segurança da multi-assinatura é razoável.
Ver originalResponder0
UncleWhalevip
· 11h atrás
A segurança deve ser levada a sério.
Ver originalResponder0
BankruptcyArtistvip
· 11h atrás
Qual é a utilidade do multi-assinatura? Se há vulnerabilidades, ainda pode ser explorado.
Ver originalResponder0
MEVSandwichvip
· 11h atrás
Bom trabalho! O multisig parece seguro~
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)