Анализ смарт-контрактов Sputnik DAO: Подробное объяснение механизма предложений

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

Rust смарт-контракты养成日记(11): Анализ механизма предложений DAO Sputnik

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

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

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

В Sputnik-DAO каждый участник может высказать свое мнение или подать предложение по управлению проектом. Держатели акций могут рассматривать и голосовать по предложениям. Участники могут влиять на направление проекта через голосование или инициирование предложений.

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

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

Информация о предложении будет передана в метод add_proposal() в качестве параметра, после проверки и обработки будет создано полное предложение (Proposal), которое будет привязано к уникальному proposal_id и добавлено в отображение Contract.proposals, поддерживаемое глобально смарт-контрактом.

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

  • описание: Описание предложения
  • kind: тип предложения
  • proposer:предложитель
  • статус: статус предложения, изначально InProgress
  • submission_time:время подачи
  • vote_counts:счет голосов
  • votes:детали голосования

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

!

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

Предложения в Sputnik-DAO могут проходить через различные состояния, начальное состояние - InProgress. Изменение состояния предложения управляется методом act_proposal().

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

  • VoteApprove: означает одобрение
  • VoteReject: означает против
  • VoteRemove: Считаю, что данное предложение не имеет смысла, необходимо удалить

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

  • Approved: одобрено internal_execute_proposal() выполнение
  • Отклонено/Удалено: выполните последующие действия через internal_reject_proposal()

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

!

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

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

Sputnik-DAO поддерживает несколько типов предложений, в этом разделе будут рассмотрены процессы обработки двух типичных типов:

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

При добавлении предложений типа FunctionCall был передан конкретный выполняемый функциональный оператор (actions). Каждое действие может указывать имя метода контракта и параметры. Sputnik-DAO выполняет такие предложения в виде Promise Batch Actions.

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

Предложение типа Transfer используется для перемещения токенов, накопленных на контрактном счете, на указанный счет. internal_execute_proposal() вызовет функцию internal_payout(), чтобы выполнить операции перевода для различных типов Fungible Token и счета получателя.

!

4. Итог

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

!

ACT1.44%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 5
  • Репост
  • Поделиться
комментарий
0/400
DegenRecoveryGroupvip
· 8ч назад
Чтобы провести голосование, нужно использовать контракт, это действительно сложно.
Посмотреть ОригиналОтветить0
quiet_lurkervip
· 18ч назад
Немного не понимаю, как это работает.
Посмотреть ОригиналОтветить0
ForkItAllDayvip
· 18ч назад
near отлично играет, любит создавать
Посмотреть ОригиналОтветить0
ApeWithNoFearvip
· 18ч назад
Играй в экосистему near, поднимай руку.
Посмотреть ОригиналОтветить0
GasFeeCrybabyvip
· 18ч назад
в блокчейне голосование слишком дорого, не могу позволить себе поесть
Посмотреть ОригиналОтветить0
  • Закрепить