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

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

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

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

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

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

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

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

русть pub fn add_proposal(&mut self, предложение: ProposalInput) -> U64

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

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

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

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

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

Контракт требует от инициатора залога определенной суммы токенов NEAR в качестве обеспечения при вызове add_proposal(). Этот залог возвращается по завершении предложения через internal_return_bonds().

!

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

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

  • InProgress(начальное состояние)
  • Одобрено
  • Отклонено
  • Удалено
  • Истек
  • Перемещено
  • Провалено

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

  • VoteApprove: одобрить голосование
  • VoteReject: Таблица против
  • VoteRemove: считает бессмысленным, необходимо удалить

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

  • Одобренные предложения в статусе будут выполнены
  • Статус Rejected или Removed выполняет завершающие операции
  • Удалено состояние предложения будет удалено из пула предложений, депозит не возвращается
  • Статус "Отклонено" предложения сохраняется в пуле предложений, депозит возвращается.

!

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

Предложения со статусом Approved будут реализованы через internal_execute_proposal(). Поддерживаемые типы предложений включают:

  • ChangeConfig
  • Политика изменений
  • Добавить участника в роль
  • УдалитьЧленаИзРоли
  • FunctionCall (Вызов функции)
  • UpgradeSelf
  • UpgradeRemote (ОбновлениеПульт дистанционного управления)
  • Перевод
  • SetStakingContract
  • AddBounty
  • BountyDone
  • Голосовать
  • FactoryInfoUpdate
  • ChangePolicyAddOrUpdateRole
  • ChangePolicyRemoveRole (ИзменитьПолитикуУдалитьРоль)
  • ИзменениеПолитикаОбновлениеДефолтГолосПолитика
  • ИзменениеPolicyUpdateParameters

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

3.1 Исполнение функции контракта предложения

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

Sputnik-DAO использует форму Promise Batch Actions для выполнения предложений по выполнению функций смарт-контрактов.

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

Предложение типа Transfer используется для передачи токенов, накопленных на контрактном аккаунте, на указанный receiver_id.

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

!

4. Резюме

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

!

ACT6.82%
BATCH7.13%
TOKEN6.18%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 8
  • Репост
  • Поделиться
комментарий
0/400
WhaleMistakervip
· 08-06 16:14
дао действительно впечатляет, когда у него есть деньги?
Посмотреть ОригиналОтветить0
RugPullAlarmvip
· 08-06 10:47
Ах, так называемая автономия не более чем обманка, маскирующая финансовую пирамиду. Данные в блокчейне говорят сами за себя.
Посмотреть ОригиналОтветить0
BearMarketSurvivorvip
· 08-06 08:36
Механизм предложений Near довольно интересен?
Посмотреть ОригиналОтветить0
SleepyValidatorvip
· 08-04 05:57
В последние дни rust учение ликвидировано, стало лучше.
Посмотреть ОригиналОтветить0
TestnetScholarvip
· 08-04 04:35
Снова начали стандартизировать процесс DAO.
Посмотреть ОригиналОтветить0
AirdropHunter007vip
· 08-04 04:34
Этот dao near неинтересен, его просто продают.
Посмотреть ОригиналОтветить0
rekt_but_vibingvip
· 08-04 04:34
Предложений слишком много, просто не успеваю проголосовать, что происходит?
Посмотреть ОригиналОтветить0
StableGeniusDegenvip
· 08-04 04:12
rust снова на подходе, это довольно жестоко.
Посмотреть ОригиналОтветить0
  • Закрепить