Contrato de fábrica Sputnik DAO: diseño e implementación unificada para la creación y gestión de DAO.

robot
Generación de resúmenes en curso

Análisis del contrato de fábrica Sputnik DAO

Sputnik DAO utiliza el patrón de diseño de fábrica para lograr la creación y gestión unificada de DAOs en la plataforma. Este artículo presentará en detalle la implementación del patrón de fábrica de la plataforma Sputnik DAO.

1. Introducción a las funciones de DAPP

La plataforma Sputnik DAO ya ha creado múltiples instancias de DAO. Hasta marzo de 2022, el DAO más activo es news.sputnik-dao.near, que tiene 3051 propuestas.

Todos los contratos de instancias de DAO creados en Sputnik DAO se implementan en la cuenta secundaria de sputnik-dao.near, por ejemplo:

  • pcp.sputnik-dao.near
  • test-dao-bro.sputnik-dao.near
  • blaqkstereo.sputnik-dao.near

Los usuarios pueden crear nuevas instancias de DAO llamando al método create() del contrato sputnikdao-factory.

2. Interpretación del código del contrato de fábrica

2.1 Crear DAO

El estado del contrato de sputnikdao-factory incluye principalmente:

  • factory_manager: Proporciona métodos para crear/eliminar/actualizar instancias de DAO
  • daos: Registra las direcciones de las cuentas de todas las instancias de DAO creadas.

create() definición del método:

óxido #[payable] pub fn create(&mut self, name: AccountId, args: Base64VecU8) { let account_id: AccountId = format!('{}.{}', name, env::current_account_id()) .parse() .unwrap(); let callback_args = serde_json::to_vec(&json!({ 'account_id': account_id, 'attached_deposit': U128(env::attached_deposit()), 'predecessor_account_id': env::predecessor_account_id() })) .expect('Error al serializar'); self.factory_manager.create_contract( self.get_default_code_hash(), account_id, 'nuevo', &args.0, 'on_create', &callback_args, ); }

create_contract() método implementado:

  1. Cargar el código de plantilla del contrato DAO
  2. Crear una cuenta para desplegar el contrato DAO
  3. Transferir tokens NEAR
  4. Desplegar el código del contrato
  5. Llamar a la función de inicialización del contrato
  6. Callback on_create() función

on_create() función implementación:

óxido #[private] pub fn on_create( &mut self, account_id: AccountId, attached_deposit: U128, predecessor_account_id: AccountId, bool { if near_sdk::is_promise_success)( { self.daos.insert)&account_id(; verdadero } else { Promise::new)predecessor_account_id(.transfer)attached_deposit.0(; falso } }

![])https://img-cdn.gateio.im/webp-social/moments-db234efe334b609e12be80398e4e6fa5.webp(

) 2.2 actualización DAO

El contrato de fábrica proporciona la interfaz update###( para actualizar el contrato DAO:

óxido pub fn update)&self, account_id: AccountId, code_hash: Base58CryptoHash( { let caller_id = env::predecessor_account_id)(; assert!) caller_id == self.get_owner(( || caller_id == account_id, 'Debe ser actualizado por el propietario de la fábrica o por el propio DAO' ); assert!) self.daos.contains(&account_id(, 'Debe ser un contrato creado por la fábrica' ); self.factory_manager .update_contract)account_id, code_hash, 'update'(; }

![])https://img-cdn.gateio.im/webp-social/moments-373080ddb66a4cb83e0722b387056be0.webp(

3. Análisis de seguridad

La seguridad del contrato de la fábrica Sputnik DAO se manifiesta principalmente en:

  1. Control de permisos

    • el método view no modifica las variables de estado
    • La función de privilegio solo puede ser llamada por el owner
  2. Manejo de errores

    • Verifica que todos los pasos se ejecuten correctamente al crear un DAO
  3. Verificación de lista blanca

    • Solo se permite que factory o el propio DAO llamen a la actualización
  4. Configuración de seguridad predeterminada

    • Se activa la actualización automática al inicializar el contrato DAO

En general, el contrato de la fábrica Sputnik DAO ha implementado un mecanismo de seguridad bastante completo, pero aún necesita atención y mejoras continuas.

![])https://img-cdn.gateio.im/webp-social/moments-8b462e3ac0fd55e990921d21d66e3d42.webp(

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
  • 7
  • Compartir
Comentar
0/400
GasFeeTearsvip
· 08-06 00:58
¡Eh! Otro modelo de fábrica que toma a la gente por tonta.
Ver originalesResponder0
0xSoullessvip
· 08-05 17:59
Solo otra herramienta dao para tomar a la gente por tonta
Ver originalesResponder0
MetaverseMigrantvip
· 08-05 06:24
Esta fábrica es un poco impresionante.
Ver originalesResponder0
gas_fee_therapistvip
· 08-03 07:53
¡Bonito! Otro perro de fábrica ha llegado.
Ver originalesResponder0
retroactive_airdropvip
· 08-03 07:46
Otra vez el patrón de diseño de fábrica, ¿no es un poco obsoleto?
Ver originalesResponder0
SolidityStrugglervip
· 08-03 07:31
Otra vez el contrato de fábrica, ¿cuándo se podrá entender claramente?
Ver originalesResponder0
OnchainDetectivevip
· 08-03 07:31
Entendido, entendido. Este contrato se ve bastante atractivo.
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)