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

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

Rust смарт-контракты养成日记(10-3)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)
  • время начала ( время подачи )
  • Статус голосования ( количество голосов, голоса )

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

!

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

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

Члены сообщества могут выполнять следующие действия с предложениями:

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

После голосования будет проведен подсчет голосов, и статус предложений, удовлетворяющих порогу голосования, будет соответственно изменен:

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

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

!

3. Исполнение предложения ( Выполнить предложение )

Для предложений в состоянии Approved будет вызвана функция internal_execute_proposal() для выполнения содержания предложения.

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

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

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

В конечном итоге выполнение функций контракта осуществляется в виде Promise Batch Actions.

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

Предложения типа Transfer могут переносить токены, накопленные на контрактном счете, такие как (NEAR или токены стандарта NEP-141 ), на указанный счет.

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

!

4. Резюме

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

!

ACT2.33%
BATCH5.81%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Поделиться
комментарий
0/400
RugResistantvip
· 2ч назад
хм, нашел несколько подозрительных паттернов имплементации... требует тщательного аудита, не буду лукавить
Посмотреть ОригиналОтветить0
WhaleMistakervip
· 2ч назад
Этот смарт-контракт выглядит очень сложным.
Посмотреть ОригиналОтветить0
GateUser-ccc36bc5vip
· 2ч назад
Этот механизм предложений слишком прост.
Посмотреть ОригиналОтветить0
MEVVictimAlliancevip
· 2ч назад
Что обязательно нужно посмотреть для начала работы с DAO
Посмотреть ОригиналОтветить0
ponzi_poetvip
· 2ч назад
Всё это безнадёжно, даже при просмотре смарт-контрактов приходится сталкиваться с английскими заголовками. Ужас, ужас~
Посмотреть ОригиналОтветить0
BankruptcyArtistvip
· 2ч назад
Снова что-то из DAO, совершенно не понимаю.
Посмотреть ОригиналОтветить0
  • Закрепить