Глибина аналізу механізму пропозицій смартконтрактів 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 для ініціювання нової пропозиції:

іржа Паб Fn add_proposal(&mut self, пропозиція: ProposalInput) -> U64

Автор пропозиції повинен надати детальну інформацію про пропозицію(ProposalInput):

  • Текстовий опис пропозиції (Description)
  • Тип пропозиції ( kind )

Ця інформація буде передана як параметри в метод add_proposal(), цей метод буде виконувати перевірку, створюючи повноцінну ініціалізовану пропозицію (Proposal). Остаточна пропозиція буде прив'язана до унікального proposal_id та додана до пулу пропозицій, що підтримується глобально в смартконтракті.

Повна інформація про атрибути пропозиції включає:

  • Опишіть (description)
  • тип (kind )
  • Ініціатор (proposer)
  • статус(status)
  • час подачі(submission_time)
  • Статус голосування (vote_counts, голоси )

Необхідно звернути увагу, що в Sputnik-DAO існує концепція депозиту пропозиції (proposal_bond). Контракт вимагає, щоб пропоненти при виклику add_proposal() заставляли певну кількість токенів NEAR як гарантію. Цей депозит буде повернуто пропоненту після нормального завершення пропозиції.

!

2. Статус пропозиції

Пропозиції в Sputnik-DAO можуть проходити через кілька станів:

  • InProgress:початковий стан нової пропозиції
  • Approved: отримано схвалення
  • Rejected: Була відхилена
  • Видалено:被移除
  • 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), кожна action може вказувати назву методу контракту та параметри.

Врешті-решт, виклик функцій буде завершено у формі Promise Batch Actions.

3.2 Пропозиція щодо передачі коштів за смартконтрактом (Transfer )

Пропозиції типу Transfer можуть переміщувати токени з контрактного рахунку на вказаний рахунок.

internal_execute_proposal() викликатиме функцію internal_payout(), реалізуючи операції переказу для різних типів токенів та рахунків отримувачів.

!

4. Підсумок

Ця стаття представляє основні концепції контракту Sputnik DAO – пропозицію (Proposal), що включає створення пропозиції, голосування, зміни статусу та процес виконання. У подальшому буде представлено модель управління Sputnik-DAO на основі пропозиції (Policy).

!

ACT2.61%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 5
  • Репост
  • Поділіться
Прокоментувати
0/400
Layer2Arbitrageurvip
· 2год тому
meh, ще одна імплементація dao gov... перевірив газові показники - насправді на 47% ефективніше, ніж голосування в eth
Переглянути оригіналвідповісти на0
RektButSmilingvip
· 2год тому
Це занадто dao, мабуть.
Переглянути оригіналвідповісти на0
MaticHoleFillervip
· 2год тому
гравці dao розуміють, про що йдеться
Переглянути оригіналвідповісти на0
UnluckyLemurvip
· 2год тому
гравці інфраструктури near, вперед!
Переглянути оригіналвідповісти на0
AirdropHarvestervip
· 2год тому
near також може бути зроблено?
Переглянути оригіналвідповісти на0
  • Закріпити