Diário de Desenvolvimento de Contratos Inteligentes Rust (10-2): Análise do Contrato da Fábrica DAO Sputnik
Este artigo irá analisar em profundidade a implementação do design do modelo de fábrica da plataforma Sputnik-DAO (sputnikdao-factory).
1. Contrato de Fábrica Sputnik-DAO
Sputnik-DAO adotou o padrão de design de fábrica de criação para implementar a criação e gestão unificada do DAO( de organização autônoma descentralizada sob esta plataforma.
O estado do contrato da fábrica é composto principalmente por duas partes:
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
19 Curtidas
Recompensa
19
5
Compartilhar
Comentário
0/400
JustHereForAirdrops
· 07-25 18:43
Estudos mostraram que criar um DAO será tão simples quanto montar um site.
Análise do contrato do Sputnik DAO Factory: Criação, Atualização e Design de Segurança
Diário de Desenvolvimento de Contratos Inteligentes Rust (10-2): Análise do Contrato da Fábrica DAO Sputnik
Este artigo irá analisar em profundidade a implementação do design do modelo de fábrica da plataforma Sputnik-DAO (sputnikdao-factory).
1. Contrato de Fábrica Sputnik-DAO
Sputnik-DAO adotou o padrão de design de fábrica de criação para implementar a criação e gestão unificada do DAO( de organização autônoma descentralizada sob esta plataforma.
O estado do contrato da fábrica é composto principalmente por duas partes:
ferrugem pub struct SputnikDAOFactory { factory_manager: FactoryManager, daos: UnorderedSet\u003caccountid\u003e, }
![])https://img-cdn.gateio.im/webp-social/moments-22ee206b84145d4d511a0b0fec691dce.webp(
2. Criar DAO
Criar uma instância DAO usando o método create)(:
ferrugem #) pub fn create[payable]&mut self, name: AccountId, args: Base64VecU8( { let account_id: AccountId = format!)"{}.{}", name, env::current_account_id(() .parse)( .unwrap)(; // ... self.factory_manager.create_contract) self.get_default_code_hash((, account_id, "novo",} &args.0, "on_create", &callback_args, ); }
os principais passos do método create_contract)(:
![])https://img-cdn.gateio.im/webp-social/moments-78921e045e487159a6dd01b0f3466573.webp(
3. Atualizar DAO
Através do método update)(, é possível atualizar o contrato DAO:
ferrugem 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, "Deve ser atualizado pelo proprietário da fábrica ou pelo próprio DAO" ); // ... self.factory_manager .atualizar_contrato)id_conta, hash_codigo, "atualizar"(; }
![])https://img-cdn.gateio.im/webp-social/moments-db234efe334b609e12be80398e4e6fa5.webp(
4. Análise de Segurança
O contrato da fábrica Sputnik-DAO garante a segurança do contrato através destes mecanismos.
![])https://img-cdn.gateio.im/webp-social/moments-373080ddb66a4cb83e0722b387056be0.webp(
![])https://img-cdn.gateio.im/webp-social/moments-8b462e3ac0fd55e990921d21d66e3d42.webp(
![])https://img-cdn.gateio.im/webp-social/moments-a8d69d504693c5c14767aed9244a090a.webp(
![])https://img-cdn.gateio.im/webp-social/moments-729b65b1335931b4645ff5a9981d125b.webp(
![])https://img-cdn.gateio.im/webp-social/moments-074c1aa0b7f9adfa5780a29c73654fc0.webp(
![])https://img-cdn.gateio.im/webp-social/moments-aebf6315f45abba98b7345259ffe8b5d.webp(
![])https://img-cdn.gateio.im/webp-social/moments-a3a84d139b8950498848a5cafbdfea83.webp(
![])https://img-cdn.gateio.im/webp-social/moments-46f1a89001b11b13b1a8d1b484d4877d.webp(