Diário de Desenvolvimento de Contratos Inteligentes em Rust (7) Segurança de Contratos: Controle de Acesso
Este artigo apresentará o controle de permissões em contratos inteligentes Rust a partir de duas perspectivas:
Visibilidade dos métodos de contratos inteligentes
Controle de acesso de funções privilegiadas
1. Visibilidade da função do contrato
Em contratos inteligentes Rust, o controle de visibilidade de funções é muito importante. O SDK NEAR define os seguintes atributos de visibilidade com o macro #[near_bindgen]:
pub fn: função pública, pode ser chamada de fora do contrato
fn: função interna, só pode ser chamada dentro do contrato
pub(crate) fn: restringir chamadas dentro do crate
Além disso, é possível definir métodos internos através de um bloco de contrato impl independente:
Além da visibilidade das funções, é necessário estabelecer um mecanismo de lista branca de controle de acesso. Pode-se implementar um Trait personalizado:
Desta forma, é possível implementar um mecanismo básico de lista branca, e ainda pode ser expandido para realizar controle de acesso complexo, como múltiplos usuários e múltiplas listas brancas.
A segurança dos contratos precisa ser considerada a partir de múltiplos aspectos, incluindo o controle do momento de chamada, mecanismos de múltiplas assinaturas, entre outros, que serão detalhados em artigos futuros.
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.
16 Curtidas
Recompensa
16
9
Repostar
Compartilhar
Comentário
0/400
GasWaster
· 07-24 14:55
Está a estudar coisas profundas novamente.
Ver originalResponder0
rugdoc.eth
· 07-24 12:22
Isso é muito clichê, não é?
Ver originalResponder0
GateUser-9ad11037
· 07-24 03:37
Deve-se adicionar um mecanismo de lista negra?
Ver originalResponder0
DefiPlaybook
· 07-23 10:17
Dados abrangentes mostram que a gestão de visitas continua a ser um dos três principais vazamentos de contratos.
Ver originalResponder0
SeeYouInFourYears
· 07-21 20:27
rust é assim, não é?
Ver originalResponder0
OnchainDetective
· 07-21 20:27
O controle de permissões é como uma farsa, já era hora de investigar as portas dos fundos.
Segurança de contratos inteligentes Rust: Detalhes sobre controle de acesso e gestão de permissões
Diário de Desenvolvimento de Contratos Inteligentes em Rust (7) Segurança de Contratos: Controle de Acesso
Este artigo apresentará o controle de permissões em contratos inteligentes Rust a partir de duas perspectivas:
1. Visibilidade da função do contrato
Em contratos inteligentes Rust, o controle de visibilidade de funções é muito importante. O SDK NEAR define os seguintes atributos de visibilidade com o macro #[near_bindgen]:
Além disso, é possível definir métodos internos através de um bloco de contrato impl independente:
ferrugem #[near_bindgen] impl Contract { pub fn increment(&mut self) { self.internal_increment(); } }
impl Contrato { pub fn internal_increment(&mut self) { self.counter += 1; } }
Para a função de callback, deve ser definida como pub e usar o macro #[private] para garantir que só pode ser chamada pelo próprio contrato:
ferrugem #[near_bindgen] impl Contrato { #[private] pub fn resolve_transfer(&mut self) { // Lógica de callback } }
2. Controle de acesso das funções privilegiadas
Além da visibilidade das funções, é necessário estabelecer um mecanismo de lista branca de controle de acesso. Pode-se implementar um Trait personalizado:
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); }
Na função de privilégio, chamar assert_owner() pode restringir que apenas o owner possa executar:
ferrugem impl Contract { pub fn privileged_function(&mut self) { self.assert_owner(); // Operações de privilégio } }
Desta forma, é possível implementar um mecanismo básico de lista branca, e ainda pode ser expandido para realizar controle de acesso complexo, como múltiplos usuários e múltiplas listas brancas.
A segurança dos contratos precisa ser considerada a partir de múltiplos aspectos, incluindo o controle do momento de chamada, mecanismos de múltiplas assinaturas, entre outros, que serão detalhados em artigos futuros.