Protocol DAO (pDAO)

Protocol DAO Rocket Pool (pDAO) отвечает за формирование направления протокола и управляется управлением RPL. Его члены и их голосующая сила состоят из операторов нод, больших и малых, все из которых напрямую участвуют в протоколе. Он служит сообществу Rocket Pool в целом, включая держателей rETH, операторов нод и держателей RPL. pDAO отдает приоритет безопасности протокола Rocket Pool и здоровью сети Ethereum. Для явного определения того, кто и что такое pDAO, ознакомьтесь с уставом pDAO.

Новые функции pDAO в Houston

Исполнение обязанностей pDAO в цепи

Обновление Houston вводит замену в цепи для процесса исполнения системы управления pDAO. Оно использует оптимистическую систему доказательства мошенничества, которая позволяет любому оператору ноды выдвигать предложения и голосовать за предложения по корректировке "параметров протокола pDAO" и расходованию средств казны. Для просмотра полного списка параметров, контролируемых pDAO, нажмите здесь. До Houston основная команда отвечала за выполнение обязанностей pDAO по указанию процесса управления сообщества. Например, команда осуществляет ежемесячные платежи IMC и GMC в соответствии с графиками платежей, утвержденными управлением. План состоял в том, чтобы эта власть временно находилась у команды до тех пор, пока не будет создана новая структура власти для принятия этих обязанностей. Houston устраняет эту зависимость от команды, делая протокол более децентрализованным и не требующим доверия.

Совет безопасности

Обновление Houston также включает новый совет безопасности, чтобы помочь быстро реагировать в случае любых потенциальных проблем с протоколом. Эти члены могут быть избраны pDAO и имеют возможность предлагать и выполнять изменения без задержки. pDAO имеет право избирать и удалять членов из совета безопасности. Это серьезная роль, и pDAO должно разработать строгие требования к вступлению и процессы для удаления устаревших членов. Хранитель pDAO будет единственным членом совета безопасности в начале Houston.

Повторяющиеся расходы казны

RPL имеет ставку инфляции 5%. 22% этой инфляции направляется в pDAO, как определено в RPIP-25. pDAO может использовать эти средства для различных целей. Например, стимулы, такие как бонусы поставщикам ликвидности (LP), гранты и награды за улучшения и проекты третьих лиц, а также финансирование разработки протокола Rocket Pool. Обновление Houston также вводит новую функцию, которая позволяет повторяющиеся платежи из казны, сделанные указанному получателю каждый период вознаграждений.

Предложения Protocol DAO (pDAO)

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

  • Изменение настроек pDAO
  • Единовременные расходы казны
  • Повторяющиеся расходы казны (комитеты управления)
  • Членство в совете безопасности

Для получения более подробной информации и обоснования обратитесь к типам предложений. Важно понимать, что предложение pDAO — это сущность в цепи, которая существует для выполнения изменений на уровне протокола.

Жизненный цикл предложения pDAO

Предложение должно быть предсказано процессом управления до того, как оно окажется в цепи. Оно состоит из 4 периодов, все из которых являются контролируемыми параметрами pDAO:

  • Период задержки голосования: proposal.vote.delay.time
  • Фаза голосования 1: proposal.vote.phase1.time
  • Фаза голосования 2: proposal.vote.phase2.time
  • Исполнение: proposal.execute.time

Период задержки голосования

Чтобы определить результат предложения, протокол должен знать требуемый кворум. Предлагающий рассчитывает это значение вне цепи и отправляет его вместе со своим предложением. Значение оптимистически принимается, но в случае мошенничества верификаторы могут выполнить процесс вызов/ответ, чтобы доказать, что значение неверно. Недействительные предложения затем отклоняются.

Несколько причин, почему предлагающие и претенденты должны заблокировать RPL.

  • proposal.bond стимулирует действительные предложения и препятствует спаму.
  • proposal.challenge.bond стимулирует устранение недействительных/вредоносных предложений.

Претенденты предоставляют индекс в дереве Merkle-sum, который, по их утверждению, является неправильным. Любой оператор ноды может участвовать в оспаривании мошеннических предложений (и получить вознаграждение за это). Не стесняйтесь прочитать о процессе оспаривания pDAO, если вам интересно принять участие. Предложение, не побежденное в оспаривании к концу периода задержки голосования, перейдет на этапы голосования.

ПРИМЕЧАНИЕ

Когда proposal.vote.delay.time истекает, предложение больше не может быть оспорено или побеждено.

Период голосования 1

Во время периода голосования операторы нод и делегаты могут отдать голос с одним из четырех вариантов:

1. Воздержаться: Голосующая сила избирателя вносится в кворум, но не является ни за, ни против предложения.
2. За: Избиратель голосует за выполнение предложения.
3. Против: Избиратель голосует против выполнения предложения.
4. Вето: Избиратель голосует против предложения, а также указывает, что считает предложение спамом или вредоносным.

Их голосующая сила будет включена в вариант их выбора.

Это можно сделать с помощью команды:

rocketpool pdao proposals vote

Если кворум вето (как определено параметром proposal.veto.quorum) достигнут, предложение немедленно отклоняется, и предлагающий теряет свой залог. Это призвано отговорить от спама, некачественных предложений или предложений, которые не прошли сначала процессы вне цепи. Команда smartnode rocketpool pdao proposals finalize используется для завершения предложения с вето путем сжигания заблокированного залога RPL предлагающего.

Продолжительность периода 1 определяется параметром proposal.vote.phase1.time. Предложение перейдет к фазе 2 независимо от того, достигнут ли proposal.quorum или нет.

Период голосования 2

Делегаты могут голосовать во время периода голосования 2, но только их голос стоит их локальной голосующей силы. Избиратели, которые не голосовали в периоде 1, все еще смогут отдать голос во время периода 2. Операторы нод, которые не согласны с выбором своего делегата, будут иметь возможность отменить голос своего делегата.

Процесс отмены голоса довольно прост, просто вызовите rocketpool pdao proposals vote во время периода голосования 2 и следуйте подсказкам. Голосующая сила делегата будет отменена голосующей силой делегировавшего.

Результат предложения определяется, когда период голосования 2 заканчивается. Чтобы результат был определен (и исполнен), общая голосующая сила proposal.quorum должна быть достигнута к концу proposal.vote.phase2.time. Если кворум достигнут и достигнут консенсус, предложение пройдет периоды голосования и будет отмечено как успешное.

ПРИМЕЧАНИЕ

Дальнейшие действия не могут быть предприняты в случае, если proposal.quorum не достигнут. Предложение считается завершенным и окончательным, если кворум не достигнут.

Исполнение

После того как оба периода голосования прошли и предложение успешно, предложение может быть исполнено, и изменение (определенное полезной нагрузкой) применяется к протоколу Rocket Pool. Чтобы исполнить предложение, используйте команду:

rocketpool pdao proposals execute

Вам будет предложено выбрать предложение для исполнения, предложение будет применено к протоколу после этого шага!

После того как предложение прошло периоды голосования, предлагающий может запросить свой заблокированный залог RPL, если предложение не было побеждено в оспаривании или вето.

ПРИМЕЧАНИЕ

Есть окно proposal.execute.time, в течение которого предложение может быть исполнено. Предложение истечет, если этот таймер достигнет своего конца.

И это все! Имейте в виду, что все переменные, упомянутые выше, являются контролируемыми параметрами pDAO. Нажмите здесь для полного списка всех параметров, которые pDAO имеет полномочия изменять с помощью предложений в цепи.

Процесс оспаривания

Полное дерево голосующей силы сети хранится вне цепи из-за ограничений газа. Когда пользователь отправляет новое предложение, он отвечает за построение дерева голосования сети на целевом номере блока. Это дерево генерируется вне цепи, но проверяется через корни Merkle, которые отправляются в цепи. Протокол полагается на верификаторов, чтобы проверить детали, отправленные предлагающим.

Любая нода может участвовать в отслеживании и проверке правильности предложений. Чтобы принять участие в этой ответственности, используйте команду rocketpool service config, перейдите в меню Smartnode and TX Fee Settings и отметьте флажок Enable PDAO Proposal Checker.

Когда эта настройка включена, нода будет проверять новые предложения, проверять их правильность и отправлять оспаривания недействительным предложениям. Единственное условие — это включена блокировка RPL.

Эта проверка выполняется каждые 5 минут в сочетании с несколькими другими обязанностями, связанными с нодой. Мы пройдем через пример того, как выглядит оспаривание мошеннического предложения. Мы можем использовать команду smartnode rocketpool service logs node для мониторинга прогресса:

rocketpool_node  | 2024/04/05 02:19:16 Checking for Protocol DAO proposal challenges to defend...
rocketpool_node  | 2024/04/05 02:19:26 Checking for Protocol DAO proposals to challenge...
rocketpool_node  | 2024/04/05 02:19:26 [Network Tree] Couldn't load network tree for block 1283202 from disk, so it must be regenerated.
rocketpool_node  | 2024/04/05 02:19:26 [PDAO Proposals] Network tree for block 1283202 didn't exist, creating one.
rocketpool_node  | 2024/04/05 02:19:26 [Voting Info Snapshot] Couldn't load network tree for block 1283202 from disk, so it must be regenerated.
rocketpool_node  | 2024/04/05 02:19:26 [PDAO Proposals] Voting info snapshot for block 1283202 didn't exist, creating one.
rocketpool_node  | 2024/04/05 02:19:26 Proposal 177 does not match the local tree artifacts and must be challenged.
rocketpool_node  | 2024/04/05 02:19:26 [Voting Info Snapshot] Loaded file [vi-1283202.json.zst].
rocketpool_node  | 2024/04/05 02:19:26 [Network Tree] Loaded file [network-tree-1283202.json.zst].
rocketpool_node  | 2024/04/05 02:19:26 Submitting challenge against proposal 177, index 5...
rocketpool_node  | 2024/04/05 02:19:26 This transaction will use a max fee of 16.067134 Gwei, for a total of up to 0.003252 - 0.004878 ETH.
rocketpool_node  | 2024/04/05 02:19:26 Transaction has been submitted with hash 0x327e59e398bf2141a0d9273947d1da5c255606c45afaca428ab092186300eac2.
rocketpool_node  | 2024/04/05 02:19:26 You may follow its progress by visiting:
rocketpool_node  | 2024/04/05 02:19:26 https://holesky.etherscan.io/tx/0x327e59e398bf2141a0d9273947d1da5c255606c45afaca428ab092186300eac2

Мы можем видеть, что наша нода поймала мошенническое предложение и начала процесс его оспаривания. Блок 1283202 — это блок, в котором было выдвинуто предложение 177, что означает, что голосующая сила для этого предложения будет рассчитана в блоке 1283202. Если вам интересно увидеть, как выглядят эти снимки информации о голосовании, вы можете найти их в этом каталоге: ~/.rocketpool/data/voting

Поскольку предлагающий был пойман на отправке неправильной информации о голосовании, наша нода делает вызов контракта Function: createChallenge по предложению 177 по индексу 5 и ждет, пока предлагающий ответит на оспаривание.

rocketpool3_node  | 2024/04/05 02:56:51 Checking for Protocol DAO proposal challenges to defend...
rocketpool3_node  | 2024/04/05 02:57:01 Checking for Protocol DAO proposals to challenge...
rocketpool3_node  | 2024/04/05 02:57:01 [Network Tree] Loaded file [network-tree-1283202.json.zst].
rocketpool3_node  | 2024/04/05 02:57:01 Proposal 177 does not match the local tree artifacts and must be challenged.
rocketpool3_node  | 2024/04/05 02:57:01 [Voting Info Snapshot] Loaded file [vi-1283202.json.zst].
rocketpool3_node  | 2024/04/05 02:57:01 [Network Tree] Loaded file [network-tree-1283202.json.zst].
rocketpool3_node  | 2024/04/05 02:57:01 Proposal 177 has been defeated with node index 20, submitting defeat...
rocketpool3_node  | 2024/04/05 02:57:01 This transaction will use a max fee of 19.078965 Gwei, for a total of up to 0.002061 - 0.003091 ETH.
rocketpool3_node  | 2024/04/05 02:57:01 Transaction has been submitted with hash 0x8cc01dff37205dc98e53f4e9fae7f3c802ecc1c69a01f53e734115a73401287e.
rocketpool3_node  | 2024/04/05 02:57:01 You may follow its progress by visiting:
rocketpool3_node  | 2024/04/05 02:57:01 https://holesky.etherscan.io/tx/0x8cc01dff37205dc98e53f4e9fae7f3c802ecc1c69a01f53e734115a73401287e
rocketpool3_node  |
rocketpool3_node  | 2024/04/05 02:57:01 Waiting for the transaction to be validated...
rocketpool3_node  | 2024/04/05 02:57:13 Successfully defeated proposal.

Поскольку информация о голосовании предлагающего неверна, он не сможет ответить на оспаривание вовремя (определяется proposal.challenge.period). Предложение считается побежденным в этот момент. Когда предложение побеждено, наша нода автоматически делает вызов контракта defeatProposal по предложению 177 по индексу 5, чтобы завершить предложение.

ПРИМЕЧАНИЕ

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

Теперь, когда предложение побеждено, наша нода (претендент) может запросить свой первоначальный залог RPL, а также залог RPL предлагающего в качестве вознаграждения за поражение мошеннического предложения.

Если вам интересно углубиться в детали системы предложений pDAO и оспаривания, взгляните на технические спецификации. Не стесняйтесь перейти к этому разделу о процессе оспаривания, если вам интересно изучить пример, который входит в низкоуровневые детали.