Controle de permissões de contratos inteligentes Rust: visibilidade de funções e gestão de acesso privilegiado

Controle de permissões em contratos inteligentes Rust

Este artigo irá explorar a questão do controle de permissões em contratos inteligentes Rust sob dois aspectos:

  1. Visibilidade dos métodos de contratos
  2. Controle de acesso das funções de privilégio

Visibilidade de funções de contratos

No contrato inteligente Rust, o controle da visibilidade das funções é crucial. Tomando como exemplo o incidente de segurança que ocorreu na exchange Bancor Network em 2020, a configuração errada da função de transferência crítica como pública colocou os ativos dos usuários em risco.

Na Rust contratos inteligentes da NEAR, a visibilidade das funções é principalmente das seguintes formas:

  • pub fn: função pública, pode ser chamada de fora do contrato
  • fn: só pode ser chamado dentro do contrato
  • pub(crate) fn: restringir chamadas internas no crate

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

Para a função de retorno, deve ser definida como pública, mas ao mesmo tempo deve ser restringida para que só possa ser chamada pelo próprio contrato. Pode-se usar a macro #[private] para implementar isso.

É importante notar que, por padrão, tudo em Rust é privado, exceto os itens em pub Trait e pub Enum.

Controle de Acesso às Funções Privilegiadas

Além da visibilidade da função, é necessário estabelecer um mecanismo de controle de acesso completo a partir da perspectiva semântica. Semelhante ao modificador onlyOwner em Solidity, podemos definir um trait semelhante em Rust:

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 tipo de trait pode implementar o controle de acesso a funções privilegiadas, garantindo que apenas o proprietário do contrato possa chamar essas funções.

Com base neste princípio, podemos implementar um controle de acesso refinado para múltiplos utilizadores na lista branca ou múltiplos grupos de listas brancas através da personalização de traits mais complexos.

Além disso, também é possível implementar controle do momento da chamada, mecanismos de múltiplas assinaturas e outros métodos de controle de acesso para atender às necessidades de segurança em diferentes cenários.

GET0.1%
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
  • Repostar
  • Compartilhar
Comentário
0/400
WalletManagervip
· 08-01 21:48
O controle de permissões deve ser mais rigoroso.
Ver originalResponder0
HashBrowniesvip
· 08-01 05:29
O controle de permissões é realmente incrível.
Ver originalResponder0
GasFeeCriervip
· 07-30 19:25
A configuração de permissões deve ser feita com cuidado
Ver originalResponder0
TeaTimeTradervip
· 07-30 19:21
O controle de permissões é realmente difícil de lidar.
Ver originalResponder0
CoinBasedThinkingvip
· 07-30 19:07
Há muitas vulnerabilidades de segurança.
Ver originalResponder0
NotFinancialAdvicevip
· 07-30 18:57
Conteúdo realmente útil
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)