Seguridad de contratos inteligentes en Rust: Prácticas de visibilidad de funciones y control de acceso

robot
Generación de resúmenes en curso

Diarios de desarrollo de contratos inteligentes en Rust (7) Seguridad del contrato en cuanto a la precisión de los cálculos

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

  1. Visibilidad de acceso/llamada a los métodos de contratos inteligentes
  2. Control de acceso / división de responsabilidades de funciones privilegiadas

1. Visibilidad de las funciones del contrato

Establecer correctamente la visibilidad de las funciones del contrato es crucial para proteger la seguridad del contrato. Tomando como ejemplo el incidente de seguridad que ocurrió en el intercambio Bancor Network el 18 de junio de 2020, al configurar incorrectamente la función de transferencia clave como pública, se expusieron los activos de los usuarios a un riesgo grave.

En los contratos inteligentes de Rust, la visibilidad de las funciones se clasifica principalmente en las siguientes categorías:

  • pub fn: función pública, cualquier persona puede llamar desde fuera del contrato
  • fn: privado por defecto, solo se puede llamar desde el interior del contrato
  • pub(crate) fn: restringir llamadas dentro de crate

Además, se pueden implementar métodos internos definiendo bloques impl que no lleven #[near_bindgen].

Para las funciones de retorno, deben ser públicas pero requieren control de acceso adicional:

óxido #[private] pub fn resolve_transfer(&mut self) { env::log_str("Este es un callback"); }

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. Se puede personalizar Trait para lograr un efecto similar al modificador onlyOwner en Solidity:

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

De esta manera, se puede limitar que solo el owner pueda llamar a ciertas funciones privilegiadas. Con base en esto, se pueden establecer listas blancas de múltiples usuarios más complejas o múltiples listas blancas, logrando un control de acceso agrupado más detallado.

En los contratos inteligentes de Rust también hay otros métodos de control de acceso, como el control del momento de la llamada y el mecanismo de múltiples firmas, que se presentarán en artículos posteriores.

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
  • 2
  • Compartir
Comentar
0/400
DAOdreamervip
· 07-23 12:21
La revisión de la Lista de permitidos debe ser estricta.
Ver originalesResponder0
SchroedingerMinervip
· 07-23 12:21
La lista de permitidos es una espada de doble filo
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)