Análisis de contratos inteligentes del Sputnik DAO: explicación del mecanismo de propuestas

robot
Generación de resúmenes en curso

Diario de desarrollo de contratos inteligentes de Rust (11): Análisis del mecanismo de propuestas de Sputnik DAO

Sputnik-DAO, como infraestructura del NEAR Protocol, está impulsando el ecosistema NEAR hacia un desarrollo descentralizado. Actualmente, esta plataforma ha facilitado la creación de varias comunidades autónomas descentralizadas para proyectos de NEAR y ha proporcionado soluciones de gobernanza comunitaria flexibles y eficientes.

Sputnikdaov2 es un contrato inteligente utilizado para la votación de gobernanza de la comunidad Sputnik-DAO. Este artículo presentará el concepto central de ese contrato: la propuesta (Proposal), y en artículos posteriores se presentarán los modos de gobernanza de la comunidad DAO relacionados con la propuesta (Policy).

1. Inicio de propuesta

En Sputnik-DAO, cada miembro puede expresar su opinión o presentar propuestas sobre la gestión del proyecto. Los miembros que poseen acciones pueden revisar y votar sobre las propuestas. Los miembros pueden influir en la dirección del proyecto a través de votaciones o iniciando propuestas.

En el nivel del contrato, los miembros del DAO pueden invocar el método add_proposal() del contrato sputnikdaov2 para iniciar una nueva propuesta. El proponente debe proporcionar los detalles de la propuesta (ProposalInput):

  • Descripción del texto de la propuesta (Description)
  • Tipo de propuesta ( kind )

La información de la propuesta se pasará como parámetro al método add_proposal(), y después de la verificación se generará una propuesta completa (Proposal), que se vinculará con un id de propuesta único y se añadirá al mapeo Contract.proposals mantenido globalmente por el contrato.

La información completa de las propiedades de la propuesta incluye:

  • description: descripción de la propuesta
  • tipo: tipo de propuesta
  • proposer:proponente
  • status: estado de la propuesta, inicialmente en InProgress
  • submission_time: tiempo de envío
  • vote_counts: conteo de votos
  • votos: detalles de la votación

Es importante notar que en el Sputnik-DAO existe el concepto de depósito de propuesta (proposal_bond). El contrato exige que el proponente de la propuesta deposite una cierta cantidad de tokens NEAR como garantía al invocar add_proposal(). Este depósito será devuelto al proponente al finalizar la propuesta de manera normal.

2. Estado de la propuesta

Las propuestas en Sputnik-DAO pueden experimentar varios estados, siendo el estado inicial InProgress. Los cambios en el estado de la propuesta son impulsados por el método act_proposal().

Los miembros del DAO pueden llamar a act_proposal() para ejecutar las siguientes acciones sobre la propuesta:

  • VoteApprove: indica aprobación
  • VoteReject: indica oposición
  • VoteRemove: considera que esta propuesta no tiene sentido y debe ser eliminada

Después de la votación, el programa llamará a policy.proposal_status() para realizar el conteo de los votos. Para las propuestas que cumplan con el umbral de votación, el estado cambiará en consecuencia:

  • Aprobado: a través de internal_execute_proposal() ejecución
  • Rechazado/Eliminado: ejecutar acciones posteriores a través de internal_reject_proposal()

La diferencia entre los estados Rejected y Removed es que las propuestas en estado Removed serán eliminadas del grupo de propuestas y no se devolverá el depósito. Las propuestas en estado Rejected se mantendrán en el grupo y se devolverá el depósito.

3. Ejecución de propuestas

Si el estado de la propuesta es Aprobado, act_proposal() llamará a internal_execute_proposal() para ejecutar el contenido de la propuesta.

Sputnik-DAO admite varios tipos de propuestas, esta sección presentará los procesos de manejo de dos tipos típicos:

3.1 Propuesta de ejecución de función del contrato ( FunctionCall )

Las propuestas de tipo FunctionCall incluyen la operación de función específica a ejecutar (actions) al ser añadidas. Cada acción puede especificar el nombre del método del contrato y los parámetros. Sputnik-DAO utiliza la forma de Promesas de Acciones por Lotes para completar la ejecución de este tipo de propuestas.

3.2 propuesta de transferencia de fondos de contrato ( Transferir )

La propuesta de tipo Transfer se utiliza para transferir los tokens acumulados en la cuenta del contrato a la cuenta designada. internal_execute_proposal() llamará a la función internal_payout(), para realizar la operación de transferencia de diferentes tipos de Fungible Token y la cuenta receptora.

4. Resumen

Este artículo presenta el concepto central del contrato de Sputnik DAO: la propuesta (Proposal), que explica cómo crear, votar y ejecutar propuestas, así como las reglas de cambio de estado de las propuestas. Posteriormente, se proporcionará una descripción más detallada sobre el modelo de gobernanza de Sputnik-DAO basado en la propuesta (Policy).

ACT2.86%
Ver originales
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.
  • Recompensa
  • 5
  • Republicar
  • Compartir
Comentar
0/400
DegenRecoveryGroupvip
· hace1h
Hacer votaciones aún requiere contratos, es un gran dolor de cabeza.
Ver originalesResponder0
quiet_lurkervip
· hace11h
No entiendo muy bien cómo funciona esto.
Ver originalesResponder0
ForkItAllDayvip
· hace11h
near juega bien, ama crear
Ver originalesResponder0
ApeWithNoFearvip
· hace11h
Juega en el ecosistema de near, apóyalo.
Ver originalesResponder0
GasFeeCrybabyvip
· hace11h
La votación on-chain es muy cara, ya no puedo pagar la comida.
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)