Análise detalhada do mecanismo de propostas do Sputnik DAO: do início à execução, uma análise do processo completo.

robot
Geração do resumo em andamento

Diário de Desenvolvimento de Contratos Inteligentes Rust (11): Análise do Mecanismo de Propostas DAO Sputnik

Sputnik-DAO, como infraestrutura do NEAR Protocol, está impulsionando a ecologia NEAR na direção da descentralização. Atualmente, a plataforma já facilitou diversas comunidades autônomas de projetos NEAR, além de oferecer soluções de governança comunitária completas, flexíveis e eficientes.

Sputnikdaov2 é um contrato inteligente utilizado para a votação de governança da comunidade Sputnik-DAO. Este artigo apresentará os conceitos centrais desse contrato: proposta (Proposal), e explicará os modos de governança da comunidade DAO relacionados à proposta (Policy).

1. Início da proposta

Cada membro da comunidade Sputnik-DAO pode expressar opiniões ou submeter propostas sobre a governança ou gestão do projeto. Depois, cada membro da comunidade que possui ações no DAO pode rever e votar sobre a proposta. Em outras palavras, cada membro do Sputnik-DAO pode influenciar o futuro do projeto votando em propostas de outros ou iniciando novas propostas de gestão.

Do ponto de vista do contrato, os membros da comunidade DAO podem chamar o método add_proposal() do contrato sputnikdaov2 para iniciar uma nova proposta.

Neste momento, o proponente deve fornecer informações detalhadas sobre a proposta (ProposalInput):

  • Descrição do texto da proposta (Description). Esta informação será exibida publicamente na parte frontal da página inicial do Sputnik-DAO, ajudando os membros da comunidade a entenderem o propósito e o significado da proposta.

  • Tipo de proposta(kind). O proponente deve escolher de acordo com o tipo de comentários sobre a gestão do projeto(, como se a chamada para funções privilegidas do contrato exigir o tipo FunctionCall, a transferência de fundos do projeto do contrato exigir o tipo Transfer, etc).

Estas informações ProposalInput serão passadas como parâmetros para o método add_proposal(), que realizará as verificações e processamentos necessários, gerando uma proposta (Proposal) com todas as informações de inicialização completas. No final, essa proposta será vinculada a um único proposal_id e será adicionada ao mapeamento Contract.proposals mantido globalmente pelo contrato Sputnik-DAO, na forma <key, value="">, na piscina de propostas (.

É importante notar que existe o conceito de depósito de proposta )proposal_bond( no Sputnik-DAO, que será gerido de acordo com o modelo de governança da comunidade específica do Sputnik-DAO )Policy(. O contrato exige que os proponentes coloquem uma certa quantia de tokens NEAR como garantia para novas propostas ao chamar o método add_proposal)(. Este depósito será devolvido ao proponente através da chamada da função interna do contrato internal_return_bonds)( quando a proposta terminar normalmente ) com votação da comunidade a favor ou contra (.

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

2. Estado da proposta

Qualquer proposta padrão no Sputnik-DAO pode passar por vários estados ) o novo estado da proposta é inicializado como InProgress (:

  • Em Andamento: votação em progresso
  • Aprovado: proposta aprovada
  • Rejeitado: proposta foi rejeitada
  • Removido: proposta foi removida
  • Falhou: execução da proposta falhou
  • Expirado: a proposta expirou

A mudança de estado das propostas no pool de propostas é impulsionada pelo método act_proposal)( do contrato. Os membros do Sputnik-DAO podem chamar o método act_proposal)( para executar operações em propostas específicas identificadas pelo id ).

Para propostas em estado InProgress, os membros da comunidade DAO podem chamar act_proposal() para executar operações de votação específicas:

  • Ação::VoteApprove:表赞成
  • Action::VoteReject:表反对
  • Ação::VotarRemover: considera que a proposta não tem significado prático, deve ser removida

De acordo com a implementação, após a chamada interna da função update_votes(), o programa chamará ativamente policy.proposal_status() para realizar o trabalho de contagem de votos. Para propostas que atendem ao limite de votos, o estado da proposta será alterado de acordo.

Alterado para:

  • Se o estado da proposta for Aprovado, a proposta será executada através da chamada internal_execute_proposal();
  • Se o estado da proposta for Rejeitado ou Removido, a proposta será finalizada através da chamada internal_reject_proposal().

Vale a pena mencionar que a diferença entre os estados Rejected e Removed é que as propostas identificadas como estado Removed serão removidas diretamente do pool de propostas e o depósito inicialmente apostado não será devolvido ao proponente. Por outro lado, as propostas com estado Rejected continuarão a ser mantidas no pool de propostas e o depósito correspondente será devolvido.

3. Execução da Proposta

Se uma proposta tiver o estado de Aprovada após o término da votação, o método do contrato act_proposal() continuará a chamar a função internal_execute_proposal() para executar o conteúdo da decisão contido na proposta.

Os tipos de propostas suportados pelo Sputnik-DAO incluem: ChangeConfig, ChangePolicy, AddMemberToRole, RemoveMemberFromRole, FunctionCall, UpgradeSelf, UpgradeRemote, Transfer, SetStakingContract, AddBounty, BountyDone, Vote, FactoryInfoUpdate, ChangePolicyAddOrUpdateRole, ChangePolicyRemoveRole, ChangePolicyUpdateDefaultVotePolicy, ChangePolicyUpdateParameters, etc.

Abaixo, destacamos dois tipos típicos de processos de tratamento de propostas:

( 3.1 proposta de execução da função do contrato )ProposalKind::FunctionCall###

Os tipos de proposta FunctionCall são passados como parâmetros ProposalInput quando o proponente chama o método add_proposal(), onde as operações de função específicas que a proposta deve executar são passadas como actions(. Os contratos NEAR permitem vincular várias chamadas de função consecutivas em uma única Promise. Assim, as actions definidas inicialmente pelo proponente podem conter vários objetos ActionCall, cada um podendo especificar o nome do método do contrato correspondente e os parâmetros do método, entre outros.

Sputnik-DAO utilizou a forma de Ações em Lote Prometidas para completar a execução das propostas do tipo de função de contrato.

) 3.2 Proposta de transferência de fundos do contrato(ProposalKind::Transfer)

Quando o projeto de contratos inteligentes NEAR estiver em funcionamento durante algum tempo, a conta do contrato pode já ter acumulado uma quantidade significativa de Fungible Token###, incluindo o token nativo NEAR, ou outros tokens que atendem ao padrão NEP-141(.

Neste momento, os membros da comunidade Sputnik-DAO podem agregar esses tokens à conta receiver_id designada, apresentando uma proposta de transferência de fundos do contrato. internal_execute_proposal)( também implementou um ponto de entrada correspondente para propostas que correspondem ao ProposalKind Transfer.

A camada de tratamento de ramificação irá chamar a função internal_payout)(, realizando operações de transferência para diferentes tipos de Fungible Token e diferentes tipos de receiver_id) EOA ou contas de contrato(.

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

4. Resumo

Este artigo apresenta o conceito central do contrato Sputnik DAO - a proposta )Proposal(, e também explica brevemente como criar novas propostas e votar para executá-las na Sputnik DAO, bem como as regras de alteração do estado básico das propostas relacionadas )Status(.

![])https://img-cdn.gateio.im/webp-social/moments-eb73d5e15f6161f0a4b442cd4b99a91e.webp(</key,>

ACT5.52%
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
ThatsNotARugPullvip
· 07-26 11:04
Muito oficial, não? Fala a linguagem das pessoas.
Ver originalResponder0
BlockDetectivevip
· 07-26 08:11
Near parece bastante cheiroso
Ver originalResponder0
DeFiVeteranvip
· 07-23 11:35
Lançar uma proposta para ver como corre!
Ver originalResponder0
fren_with_benefitsvip
· 07-23 11:17
Uau uau uau, caramba, este Sputnik é muito bom de usar.
Ver originalResponder0
UnluckyMinervip
· 07-23 11:06
Voto verdadeiro, má governança.
Ver originalResponder0
LayerHoppervip
· 07-23 11:06
Acho que está bem, só é muito complicado.
Ver originalResponder0
SerumSquirtervip
· 07-23 11:06
Ah, isso ainda depende de ver tantas coisas.
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)