Protocol DAO (pDAO)
Rocket Pool Protocol DAO (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
Во время периода голосования операторы узлов и делегаты могут проголосовать с одним из четырех вариантов:
Их голосующая сила будет включена в выбранный ими вариант.
Это можно сделать с помощью команды:
Если кворум вето (как определено параметром 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. Чтобы выполнить предложение, используйте команду:
Вам будет предложено выбрать предложение для выполнения, предложение будет применено к протоколу после этого шага!
После того, как предложение прошло периоды голосования, предлагающий может забрать свой заблокированный залог 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 для мониторинга прогресса:
Мы видим, что наш узел обнаружил мошенническое предложение и начал процесс его оспаривания. Блок 1283202 - это блок, в котором было выдвинуто предложение 177, что означает, что голосующая сила для этого предложения будет рассчитана в блоке 1283202. Если вам интересно увидеть, как выглядят эти снимки информации для голосования, вы можете найти их в этом каталоге: ~/.rocketpool/data/voting
Поскольку предлагающий был пойман на отправке неверной информации для голосования, наш узел делает вызов контракта Function: createChallenge для предложения 177 по индексу 5 и ждет, пока предлагающий ответит на оспаривание.
Поскольку информация о голосовании предлагающего неверна, он не сможет ответить на оспаривание вовремя (определяется proposal.challenge.period). Предложение считается отклоненным на этом этапе. Когда предложение отклонено, наш узел автоматически делает вызов контракта defeatProposal для предложения 177 по индексу 5, чтобы завершить предложение.
Оспаривающие, которые участвуют в отклонении предложения, получают пропорциональную сумму залога предлагающего, если они представляют индекс, который оказался неверным. Все остальные оспаривающие получают обратно только свой залог.
Теперь, когда предложение отклонено, наш узел (оспаривающий) может забрать свой первоначальный залог RPL, а также залог RPL предлагающего в качестве вознаграждения за отклонение мошеннического предложения.
Если вам интересно углубиться в детали системы предложений и оспариваний pDAO, взгляните на технические спецификации. Не стесняйтесь перейти к этому разделу о процессе оспаривания, если вы заинтересованы в изучении примера, который вдается в низкоуровневые детали.