Contrato da fábrica Sputnik DAO: implementação do design unificado para a criação e gestão de DAOs

robot
Geração do resumo em andamento

Análise do contrato da fábrica Sputnik DAO

Sputnik DAO utiliza o padrão de design de fábrica para implementar a criação e gestão unificada de DAOs na plataforma. Este artigo irá detalhar a implementação do padrão de fábrica da plataforma Sputnik DAO.

1. Introdução às funcionalidades DAPP

A plataforma Sputnik DAO já tem vários exemplos de DAO criados. Até março de 2022, o DAO mais ativo é o news.sputnik-dao.near, que já tem 3051 propostas.

Todos os contratos de instâncias DAO criados com base no Sputnik DAO são implantados sob a subconta sputnik-dao.near, por exemplo:

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

Os usuários podem criar novas instâncias de DAO chamando o método create() do contrato sputnikdao-factory.

2. Interpretação do código do contrato da fábrica

2.1 Criar DAO

o estado do contrato sputnikdao-factory inclui principalmente:

  • factory_manager: fornece métodos para criar/excluir/atualizar instâncias de DAO
  • daos: regista todos os endereços de conta das instâncias DAO criadas

create() definição do método:

ferrugem #[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('Falha ao serializar'); self.factory_manager.create_contract( self.get_default_code_hash(), account_id, 'novo', &args.0, 'on_create', &callback_args, ); }

create_contract() método implementou:

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

on_create() função implementação:

ferrugem #[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(; verdadeiro } else { Promise::new)predecessor_account_id(.transfer)attached_deposit.0(; falso } }

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

) 2.2 atualização DAO

O contrato da fábrica fornece a interface update###( para 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' ); assert!) self.daos.contains(&account_id(, 'Deve ser um contrato criado pela fábrica' ); self.factory_manager .update_contract)account_id, code_hash, 'update'(; }

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

3. Análise de Segurança

A segurança do contrato da Sputnik DAO Factory se reflete principalmente em:

  1. Controlo de permissões

    • o método view não modifica variáveis de estado
    • A função de privilégio só pode ser chamada pelo owner
  2. Tratamento de Erros

    • Verifique se todas as etapas foram executadas corretamente ao criar o DAO
  3. Verificação da lista branca

    • Apenas a factory ou o próprio DAO podem chamar a atualização
  4. Configuração de segurança padrão

    • Ativação de atualizações automáticas ao inicializar o contrato DAO

Em geral, o contrato da Sputnik DAO Factory implementou um mecanismo de segurança bastante sólido, mas ainda requer atenção e melhorias contínuas.

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

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
  • 7
  • Compartilhar
Comentário
0/400
GasFeeTearsvip
· 3h atrás
Eh, mais um padrão de fábrica que faz as pessoas de parvas.
Ver originalResponder0
0xSoullessvip
· 10h atrás
Mais uma ferramenta dao para fazer as pessoas de parvas.
Ver originalResponder0
MetaverseMigrantvip
· 21h atrás
Esta fábrica é um pouco impressionante.
Ver originalResponder0
gas_fee_therapistvip
· 08-03 07:53
Lindo! Mais um cachorro de fábrica chegou
Ver originalResponder0
retroactive_airdropvip
· 08-03 07:46
Mais uma vez o padrão de design de fábrica, já está ultrapassado, não?
Ver originalResponder0
SolidityStrugglervip
· 08-03 07:31
Mais uma vez o contrato de fábrica. Quando é que se vai conseguir entender?
Ver originalResponder0
OnchainDetectivevip
· 08-03 07:31
Entendi, entendi. Este contrato parece bastante atraente.
Ver originalResponder0
  • Marcar
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)