Análise do contrato do Sputnik DAO Factory: Criação, Atualização e Design de Segurança

robot
Geração do resumo em andamento

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, }

  • factory_manager: Implementação da lógica funcional interna principal do contrato, que fornece métodos para criar/remover/atualizar instâncias de DAO.
  • daos: regista todos os endereços de conta NEAR dos DAO criados na história da plataforma.

![])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)(:

  1. Carregar o código do modelo do contrato inteligente da DAO
  2. Construir o rastreio de resultados de Promise
  3. Criar uma conta para implantar o contrato inteligente da DAO
  4. Transferir tokens NEAR
  5. Implantar o código do contrato
  6. Chamar a função de inicialização new)(
  7. Callback on_create)( função

![])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

  • Controle de permissões: o método view não modifica o estado, funções privilegiadas só podem ser executadas pelo owner.
  • Tratamento de erros: foi implementado um mecanismo de tratamento razoável para situações excepcionais.
  • Corrigido uma vulnerabilidade de segurança que permitia a qualquer usuário atualizar contratos inteligentes DAO

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(

GET-6.27%
Ver original
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.
  • Recompensa
  • 5
  • Compartilhar
Comentário
0/400
JustHereForAirdropsvip
· 07-25 18:43
Estudos mostraram que criar um DAO será tão simples quanto montar um site.
Ver originalResponder0
GateUser-4745f9cevip
· 07-22 23:42
Gestão de permissões é tudo, uau.
Ver originalResponder0
New_Ser_Ngmivip
· 07-22 23:41
O código está bem escrito!
Ver originalResponder0
PebbleHandervip
· 07-22 23:36
A gestão parece bastante rigorosa.
Ver originalResponder0
GateUser-1a2ed0b9vip
· 07-22 23:33
A análise de contratos é um pouco interessante
Ver originalResponder0
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)