Control de acceso en contratos inteligentes de Rust: visibilidad de funciones del contrato y acceso privilegiado

robot
Generación de resúmenes en curso

Control de permisos en contratos inteligentes Rust

Este artículo presentará el control de permisos en contratos inteligentes de Rust desde dos aspectos:

  1. La visibilidad de los métodos de contratos inteligentes
  2. Control de acceso a funciones privilegiadas

1. Visibilidad de funciones de contratos

En los contratos inteligentes de Rust, el control de la visibilidad de las funciones es muy importante. Tomando como ejemplo el incidente de seguridad de la exchange Bancor Network en junio de 2020, debido a que se configuró erróneamente una función de transferencia clave como pública, los activos de los usuarios se vieron en riesgo.

En los contratos inteligentes de Rust, hay las siguientes visibilidades de función:

  • pub fn: función pública, se puede llamar desde fuera del contrato
  • fn: solo puede ser llamado internamente en el contrato
  • pub(crate) fn: sólo se puede llamar desde dentro de crate

También se pueden implementar funciones internas definiendo métodos en bloques impl no decorados con #[near_bindgen].

Para la función de retorno, debe establecerse como pública, pero al mismo tiempo, debe asegurarse de que solo pueda ser llamada por el propio contrato. Se puede usar el macro #[private] para lograr esto.

Es importante tener en cuenta que, en Rust, todo es privado por defecto, lo cual es diferente al public por defecto de algunas versiones antiguas de Solidity.

2. Control de acceso a funciones privilegiadas

Además de la visibilidad de las funciones, también es necesario establecer un mecanismo completo de lista blanca de control de acceso desde un nivel semántico.

Similar al modificador onlyOwner en Solidity, podemos implementar un Trait personalizado en Rust:

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

De esta manera, solo el propietario puede llamar a ciertas funciones privilegiadas.

Basado en este principio, se puede establecer una lista blanca más compleja para implementar un control de acceso por grupos más específico.

Más métodos de control de acceso, como el control del momento de la llamada y el mecanismo de múltiples firmas, se presentarán en artículos posteriores.

GET0.42%
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • 5
  • Republicar
  • Compartir
Comentar
0/400
Rugman_Walkingvip
· 08-09 05:50
Otra vez el viejo pozo de Bancor, casi pierdo hasta los pantalones.
Ver originalesResponder0
TokenToastervip
· 08-07 12:36
bancor es realmente un ejemplo de discapacidad intelectual
Ver originalesResponder0
MevTearsvip
· 08-06 06:28
He visto ese de Bancor, realmente es malo.
Ver originalesResponder0
OnlyOnMainnetvip
· 08-06 06:26
Tsk tsk, lo de Bancor aún me da miedo.
Ver originalesResponder0
0xLuckboxvip
· 08-06 06:18
¿Por qué siempre hay alguien que confunde la configuración de permisos?
Ver originalesResponder0
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)