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.
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'(;
}
La seguridad del contrato de la fábrica Sputnik DAO se manifiesta principalmente en:
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
Manejo de errores
Verifica que todos los pasos se ejecuten correctamente al crear un DAO
Verificación de lista blanca
Solo se permite que factory o el propio DAO llamen a la actualización
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.
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.
24 me gusta
Recompensa
24
7
Compartir
Comentar
0/400
GasFeeTears
· 08-06 00:58
¡Eh! Otro modelo de fábrica que toma a la gente por tonta.
Ver originalesResponder0
0xSoulless
· 08-05 17:59
Solo otra herramienta dao para tomar a la gente por tonta
Ver originalesResponder0
MetaverseMigrant
· 08-05 06:24
Esta fábrica es un poco impresionante.
Ver originalesResponder0
gas_fee_therapist
· 08-03 07:53
¡Bonito! Otro perro de fábrica ha llegado.
Ver originalesResponder0
retroactive_airdrop
· 08-03 07:46
Otra vez el patrón de diseño de fábrica, ¿no es un poco obsoleto?
Ver originalesResponder0
SolidityStruggler
· 08-03 07:31
Otra vez el contrato de fábrica, ¿cuándo se podrá entender claramente?
Ver originalesResponder0
OnchainDetective
· 08-03 07:31
Entendido, entendido. Este contrato se ve bastante atractivo.
Contrato de fábrica Sputnik DAO: diseño e implementación unificada para la creación y gestión de DAO.
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:
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:
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:
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:
Control de permisos
Manejo de errores
Verificación de lista blanca
Configuración de seguridad predeterminada
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(