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

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

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

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

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

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

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

С точки зрения контракта, члены сообщества DAO могут вызывать метод add_proposal() контракта sputnikdaov2 для создания нового предложения.

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

  • Текстовое описание предложения (Description). Эта информация будет публично отображаться на главной странице Sputnik-DAO, помогая членам сообщества понять цель и значимость данного предложения.

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

Эти данные ProposalInput будут переданы в метод add_proposal(), который выполнит соответствующие проверки и обработку, а затем создаст предложение (Proposal) с полной инициализационной информацией. В конечном итоге это предложение будет связано с уникальным proposal_id и добавлено в отображение Contract.proposals, поддерживаемое глобально в смарт-контракте Sputnik-DAO, в виде <key, value=""> в пуле предложений (.

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

! [])https://img-cdn.gateio.im/webp-social/moments-84ee9ca630a4cdcdb0d2eb63450a7cf4.webp(

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

Любое стандартное предложение в Sputnik-DAO может пройти через несколько состояний ) новое состояние предложения инициализируется как InProgress (:

  • InProgress:Голосование в процессе
  • Approved:Предложение одобрено
  • Отклонено: предложение было отклонено
  • Удалено: Предложение было удалено
  • Не удалось: выполнение предложения не удалось
  • Истекло: предложение истекло

Изменение состояния предложений в пуле предложений управляется методом контракта act_proposal)(. Члены Sputnik-DAO могут вызывать метод act_proposal)( для выполнения операций по конкретному предложению с id ).

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

  • Действие::VoteApprove: VoteApprove
  • Действие::VoteReject: Таблица против
  • Action::VoteRemove:Считает, что данное предложение не имеет практического значения, его необходимо удалить

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

Изменено на:

  • Если статус предложения Approved, то данное предложение будет выполнено с помощью вызова internal_execute_proposal();
  • Если статус предложения отклонен или удален, то это предложение будет завершено путем вызова internal_reject_proposal().

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

!

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

Если статус предложения после окончания голосования будет Approved, то в этот момент метод контракта act_proposal() продолжит вызывать функцию internal_execute_proposal() для выполнения содержимого решения, включенного в предложение.

Спутник-DAO поддерживает следующие типы предложений: ChangeConfig, ChangePolicy, AddMemberToRole, RemoveMemberFromRole, FunctionCall, UpgradeSelf, UpgradeRemote, Transfer, SetStakingContract, AddBounty, BountyDone, Vote, FactoryInfoUpdate, ChangePolicyAddOrUpdateRole, ChangePolicyRemoveRole, ChangePolicyUpdateDefaultVotePolicy, ChangePolicyUpdateParameters и т.д.

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

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

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

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

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

Когда проект смарт-контрактов NEAR работает некоторое время, сам контрактный аккаунт может накопить значительное количество Fungible Token ###, включая нативный токен NEAR или другие токены, соответствующие стандарту NEP-141 (.

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

Данная обработка нижнего уровня будет вызывать функцию internal_payout)(, реализующую операции перевода для различных типов взаимозаменяемых токенов, а также различных типов receiver_id) EOA или контрактных счетов(.

! [])https://img-cdn.gateio.im/webp-social/moments-ef0b959c42e1f5fc6263cd4a86fd078e.webp(

4. Резюме

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

! [])https://img-cdn.gateio.im/webp-social/moments-eb73d5e15f6161f0a4b442cd4b99a91e.webp(</key,>

ACT3.32%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 7
  • Репост
  • Поделиться
комментарий
0/400
ThatsNotARugPullvip
· 07-26 11:04
Слишком официально, скажи по-простому.
Посмотреть ОригиналОтветить0
BlockDetectivevip
· 07-26 08:11
Near кажется довольно ароматным
Посмотреть ОригиналОтветить0
DeFiVeteranvip
· 07-23 11:35
Попробуйте подать предложение!
Посмотреть ОригиналОтветить0
fren_with_benefitsvip
· 07-23 11:17
Ого, этот Sputnik действительно удобен!
Посмотреть ОригиналОтветить0
UnluckyMinervip
· 07-23 11:06
Настоящее голосование, ложное управление.
Посмотреть ОригиналОтветить0
LayerHoppervip
· 07-23 11:06
Кажется, нормально, просто слишком сложно.
Посмотреть ОригиналОтветить0
SerumSquirtervip
· 07-23 11:06
А, это нужно смотреть так много?
Посмотреть ОригиналОтветить0
  • Закрепить