Rust contratos inteligentes segurança: práticas de visibilidade de funções e controle de acesso

robot
Geração de resumo em curso

Diário de Desenvolvimento de Contratos Inteligentes em Rust (7) Segurança do Contrato em Relação à Precisão dos Cálculos

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

  1. A visibilidade de acesso/chamadas de métodos de contratos
  2. Controle de acesso de funções privilegiadas/divisão de responsabilidades

1. Visibilidade das funções de contratos

Definir corretamente a visibilidade das funções do contrato é crucial para proteger a segurança do contrato. Como exemplo, o incidente de segurança que ocorreu na exchange Bancor Network em 18 de junho de 2020, onde a configuração incorreta da função de transferência crítica como public resultou em sérios riscos para os ativos dos usuários.

Em contratos inteligentes Rust, a visibilidade das funções é principalmente das seguintes maneiras:

  • pub fn: função pública, qualquer pessoa pode chamar a partir do exterior do contrato
  • fn: privado por padrão, só pode ser chamado dentro do contrato
  • pub(crate) fn: restringir chamadas internas no crate

Além disso, é possível implementar métodos internos definindo um bloco impl sem #[near_bindgen].

Para funções de retorno, devem ser definidas como públicas, mas precisam de controle de acesso adicional:

ferrugem #[private] pub fn resolve_transfer(&mut self) { env::log_str("Este é um callback"); }

2. Controle de Acesso a Funções Privilegiadas

Além da visibilidade das funções, é necessário estabelecer um mecanismo completo de lista branca de controle de acesso. É possível personalizar um Trait para implementar um efeito semelhante ao modificador onlyOwner no Solidity:

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); }

Dessa forma, é possível restringir que apenas o owner possa chamar certas funções privilegiadas. Com base nisso, podem ser configuradas listas de permissões multiusuário mais complexas ou várias listas de permissões, implementando um controle de acesso mais refinado.

No Rust, existem outros métodos de controle de acesso em contratos inteligentes, como controle de tempo de chamada, mecanismos de múltiplas assinaturas, etc., que serão apresentados em artigos futuros.

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
  • 2
  • Partilhar
Comentar
0/400
DAOdreamervip
· 07-23 12:21
A revisão da lista de permissões deve ser rigorosa
Ver originalResponder0
SchroedingerMinervip
· 07-23 12:21
Lista de permissões é uma espada de dois gumes
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)