Control de acceso a contratos inteligentes en Rust: visibilidad de funciones y gestión de acceso privilegiado

Control de permisos en contratos inteligentes de Rust

Este artículo explorará el problema del control de permisos en los contratos inteligentes de Rust desde dos aspectos:

  1. La visibilidad de los métodos del contrato
  2. Control de acceso a las funciones privilegiadas

Visibilidad de las funciones de contratos

En los contratos inteligentes de Rust, el control de la visibilidad de las funciones es crucial. Tomando como ejemplo el incidente de seguridad que ocurrió en el intercambio de Bancor Network en 2020, se expusieron los activos de los usuarios debido a que se configuró incorrectamente una función de transferencia clave como pública.

En los contratos inteligentes de Rust en NEAR, las visibilidades de las funciones son principalmente las siguientes:

  • pub fn: función pública, puede ser llamada desde fuera del contrato
  • fn: solo se puede llamar dentro del contrato
  • pub(crate) fn: restringido a la llamada interna en crate

Además, definir funciones en un bloque impl que no está modificado por #[near_bindgen] también permite establecerlas como funciones internas.

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

Es importante tener en cuenta que, en Rust, todo es privado por defecto, excepto los elementos en pub Trait y pub Enum.

Control de acceso a funciones privilegiadas

Además de la visibilidad de las funciones, también es necesario establecer un mecanismo de control de acceso completo desde el nivel semántico. Similar al modificador onlyOwner en Solidity, podemos definir un trait similar en Rust:

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

El uso de tal rasgo puede lograr el control de acceso a funciones privilegiadas, asegurando que solo el propietario del contrato pueda llamar a estas funciones.

Basado en este principio, podemos implementar un control de acceso detallado de múltiples usuarios en la lista blanca o varios grupos de listas blancas mediante la personalización de traits más complejos.

Además, se pueden implementar métodos de control de acceso adicionales, como el control del momento de la llamada y mecanismos de múltiples firmas, para satisfacer las necesidades de seguridad en diferentes escenarios.

GET2.5%
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
  • 6
  • Republicar
  • Compartir
Comentar
0/400
WalletManagervip
· 08-01 21:48
El control de permisos debe ser estricto.
Ver originalesResponder0
HashBrowniesvip
· 08-01 05:29
El control de permisos es realmente increíble.
Ver originalesResponder0
GasFeeCriervip
· 07-30 19:25
La configuración de permisos debe hacerse con precaución.
Ver originalesResponder0
TeaTimeTradervip
· 07-30 19:21
El control de permisos es realmente difícil de manejar.
Ver originalesResponder0
CoinBasedThinkingvip
· 07-30 19:07
¿Hay demasiadas vulnerabilidades de seguridad?
Ver originalesResponder0
NotFinancialAdvicevip
· 07-30 18:57
Contenido realmente útil
Ver originalesResponder0
  • Anclado
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)