Controle de permissões em contratos inteligentes Rust: visibilidade de funções de contrato e acesso privilegiado

robot
Geração de resumo em curso

Controle de permissões em contratos inteligentes Rust

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

  1. Visibilidade dos métodos do contrato
  2. Controle de acesso da função de privilégio

1. Visibilidade de funções de contratos

No contrato inteligente Rust, o controle de visibilidade das funções é muito importante. Tomando como exemplo o incidente de segurança da bolsa Bancor Network em junho de 2020, a definição errada da função de transferência crítica como pública levou a riscos para os ativos dos usuários.

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

  • pub fn: função pública, pode ser chamada de fora do contrato
  • fn: apenas chamável internamente no contrato
  • pub(crate) fn: apenas pode ser chamado dentro de crate

Também é possível implementar funções internas definindo métodos em blocos impl que não são decorados com #[near_bindgen].

Para funções de callback, é necessário definir como public, mas ao mesmo tempo garantir que só possam ser chamadas pelo próprio contrato. Pode-se usar o macro #[private] para implementar isso.

É importante notar que, por padrão, tudo em Rust é privado, o que é diferente do público padrão em algumas versões antigas do Solidity.

2. Controle de acesso das funções privilegiadas

Além da visibilidade da função, é necessário estabelecer um mecanismo completo de lista branca de controle de acesso a partir da perspectiva semântica.

Semelhante ao modificador onlyOwner em Solidity, podemos implementar um Trait personalizado 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); }

Desta forma, só o owner pode chamar certas funções de privilégio.

Com base neste princípio, é possível configurar listas de permissões mais complexas para implementar um controle de acesso em grupos mais refinado.

Mais métodos de controle de acesso, como controle de tempo de chamada e mecanismos de múltiplas assinaturas, serão apresentados em artigos posteriores.

GET0.33%
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
  • 5
  • Republicar
  • Partilhar
Comentar
0/400
Rugman_Walkingvip
· 08-09 05:50
É mais uma armadilha do Bancor, quase perdi tudo.
Ver originalResponder0
TokenToastervip
· 08-07 12:36
bancor é realmente um exemplo de falta de inteligência
Ver originalResponder0
MevTearsvip
· 08-06 06:28
bancor eu já vi isso, realmente é fraco
Ver originalResponder0
OnlyOnMainnetvip
· 08-06 06:26
Uau, ainda tenho medo do que aconteceu com o Bancor.
Ver originalResponder0
0xLuckboxvip
· 08-06 06:18
Por que é que há sempre pessoas a confundir as configurações de permissões?
Ver originalResponder0
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)