Глубина анализа механизма предложений смарт-контрактов Sputnik DAO

robot
Генерация тезисов в процессе

Rust смарт-контракты养成日记(11): Sputnik DAO 提案机制解读

Sputnik-DAO как инфраструктура NEAR Protocol активно способствует развитию экосистемы NEAR в направлении "децентрализации". В настоящее время эта платформа уже способствовала созданию множества "децентрализованных" автономных сообществ NEAR, а также предоставляет полный, гибкий и эффективный план управления решениями сообщества.

Sputnikdaov2 является смарт-контрактом для голосования по управлению сообществом Sputnik-DAO. В данной статье будут рассмотрены основные концепции этого контракта: предложение (Proposal), и в последующих статьях будет обсуждаться "предложение" и связанные с ним модели управления сообществом DAO (Policy).

!

1. Инициирование предложения

Каждый член Sputnik-DAO может выражать свое мнение или подавать предложения по управлению проектом. Каждый член сообщества, обладающий долей, может рассматривать и голосовать по предложениям. Члены могут влиять на будущее проекта, голосуя или инициируя новые предложения.

На уровне контракта члены DAO могут вызвать метод add_proposal() контракта sputnikdaov2 для создания нового предложения:

ржавчина pub fn add_proposal(&mut self, предложение: ProposalInput) -> U64

Предложитель должен предоставить подробную информацию о предложении (ProposalInput):

  • Текстовое описание предложения ( Описание )
  • Тип предложения ( kind )

Эта информация будет передана в метод add_proposal() в качестве параметров, который выполнит проверку и создаст полностью инициализированное предложение (Proposal). В конечном итоге предложение будет связано с уникальным proposal_id и добавлено в пул предложений, поддерживаемый глобально в смарт-контрактах.

Полная информация о свойствах предложения включает:

  • Опишите (description)
  • тип (kind )
  • Предлагающий (proposer)
  • статус(status)
  • время подачи (submission_time )
  • Статус голосования ( vote_counts, голоса )

Следует отметить, что в Sputnik-DAO существует концепция депозитов на предложения (proposal_bond). Контракт требует от инициатора предложения внести определенное количество токенов NEAR в качестве залога при вызове add_proposal(). Этот депозит будет возвращен инициатору предложения по завершении предложения.

!

2. Статус предложения

Предложения в Sputnik-DAO могут проходить через несколько состояний:

  • InProgress: начальное состояние нового предложения
  • Approved:Получено одобрение
  • Отказано:被否决
  • Удалено:被移除
  • Expired:Просрочено
  • Перемещено:已转移
  • Не удалось: выполнение не удалось

Изменение состояния предложения управляется методом act_proposal(). Члены DAO могут вызывать этот метод для голосования по предложению и других действий:

  • VoteApprove:Одобрить
  • VoteReject:Против
  • VoteRemove:удалить

После голосования будет вызвана policy.proposal_status() для подсчета голосов. Для предложений, соответствующих порогу голосования, статус будет соответственно изменен:

  • Предложения в состоянии Approved будут выполнены
  • Предложения в состоянии Rejected или Removed будут подвергнуты завершающим действиям.

Предложения в состоянии Removed будут удалены из пула предложений, депозит не возвращается. Предложения в состоянии Rejected останутся в пуле и депозит будет возвращен.

!

3. Исполнение предложения

Если статус предложения изменится на Approved, act_proposal() вызовет internal_execute_proposal() для выполнения содержания предложения.

Sputnik-DAO поддерживает несколько типов предложений, таких как ChangeConfig, ChangePolicy, FunctionCall, Transfer и т.д. Каждый тип имеет соответствующий обработчик.

Вот процесс обработки двух типов типичных предложений:

3.1 Исполнение функции контракта Предложение ( FunctionCall )

Предложения типа FunctionCall могут выполнять определенные методы контракта. Предложение включает операции функций (actions), каждая из которых может указать имя метода контракта и параметры.

В конечном итоге функция вызывается в форме Promise Batch Actions.

3.2 Предложение по переводу средств смарт-контрактов (Transfer )

Предложения типа Transfer могут перемещать токены из контрактного аккаунта на указанный аккаунт.

internal_execute_proposal() вызовет функцию internal_payout(), осуществляя операции перевода для различных типов токенов и получающих учетных записей.

!

4. Итог

В данной статье рассматриваются основные концепции контракта Sputnik DAO — предложение (Proposal), включая создание предложения, голосование, изменения статуса и процесс выполнения. В дальнейшем будет представлено управление Sputnik-DAO на основе предложения (Policy).

!

ACT9.42%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Репост
  • Поделиться
комментарий
0/400
Layer2Arbitrageurvip
· 5ч назад
мех, еще одна имплементация dao gov... проверил газовые показатели - на самом деле на 47% более эффективна, чем голосование в eth
Посмотреть ОригиналОтветить0
RektButSmilingvip
· 5ч назад
Это слишком дао.
Посмотреть ОригиналОтветить0
MaticHoleFillervip
· 5ч назад
игроки dao понимают, что к чему
Посмотреть ОригиналОтветить0
UnluckyLemurvip
· 5ч назад
Игроки в инфраструктуру, вперед!
Посмотреть ОригиналОтветить0
AirdropHarvestervip
· 5ч назад
near тоже может быть сделан?
Посмотреть ОригиналОтветить0
  • Закрепить