Центр управления, получения наград и стейкинга на dydx.community
Управление
Вы можете просматривать действующие и прошлые предложения по управлению, а также голосовать по действующим предложениям.
Владельцы DYDX и stkDYDX имеют два вида прав управления: право на внесение предложений и право голоса. На панели мониторинга пользователи могут просматривать свои права на внесение предложений и права голоса, а также делегировать их другим адресам.
Стейкинг
Пользователи могут размещать DYDX в стейке и получать за это награды.
Награды за торговлю
Пользователи могут просматривать свои награды за торговлю на бирже в рамках протокола уровня 2. Награды за торговлю распределяются каждые 28 дней в соответствии с графиком эпох.
Портфель и получение DYDX
Пользователи могут просматривать сводку принадлежащих им DYDX, невостребованных в виде наград DYDX, размещенных в стейке DYDX и доступных для вывода DYDX.
Пользователи могут просматривать информацию о токенах DYDX, находящихся в обороте на текущий момент, а также об их ежедневном распределении. Пользователи также могут получить все доступные награды в DYDX. Токены DYDX станут доступны для перевода 8 сентября 2021 года примерно в 15:00 по времени в формате UTC или позже.
Интерфейс для управления, получения наград и стейкинга доступен на .
ethDYDX — это токен управления для сообщества dYdX, предоставляющий общий контроль над протоколом dYdX уровня 2 в Ethereum («dYdX v3»). Это позволяет трейдерам, поставщикам ликвидности и партнерам сотрудничать в совершенствовании протокола.
$ethDYDX и $wethDYDX обеспечивают надежную экосистему управления и вознаграждений, каждое из которых предназначено для стимулирования будущего роста и децентрализации dYdX v3, что должно облегчить работу пользователей.
Отмена dYdX v3
dYdX Trading, Inc. закрыла торги dYdX v3 с 28 октября 2024 года.
Обернутый Ethereum DYDX ($wethDYDX) — это обернутая версия ethDYDX, полученная при взаимодействии пользователя со . Более подробную информацию о токене wethDYDX и потенциальной миграции ethDYDX из Ethereum в программное обеспечение с открытым исходным кодом dYdX v4 («Цепочка dYdX») можно найти .
Пользователи цепочки dYdX () и API цепочки dYdX не затронуты.
Таким образом, в соответствии с целью Foundation мы подготовили список часто задаваемых вопросов о влиянии сворачивания dYdX v3 на управление dYdX v3 и владельцев токенов ethDYDX и wethDYDX.
Кто имел право на получение вознаграждений за торговлю?
Все трейдеры dYdX v3 имели право на получение наград за торговлю $ethDYDX.
23 ноября 2023 года сообщество dYdX проголосовало за перевод оставшегося количества наград за (нераспределенных нераспределенных средств в размере $ethDYDX в вестере казначейских облигаций dYdX v3 Rewards) в цепочку dYdX. Теперь DYDX входит в Вестер казначейских облигаций dYdX (dydx1wxje320an3karyc6mjw4zghs300dmrjkwn7xtk) и распределяется в качестве наград за торговлю в цепочке dYdX.
Подробнее вознаграждениях за торговлю в цепочке dYdX можно узнать .
Сколько $ethDYDX мне удалось заработать в программе вознаграждения за торговлю?
Награды за прошлые эпохи можно посмотреть по ссылке .
18 ноября 2023 года сообщество dYdX за мост остатка ethDYDX, накопленного в казне наград, из Ethereum в цепочку dYdX. После выхода на мост сообщество dYdX может использовать DYDX с голосованием руководства в цепочке dYdX.
Подробнее о кассе вознаграждений в цепочке dYdX можно узнать .
Зарабатывайте и получайте награды или голосуйте по предложениям
Отслеживайте статус предложений и голосуйте по изменениям
Делегируйте права на внесение предложений и права голоса
Торгуйте и получайте награды
Получайте награды
Ограничения
Ограничения на использование $ethDYDX, $wethDYDX и dYdX v3.
$ethDYDX и $wethDYDX недоступны в Соединенных Штатах Америки или других запрещенных юрисдикциях. Если вы являетесь резидентом, или зарегистрированы в качестве юридического лица, или имеете штаб-квартиру в Соединенных Штатах Америки или другой запрещенной юрисдикции, вам запрещено получать распределение $ethDYDX и $wethDYDX или совершать сделки с этими токенами.
Распределения
Распределения токена $ethDYDX.
Распределение
В общей сложности 1 000 000 000 $ethDYDX были созданы 3 августа 2021 года в 15:00:00 UTC и начали становиться доступными в течение пяти (5) лет. Первоначальное распределение общего предложения $ethDYDX на пять лет было следующим:
50,0% (500 000 000 $ethDYDX) распределяются между сообществом следующим образом:
7,5% (75 000 000 $ethDYDX) прошлым пользователям, которые завершили определенные этапы торговли в рамках протокола уровня 2 (награды за ретроактивный майнинг),
15,3% (152 704 930 $ethDYDX) получают основатели, сотрудники, советники и консультанты dYdX Trading Inc. или dYdX Foundation и
7,0% (70 000 000 $ethDYDX) получают будущие сотрудники и консультанты dYdX Trading Inc. или dYdX Foundation.
После запуска $ethDYDX было представлено несколько предложений по управлению, которые привели к изменению первоначального распределения. В настоящее время распределение включает в себя:
50,0% (500 000 000 $ethDYDX) распределяются между сообществом следующим образом:
Эпоха 30: 1 054 795 $ethDYDX
Эпоха 31: 527 398 $ethDYDX
Эпоха 32: 0 $ethDYDX
5,0% (50 309 197 $ethDYDX) прошлым пользователям, которые завершили определенные этапы торговли в рамках протокола dYdX уровня 2 (награды за ретроактивный майнинг),
После эпохи 0 24 690 803 невостребованных $ethDYDX из программы вознаграждений за ретроактивный майнинг были переведены в казну сообщества.
15,3% (152 704 930 $ethDYDX) получают основатели, сотрудники, советники и консультанты dYdX Trading Inc. или dYdX Foundation и
7,0% (70 000 000 $ethDYDX) получают будущие сотрудники и консультанты dYdX Trading Inc. или dYdX Foundation.
Хотя токен будет распределен между сообществом, как указано выше, владельцы $ethDYDX полностью контролируют через управление то, как токены будут распределяться между сообществом в будущем.
Кривая ликвидного предложения $ethDYDX
8 сентября 2021 года первоначальные ограничения на перевод токена были сняты.
Общее предложение ликвидности без учета инфляции показано на следующем графике:
Часто задаваемые вопросы
Может ли измениться распределение $ethDYDX?
a. Сокращение наград до следующих значений 21 ноября 2023 г. в 15:00 UTC (начало эпохи 30)
i. Trading: 1,054,795
ii. LP: 383,562
б. Сокращение наград до следующих значений 19 декабря 2023 г. в 15:00 UTC (начало эпохи 31)
i.Trading: 527,398
ii.LP: 191,781
в. Сокращение вознаграждения до следующих значений 16 января 2024 в 15:00 UTC (начало эпохи 32)
i.Trading: 0
ii.LP: 0
Можно ли создавать новые токены $ethDYDX?
Через пять лет после запуска максимальный уровень вечной инфляции в 2% в год может увеличить предложение $ethDYDX. С 14 июля 2026 года в 15:00:00 UTC руководство dYdX может определить максимальное количество новых $ethDYDX, которое будет отчеканено, в пределах 2% годовой инфляции, при этом разрешается только одна чеканка в 365 дней. Вновь выпущенные $ethDYDX вступают в силу немедленно и могут быть распределены и отправлены по любому указанному адресу.
Что такое блокировка $ethDYDX, которую получают инвесторы, существующие и будущие сотрудники и консультанты?
Часть первоначального распределения токенов $ethDYDX была зарезервирована для прошлых инвесторов dYdX Trading Inc., основателей, сотрудников, консультантов и консультантов dYdX Trading Inc. или dYdX Foundation, а также будущих сотрудников и консультантов dYdX Trading Inc. или dYdX Foundation.
Согласно поправке, токены будут освобождены от ограничений на перевод следующим образом:
30% с 1 декабря 2023 года;
40% равными ежемесячными взносами с 1 января 2024 года по 1 июня 2024 года;
20% равными ежемесячными взносами с 1 июля 2024 года по 1 июня 2025 года; и
10% равными ежемесячными взносами с 1 июля 2025 года по 1 июня 2026 года.
Обратите внимание, что все вышеуказанные даты должны рассматриваться как относящиеся к часовому поясу UTC.
График ограничений на перевод, установленный в Поправке, также распространяется на основателей, сотрудников, советников и консультантов dYdX Trading Inc. и dYdX Foundation.
Все сотрудники и консультанты также подлежат действию различных графиков передачи во владение. Это может привести к тому, что они утратят права на $ethDYDX. Получение сотрудниками или консультантами $ethDYDX не основывается или не будет основываться на предоставлении услуг, связанных с протоколом dYdX, или других услуг, которые могут принести пользу протоколу. Вместо этого сотрудники и консультанты могут получать $ethDYDX за услуги, которые выгодны только dYdX Trading Inc., dYdX Foundation или другой стороне.
Независимо от блокировки $ethDYDX инвесторы и бывшие сотрудники либо консультанты dYdX Trading или dYdX Foundation могут использовать $ethDYDX для внесения предложений, делегирования голосов или голосования по предложениям, касающимся протокола dYdX. Нынешние сотрудники и консультанты dYdX Trading Inc. или dYdX Foundation не смогут вносить предложения или участвовать в голосовании изначально, но смогут делать это в будущем. Нынешние сотрудники и консультанты dYdX Trading Inc. или dYdX Foundation могут делегировать голоса без попытки повлиять на результаты голосования.
Все инвесторы обязаны соблюдать ограничение на перевод, установленное в рамках договорных соглашений с dYdX Foundation и dYdX Trading Inc. dYdX Foundation отслеживает адреса кошельков для определения того, были ли произведены какие-либо переводы в нарушение этого ограничения.
Если инвесторы не соблюдают эти требования, dYdX Foundation может возбудить судебное разбирательство против них.
Эпохи
Обзор системы эпох
Все награды и контракты на стейкинг действовали по циклам 28 дней, называемым эпохами. Новая эпоха начинается автоматически после окончания текущей.
В конце каждой эпохи будет происходить следующее:
Появление возможности вывода средств из пула стейкинга ликвидности, в отношении которых был направлен соответствующий запрос в завершившейся эпохе.
Появление возможности вывода средств из пула стейкинга безопасности, в отношении которых был направлен соответствующий запрос в завершившейся эпохе.
Часто задаваемые вопросы
Что такое период недоступности вывода средств из стейка?
25,0% (250 000 000 $ethDYDX) на формулы вознаграждения за торговлю,
7,5% (75 000 000 $ethDYDX) распределяются на основе ;
5,0% (50 000 000 $ethDYDX) будут направлены в ;
2,5% (25 000 000 $ethDYDX) получают пользователи, размещающие $USDC в ;
2,5% (25 000 000 $ethDYDX) будут переданы пользователям, размещающим $ethDYDX в ;
14,5% (144 693 506 $ethDYDX) на формулы наград за торговлю,
В рамках и сообщество dYdX проголосовало за сокращение вознаграждения за торговлю на 2,3 млн $ethDYDX. (958 904 $ethDYDX из ППУ 16 и 1 294 520 $ethDYDX из ППУ 20). 2,3 миллиона $ethDYDX будут поступать в казну наград. Сообщество dYdX сможет использовать их по итогам .
В рамках сообщество проголосовало за сокращение вознаграждения за торговлю на ⅓ с эпохи 30-32 на dYdX v3 до следующих значений:
3,3% (32 794 525 $ethDYDX) распределяются на основе ,
В рамках сообщество dYdX проголосовало за сокращение размера вознаграждения для поставщиков ликвидности на 50% с 1 150 685 $ethDYDX за эпоху до 575 343 $ethDYDX за эпоху. Избыточные 575 342 $ethDYDX за эпоху будут поступать в казну наград. Сообщество dYdX сможет использовать их по итогам .
В рамках сообщество dYdX проголосовало за сокращение вознаграждения для поставщиков ликвидности на ⅓ с эпохи 30-32 на dYdX v3 до следующих значений:
26,1% (261 133 225 $ethDYDX) будут направлены в ,
0,6% (5 779 608 $ethDYDX) получают пользователи, размещающие $USDC в ,
В рамках сообщество dYdX за установку количества наград, связанных со стейкингом $USDC, равным 0. 383 562 $ethDYDX, ранее распределяемых между стейкерами $USDC, будут поступать в казну наград. Сообщество dYdX сможет использовать их после .
0,5% (5 289 939 $ethDYDX) получают пользователи, размещающие $ethDYDX в ,
В рамках сообщество dYdX за установку размера вознаграждений, связанных со стейкингом $ethDYDX, равным 0. 383 562 $ethDYDX, ранее распределенных между стейкерами $ethDYDX, будут поступать в казну наград, и сообщество dYdX сможет использовать их после среди пользователей, управляющих.
Да, сообщество dYdX может менять любые . К настоящему времени сообщество dYdX проголосовало за сокращение эмиссии DYDX в нескольких предложениях по управлению:
В рамках сообщество dYdX за сокращение размера наград за торговлю на 25%. Так, в эпоху 15 размер вознаграждений за торговлю, распределяемых в эпоху, сократился с 3 835 616 $ethDYDX до 2 876 712 $ethDYDX. Оставшиеся 958 904 $ethDYDX будут поступать в кассу вознаграждений. Сообщество dYdX сможет использовать их после среди пользователей, управляющих токеном.
В рамках сообщество dYdX за установку количества наград, связанных со стейкингом $USDC, равным 0. 383 562 $ethDYDX, ранее распределяемых между стейкерами $USDC, будут поступать в казну наград. Сообщество dYdX сможет использовать их после .
В рамках сообщество dYdX за установку размера вознаграждений, связанных со стейкингом $ethDYDX, равным 0. 383 562 $ethDYDX, ранее распределенных между стейкерами $DYDX, будут поступать в кассу вознаграждений, и сообщество dYdX сможет использовать их после среди пользователей, управляющих.
В рамках сообщество dYdX за сокращение размера вознаграждения для поставщиков ликвидности на 50% с 1 150 685 $ethDYDX за эпоху до 575 343 $ethDYDX за эпоху. Избыточные 575 342 $ethDYDX за эпоху будут поступать в казну наград. Сообщество dYdX сможет использовать их по итогам .
В рамках сообщество проголосовало за сокращение наград за торговлю на ⅓ с эпохи 30–32 на dYdX v3 до следующих значений:
25 января 2023 года dYdX Foundation о внесении поправки о переносе даты первоначального выпуска токенов инвестора $ethDYDX на 1 декабря 2023 года. Поправка не изменила расписание разблокировки после даты начальной разблокировки.
Эпоха
Дата начала (по времени в формате UTC)
Дата окончания (по времени в формате UTC)
дн.
Всего лет
Для и вводится график периодов вывода средств, чтобы обеспечить предсказуемость и регулярность доступности средств в пуле. Для вывода средств из стейка по окончании эпохи стейкер должен направить соответствующий запрос до начала периода недоступности вывода средств из стейка. В случае если от стейкера не поступает запрос на вывод размещенных в стейке средств, то они переносятся на следующую эпоху.
В рамках сообщество dYdX проголосовало за сокращение продолжительности периода недоступности вывода средств из стейка с 14 до 3 дней. Управление dYdX может голосовать за изменение окна недоступности вывода средств из стейка в указанных границах. Минимальная и максимальная продолжительность периода недоступности вывода средств из стейка составляет `3 дня``` и 46 дней соответственно.
Под немедленным и безотзывным контролем держателей токенов управления находятся:
Распределение казны сообщества
Листинги новых токенов в протоколе
Параметры риска для протокола
Распределение капитала между маркет-мейкерами в пуле стейкинга ликвидности
Добавление новых маркетмейкеров в пул стейкинга ликвидности
Определение размера выплат за участие в пуле стейкинга безопасности в случае понесения убытков
Изменение любых вознаграждений и пулов, существующих на момент запуска
Сами договоры управления
Управление dYdX контролирует параметры следующих контрактов:
Приоритетная блокировка по времени
Управление
Токен $ethDYDX
Казна
Дистрибьютор Меркла
Стейкинг ликвидности
Модуль безопасности
Stark Proxy
Stark Perpetual
Параметры блокировки по времени
Параметры управляющего
Токен ethDYDX
Параметры казны наград
Параметры казны сообщества
Дистрибьютор Меркла
Стейкинг ликвидности
Модуль безопасности
Stark Proxy
Stark Perpetual
Модуль ликвидности
Обзор пула стейкинга ликвидности
Все ethDYDX, оставшиеся от распределения вознаграждений в рамках модуля ликвидности, были перенесены в казну сообщества цепочки dYdX.
Обзор стейкинга
В настоящее время $USDC, размещенные в пуле стейкинга ликвидности, не начисляются.
Анстейкинг USDC и вывод средств
Вывод средств в течение периода недоступности вывода средств из стейка не предусмотрен.
Часто задаваемые вопросы
Что такое период недоступности вывода средств из стейка?
Период недоступности вывода средств из стейка — это период времени, в течение которого пользователи не могут запрашивать вывод размещенных в стейке $USDC. Функция requestWithdrawal не может использоваться в течение этого периода, продолжительность которого изначально установлена на последние 3 дня эпохи. Новые эпохи начинаются каждые 28 дней. Другими словами, период, когда пользователи могут запросить вывод средств для следующей эпохи, составляет до 3 дня до окончания определенной эпохи.
Архитектура
Высокоуровневый обзор архитектуры управления.
Обзор
$ethDYDX, $stkDYDX и $wethDYDX («Токены управления») предоставляют владельцам право вносить предложения и голосовать по изменениям в dYdX v3. Управление dYdX основывается на контрактах управления AAVE, и поддерживает голосование на основе количества токенов управления.
Предложения должны получить определенное число и процент положительных голосов, что зависит от типа предложения.
Право голоса и предложения токена управления позволяет держателю токена управления вносить предложения и голосовать по предложениям управления. Обратите внимание, что владелец токенов управления может делегировать такие полномочия другим адресам Ethereum.
В основе управления dYdx лежат 8 смарт-контрактов:
Контракты на токены $ethDYDX, $stkDYDX и $wethDYDX имеют снимки права голоса каждого адреса в разных блоках по времени.
Контракт на модуль безопасности содержит логическую схему стейкинга токенов $ethDYDX, токенизирует позицию и позволяет получать награды. Токен, размещенный в стейке модуля безопасности, сохраняет полные права управления.
Контракт на управление: отслеживает и может исполнять предложения с помощью смарт-контракта на блокировку по времени.
Контракт на блокировку по времени: может помещать в очередь, отменять или выполнять операции, за которые проголосовало управление. Функции в предложении инициируются контрактом на блокировку по времени. Операции, находящиеся в очереди, могут исполняться с задержкой и до окончания льготного периода.
Контракт на приоритетную блокировку по времени: аналогичен контракту на блокировку по времени, но позволяет контролеру приоритета исполнять операции в течение периода приоритета (7 дней) до окончания задержки блокировки по времени.
Ончейн-управление dYdX позволяет следующее:
Голосовать по предложениям, которые должны быть исполнены любым авторизованным контрактом исполнителя
Получать снимки находящихся во владении токенов в начале процесса внесения предложения
Делегирование отдельных прав на внесение предложений и прав голоса
Устанавливать пороговые значения управления, в том числе для предложений, кворумов и разницы в количестве голосов
Менять способ подсчета голосов (путем замены адреса смарт-контракта на стратегию управления адресом контракта управляющего)
Типы предложений
Существует четыре типа предложений с разными параметрами, которые влияют на их срок действия и исполнение. Так, критически важные предложения, влияющие на консенсус управления, требуют больше времени для голосования и большей разницы в количестве голосов, а предложения, влияющие только на параметры протокола, требуют меньше времени и могут быть исполнены быстро. Исполнитель должен подтвердить каждый тип предложения.
Исполнитель с правом на короткую блокировку по времени
Исполнитель с правом на короткую блокировку по времени контролирует следующее:
Поощрительные контракты, включая модуль ликвидности, модуль безопасности и модуль дистрибьютора Меркла
Средства в казне наград и сообщества
Создание новых токенов
Все контракты доверенности за исключением модуля безопасности
Попечительство для контрактов доверенности Stark
Исполнитель Starkware с правом на приоритетную блокировку по времени
Исполнитель приоритетного таймлока Starkware управляет контрактом вечного обмена StarkEx, выполняя предложения, которые конфигурируют dYdX v3. Starkware выполняет роль «контролера приоритетов», что дает им 7-дневный приоритетный период для запуска выполнения предложения. Однако решения по изменению протокола принимаются исключительно владельцами токенов управления посредством управления dYdX v3.
Исполнитель с правом на длительную блокировку по времени
Исполнитель с правом на длительную блокировку по времени может исполнять предложения, которые изменяют части протокола dYdX v3, затрагивающие консенсус в отношении управления.
Исполнитель с правом на остановку дерева Меркла
Исполнитель с правом на паузу дерева Меркла может исполнять предложения, замораживающие корень дерева Меркла, периодически обновляемый с учетом совокупного остатка вознаграждений у каждого пользователя. Это позволяет распределять новые вознаграждения между пользователями с течением времени в том случае, если предложенный корень неверен или содержащий вредоносный код. Он также может запрещать принудительные запросы на торговлю для любого из контрактов доверенности Stark.
Для блокировки по времени заданы следующие исходные параметры:
Модуль безопасности
Обзор пула стейкинга безопасности
Все оставшиеся ethDYDX из распределения наград в рамках модуля ликвидности были перенесены в казну сообщества цепочки dYdX.
Отмена стейкинга и вывод DYDX
Для вывода ethDYDX по окончании эпохи стейкеры должны направлять соответствующий запрос по меньшей мере за 3 дня(период недоступности вывода средств из стейка) до окончания этой эпохи. В противном случае размещенные в стейке $ethDYDX будут переноситься на следующую эпоху.
Вывод средств в течение периода недоступности вывода средств из стейка не предусмотрен.
Часто задаваемые вопросы
Что такое период недоступности вывода средств из стейка?
Период недоступности вывода средств из стейка — это период времени, в течение которого пользователи не могут запрашивать вывод размещенных в стейке $stkDYDX. Функция requestWithdrawal не может использоваться в течение этого периода, продолжительность которого изначально установлена на последние 3 дня эпохи. Новые эпохи начинаются каждые 28 дней. Другими словами, период, когда пользователи могут запросить вывод средств для следующей эпохи, составляет до 3 дня до окончания определенной эпохи.
18 ноября 2023 года сообщество dYdX за мост остатка ethDYDX, накопленного в казне сообщества, из Ethereum в цепочку dYdX. После присоединения сообщество dYdX может использовать DYDX с голосованием руководства в цепочке dYdX.
Подробнее о кассе вознаграждений сообщества цепочки dYdX можно узнать .
Сообщество dYdX за отмену вознаграждений за обеспечение ликвидности с 16 января 2024 года. All remaining ethDYDX from the Liquidity Provider Rewards allocation were migrated to the dYdX Chain Community Treasury.
Читайте больше о кассе вознаграждений цепочки dYdX .
Как получить награды для поставщиков ликвидности?
Награды для поставщиков ликвидности отображаются в . Хотя они не отображаются в пользовательском интерфейсе управления, их все же можно получить с помощью управления в конце каждой эпохи .
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Стоимость
Параметр
Описание
Исполнитель с правом на короткую блокировку по времени
Исполнитель с правом на остановку дерева Меркла
Исполнитель с правом на длительную блокировку по времени
Исполнитель Starkware
Работа пула стейкинга ликвидности прекращена в 29 сентябре 2022 года. В рамках сообщество dYdX проголосовало за прекращение использования пула стейкинга ликвидности и пула заимствований, установив размер наград за стейкинг ликвидности в секунду на уровне 0.
Подробнее казначействе сообщества цепочки dYdX можно узнать здесь.
Чтобы вывести $USDC после завершения , стейкер должен направить соответствующий запрос не позднее чем за ****3 дня (период недоступности вывода средств из стейка) до окончания соответствующей эпохи. В противном случае размещенные в стейке $USDC будут переноситься на следующую эпоху.
Как вывести $USDC из пула стейкинга? Сколько времени занимает этот процесс?
Чтобы вывести $USDC по окончании эпохи, стейкер должен направить запрос об этом не менее чем за 3 дня до окончания эпохи. В противном случае размещенные в стейке $USDC будут переноситься на следующую эпоху.
Для вывода $USDC пользователи вызывают функцию requestWithdrawal, отправляющую запрос на вывод $USDC в следующую эпоху. В текущей эпохе средства пользователей будут оставаться в стейке и не подлежат выводу. Начиная со следующей эпохи средства станут неактивными и доступными для вывода.
Для вывода неактивных средств на конкретный адрес в следующую эпоху пользователи вызывают функцию withdrawStake (вывести из стейка). Для вывода суммы из неактивных средств пользователи могут выбрать то количество, которое они желают вывести, или вызвать функцию `withdrawMaxStake`. При использовании функции withdrawMaxStake размер комиссии за газ будет выше, чем при запросе максимальной величины с помощью eth_call и вызове функции withdrawStake().
Чтобы вывести $USDC из пула стейкинга ликвидности, выполните следующие действия:
Перейдите по ссылке ****
Нажмите «Запрос»
Введите необходимое количество $USDC для вывода из пула и нажмите «Запросить вывод». Чтобы вывести $USDC из стейка, вам потребуется уплатить комиссию за газ.
Стейкеры, которые запрашивают вывод $USDC из стейка не позднее чем за 3 дня (период недоступности вывода средств из стейка) до окончания текущей эпохи, могут вывести $USDC в начале следующей эпохи.
Контракт на стратегию управления V2 содержит логическую схему оценки относительного права пользователей на внесение предложений и голосование. Сообщество dYdX за обновление контракта на стратегию управления до стратегии управления V2, чтобы предоставить $wethDYDX ту же функциональность управления, что и ethDYDX, для голосования и внесения предложений в управление dYdX v3.
Модуль безопасности больше не является активным по состоянию на 28 ноября 2022 года. В сообщество dYdX за эффективное отключение модуля безопасности, установив размер отдачи за модуль безопасности в секунду на значение 0.
Подробнее казначействе сообщества цепочки dYdX можно узнать здесь.
В рамках сообщество dYdX за сокращение продолжительности периода недоступности вывода средств из стейка с 14 до трех дней.
Как вывести средства из пула стейкинга? Сколько времени занимает этот процесс?
Чтобы обеспечить предсказуемость и регулярность доступности средств в пуле, для их вывода используется график эпох. Чтобы вывести свои средства по окончании эпохи, стейкер должен отправить соответствующий запрос минимум за три дня до конца этой эпохи. В противном случае размещенные в стейке $ethDYDX будут переноситься на следующую эпоху.
Для вывода средств пользователи вызывают функцию requestWithdrawal, отправляющую соответствующий запрос в следующую эпоху. В текущей эпохе средства пользователей будут оставаться в стейке и не подлежат выводу. Начиная со следующей эпохи средства станут неактивными и доступными для вывода.
Для вывода неактивных средств на конкретный адрес в следующую эпоху пользователи вызывают функцию withdrawStake. Для вывода всех неактивных средств пользователи могут выбрать ту сумму, которую они желают вывести, или вызвать функцию withdrawMaxStake. Обратите внимание, что при использовании функции withdrawMaxStake размер комиссии за газ будет выше, чем при запросе максимальной величины с помощью eth_call и вызове функции withdrawStake().
Чтобы вывести $ethDYDX из модуля безопасности, сделайте следующее:
Перейдите по ссылке ****
Нажмите «Запросить» и введите необходимое количество $ethDYDX для вывода из пула.
Нажмите «Запросить вывод средств». Чтобы вывести средства, вам потребуется уплатить комиссию за газ.
Стейкеры, которые запрашивают вывод $ethDYDX по меньшей мере за 3 дня до окончания текущей эпохи, могут вывести свои $ethDYDX в начале следующей эпохи.
Задержка (в блоках) между созданием предложения и голосованием по нему
6570 блоков
Добавление роли исполнителя
Адрес, который может добавлять новых исполнителей
Короткая блокировка по времени
Владение
Изменение стратегии / задержка голосования / лишение исполнителей полномочий + другие полномочия
Длительная блокировка по времени
Владелец
Может создавать токены ethDYDX после ввода соответствующего ограничения
Короткая блокировка по времени
Владелец
Перевод любых токенов, находящихся в казне, или одобрение операций с ними
Короткая блокировка по времени
Администрирование доверенности
Повышение статуса контракта
Короткая блокировка по времени
Владелец
Перевод любых токенов, находящихся в казне, или одобрение операций с ними
Короткая блокировка по времени
Администрирование доверенности
Повышение статуса контракта
Короткая блокировка по времени
Владение
Обновление адреса оракула вознаграждений и имени IPNS, а также администрирование всех ролей
Короткая блокировка по времени
Обновление конфигурации
Установка параметров распределения наград, а также изменение графика эпох или периода обновления IPFS
Короткая блокировка по времени
Приостановка
Остановка обновления корня Меркла
Остановка дерева Меркла
Отмена приостановки
Отмена остановки обновления корня Меркла
Короткая блокировка по времени
Получение функции оператора
Получение наград от имени пользователя
Получение доверенности
Интервал
Продолжительность эпохи
28 дней
Смещение
Начало нулевой эпохи
3 августа 2021 года 15:00 по времени в формате UTC
Имя IPNS
Имя IPNS, где публикуются данные о наградах
rewards-data.dydx.foundation
Период обновления IPFS
Период после окончания эпохи, когда в IPFS должна появиться новая статистика за эпоху с помощью имени IPNS
3 минуты
Администрирование доверенности
Повышение статуса контракта
Короткая блокировка по времени
Владение
Администрирование всех ролей
Короткая блокировка по времени
Параметры эпохи
Установка параметров эпохи, таких как интервал, смещение и период молчания
Короткая блокировка по времени
Скорость распределения наград
Установка скорости распределения наград
Короткая блокировка по времени
Администрирование средств заемщиков
Установка размера распределяемых заемных средств и выдача разрешения/запрета заемщикам на получение заемных средств
Короткая блокировка по времени
Получение функции оператора
Получение наград от имени пользователя
Получение доверенности
Оператор стейка
Установка размера распределяемых заемных средств и выдача разрешения/запрета заемщикам на получение заемных средств
Короткая блокировка по времени
Оператор задолженности
Уменьшение задолженности по займам и стейкингу
Короткая блокировка по времени
Интервал
Продолжительность эпохи
28 дней
Смещение
Начало нулевой эпохи
3 августа 2021 года 15:00 по времени в формате UTC
Период молчания
Продолжительность периода молчания
3 дня
Скорость распределения наград
Количество токенов, распределяемых между стейкерами в качестве наград каждую секунду
0
Администрирование доверенности
Повышение статуса контракта
Короткая блокировка по времени
Владение
Администрирование всех ролей
Короткая блокировка по времени
Сокращение
Сокращение количества средств в стейке и их вывод
Короткая блокировка по времени
Параметры эпохи
Установка параметров эпохи, таких как интервал, смещение и период молчания
Короткая блокировка по времени
Скорость распределения вознаграждений
Установка скорости распределения вознаграждений
Короткая блокировка по времени
Получение функции оператора
Получение вознаграждений от имени пользователя
Получение доверенности
Оператор стейка
Установка размера распределяемых заемных средств и выдача разрешения/запрета заемщикам на получение заемных средств
Короткая блокировка по времени
Интервал
Продолжительность эпохи
28 дней
Смещение
Начало нулевой эпохи
3 августа 2021 года 15:00 по времени в формате UTC
Период недоступности вывода средств из стейка
Продолжительность периода молчания
3 дня
Скорость распределения вознаграждений
Количество токенов, распределяемых между стейкерами в качестве вознаграждений каждую секунду
0
Администрирование доверенности
Повышение статуса контракта
Длительная блокировка по времени
Владение
Добавление/удаление получателей средств и ключей STARK, определение количества отчисляемых токенов ERC-20 по контрактам стейкинга ликвидности и бессрочным контрактам Stark, вызов принудительных действий, администрирование владением, делегирование администрирования
Маркет-мейкер
Администрирование делегирования
Администрирование заемщиков, оператор биржи и оператор вывода средств
Маркет-мейкер
Заем
Вызов функций займа по контракту стейкинга ликвидности
Маркет-мейкер
Оператор биржи
Вызов функций обмена для бессрочного контракта Stark
Маркет-мейкер
Оператор вывода средств
Вывод средств, сумма которых превышает баланс заемных средств, для разрешенного получателя
Маркет-мейкер
Функция попечителя
Осуществление действий по закрытию позиций; осуществление принудительных действий, если у заемщика есть просроченная задолженность; ограничение действий по открытию позиций с использованием заемных средств; утверждение количества токенов, подлежащих выводу извне оператором вывода средств.
Короткая блокировка по времени
Попечительство с правом на запрет
Запрет принудительных запросов на торговлю, инициированных владельцем, в течение периода ожидания
Техническое руководство по созданию предложения о расходовании средств, находящихся в казне сообщест
Пошаговое техническое руководство по созданию предложения о переводе ethDYDX из казны сообщества на адрес назначения.
Пользователь Reverie подготовил исчерпывающее техническое руководство по представлению предложения по управлению для перевода $ethDYDX из кассы сообщества с помощью запроса на внесение изменений в хранилище контрактов на управление dYdX.
Предварительные требования
Перед подачей запроса на внесение изменений необходимо сделать следующее:
Адрес назначения. Необходимо заранее создать адрес назначения. Если адрес назначения требует мультиподписи, нужно создать кошелек с мультиподписью.
Счет GitHub. Необходим счет GitHub для создания форка хранилища.
Количество переводимых средств (необязательно). Желательно установить переводимое количество средств до отправки запроса на внесение изменений. Однако если это значение условное, то количество средств можно установить прямо перед утверждением.
Хэш IPFS ППУ (необязательно). Если известно количество переводимых средств, то ППУ необходимо оформить и отправить в IPFS для генерации хэша. Однако если количество средств еще не определено, это можно сделать прямо перед утверждением.
Создание предложения
2. Клонируйте хранилище и укажите ваше имя пользователя вместо [username].
Добавьте две новые переменные в константу configSchema в файле src/config/index.ts. Они будут использоваться для тестирования. В следующих блоках кода измените поля PROPOSAL_NAME и PROPOSAL на название отправляемого предложения.
Примечание. Согласно стандарту ERC-20 количество переводимых средств нужно умножить на 10^18. Если количество средств еще неизвестно, можно указать временное значение (например, 10 → 10000000000000000000).
Добавьте переменную хэша IPFS, которая будет ссылаться на ППУ в другом репозитории, в файл src/lib/constants.ts:
src/lib/constants.ts
...
// Add a link to where the hash can be found
export const DIP_NUMBER_IPFS_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000';
Примечание. Если ППУ еще не было опубликовано, для тестирования можно указать временное значение (например, ‘0x0000000000000000000000000000000000000000000000000000000000000000’)\
4. Код предложения
Создайте новый файл с названием предложения (proposal-name.ts) в файле src/migrations, а затем внесите в него следующий код:
а) Добавьте функции импорта в верхней части файла:
src/migrations/proposal-name.ts
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import {
DydxGovernor__factory,
} from '../../types';
import { getDeployConfig } from '../deploy-config';
import { getDeployerSigner } from '../deploy-config/get-deployer-address';
import { getHre } from '../hre';
import { log } from '../lib/logging';
import { waitForTx } from '../lib/util';
import { Proposal } from '../types';
б) Создайте новую функцию, используя название предложения, ниже функций импорта и добавьте следующий код с двумя уникальными переменными:
destinationAddress — это адрес, который получит переводимые средства.
deployConfig.PROPOSAL_FUNDING_AMOUNT — это созданная ранее переменная, которая определит количество переводимых средств.
Создав предложение, мы можем написать код развертывания, который будет генерировать транзакцию и данные вызова, необходимые для отправки предложения.
В разделе tasks/deployment создайте новый файл с тем же названием, что использовалось для кода предложения (proposal-name.ts), и внесите в него следующий код:
а) Добавьте необходимые функции импорта со следующими переменными:
DIP_NUMBER_IPFS_HASH — это переменная, которую мы добавляем в раздел lib/constants.
createProposalNameProposal — это функция, которую мы создали в разделе /src/migrations/proposal-name.
tasks/deployment/proposal-name.ts
import { types } from 'hardhat/config';
import mainnetAddresses from '../../src/deployed-addresses/mainnet.json';
import { hardhatTask } from '../../src/hre';
import { DIP_NUMBER_IPFS_HASH } from '../../src/lib/constants';
import { createProposalNameProposal } from '../../src/migrations/proposal-name';
б) Создайте задачу hardhat и внесите информацию о предложении в ее первую строку.
Укажите название предложения вместо proposal-name в ‘deploy:proposal-name:’, а затем введите краткое описание в ‘Proposal Description’.
Последняя строка вызывает функцию, которую вы импортировали из кода предложения, поэтому ее нужно будет скорректировать.
tasks/deployment/proposal-name.ts
hardhatTask('deploy:proposal-name', 'Proposal Description.')
.addParam('proposalIpfsHashHex', 'IPFS hash for the uploaded DIP describing the proposal', DIP_NUMBER_IPFS_HASH, types.string)
.addParam('dydxTokenAddress', 'Address of the deployed DYDX token contract', mainnetAddresses.dydxToken, types.string)
.addParam('governorAddress', 'Address of the deployed DydxGovernor contract', mainnetAddresses.governor, types.string)
.addParam('shortTimelockAddress', 'Address of the deployed short timelock Executor contract', mainnetAddresses.shortTimelock, types.string)
.addParam('communityTreasuryAddress', 'Address of the deployed community treasury contract', mainnetAddresses.communityTreasury, types.string)
.setAction(async (args) => {
await createProposalNameProposal(args);
});
6. Создание тестов
Теперь, когда код готов к развертыванию, пришло время создать несколько тестов для предложения. Тестирование проводится как локально, так и с помощью форка мейннета для моделирования выполнения предложения в цепочке.
а) Добавьте тесты предложения
Снова добавьте новый файл с названием предложения в раздел test/migrations и внесите в него следующий код:
Добавьте необходимые функции импорта, включая функции предложения:
createProposalNameProposal — это функция, которую мы создали в разделе /src/migrations/proposal-name. \
MOCK_PROPOSAL_IPFS_HASH — это имитация хэша для тестирования.
test/migrations/proposal-name.ts
import BNJS from 'bignumber.js';
import { BigNumber, BigNumberish } from 'ethers';
import config from '../../src/config';
import { getDeployConfig } from '../../src/deploy-config';
import { getDeployerSigner } from '../../src/deploy-config/get-deployer-address';
import { log } from '../../src/lib/logging';
import { waitForTx } from '../../src/lib/util';
import { impersonateAndFundAccount } from '../../src/migrations/helpers/impersonate-account';
import { createProposalNameProposal } from '../../src/migrations/proposal-name';
import {
DydxGovernor__factory,
DydxToken__factory,
Treasury__factory,
} from '../../types';
import { advanceBlock, increaseTimeAndMine } from '../helpers/evm';
const MOCK_PROPOSAL_IPFS_HASH = (
'0x0000000000000000000000000000000000000000000000000000000000000000'
);
Добавьте функции тестирования, сделав следующее:
fundProposalNameViaProposal — создайте эту функцию и переименуйте ее, чтобы ее название совпадало с названием предложения.
destinationAddress — измените этот параметр, чтобы он совпадал с названием назначения.
deployConfig.PROPOSAL_FUNDING_AMOUNT — этот параметр будет заменен переменной из файла base-config.
FUND_PROPOSAL_NAME_PROPOSAL_ID — это переменная, которую мы создали в файле config/index.ts.
createProposalNameProposal — импортируйте эту функцию выше для использования.
fundProposalNameViaNoProposal — создайте эту функцию и переименуйте ее, чтобы ее название совпадало с названием предложения.
Выполните приведенный ниже код, чтобы заменить все эти переменные и существующие переменные, уже созданные выше, на название предложения:
test/migrations/proposal-name.ts
export async function fundProposalNameViaProposal({
dydxTokenAddress,
governorAddress,
shortTimelockAddress,
communityTreasuryAddress,
destinationAddress,
}: {
dydxTokenAddress: string,
governorAddress: string,
shortTimelockAddress: string,
communityTreasuryAddress: string,
destinationAddress: string,
}): Promise<void> {
const deployConfig = getDeployConfig();
const deployer = await getDeployerSigner();
const dydxToken = new DydxToken__factory(deployer).attach(dydxTokenAddress);
const governor = new DydxGovernor__factory(deployer).attach(governorAddress);
await fundCommunityTreasuryFromFoundationIfNecessary({
dydxTokenAddress,
communityTreasuryAddress,
minTreasuryBalance: deployConfig.PROPOSAL_FUNDING_AMOUNT,
});
// Pick a voter with enough tokens to meet the quorum requirement.
const voterAddress = deployConfig.TOKEN_ALLOCATIONS.DYDX_TRADING.ADDRESS;
const voter = await impersonateAndFundAccount(voterAddress);
const voterBalance = await dydxToken.balanceOf(voterAddress);
if (voterBalance.lt(new BNJS('2e25').toFixed())) {
throw new Error('Not enough votes to pass the proposal.');
}
// Vote on an existing proposal (can be used with mainnet forking).
let proposalId: BigNumberish;
if (config.FUND_PROPOSAL_NAME_PROPOSAL_ID !== null) {
proposalId = config.FUND_PROPOSAL_NAME_PROPOSAL_ID;
} else {
log('Creating proposal');
({ proposalId } = await createProposalNameProposal({
proposalIpfsHashHex: MOCK_PROPOSAL_IPFS_HASH,
dydxTokenAddress,
governorAddress,
shortTimelockAddress,
communityTreasuryAddress,
destinationAddress,
signer: voter,
}));
log('Waiting for voting to begin');
for (let i = 0; i < deployConfig.VOTING_DELAY_BLOCKS + 1; i++) {
if (i > 0 && i % 2000 === 0) {
log('mining', i);
}
await advanceBlock();
}
}
let proposalState = await governor.getProposalState(proposalId);
if (proposalState !== 2) {
throw new Error('Expected proposal to be in the voting phase.');
}
log('Submitting vote');
await waitForTx(await governor.connect(voter).submitVote(proposalId, true));
log('Waiting for voting to end');
let minedCount = 0;
for (; ;) {
for (let i = 0; i < 2000; i++) {
await advanceBlock();
minedCount++;
}
log('mining', minedCount);
proposalState = await governor.getProposalState(proposalId);
if (proposalState !== 2) {
break;
}
}
if (proposalState !== 4) {
throw new Error(`Expected proposal to have succeeded but state was ${proposalState}`);
}
log('Queueing the proposal');
await waitForTx(await governor.queue(proposalId));
const delaySeconds = deployConfig.SHORT_TIMELOCK_CONFIG.DELAY;
await increaseTimeAndMine(delaySeconds);
log('Executing the proposal');
await waitForTx(await governor.execute(proposalId));
log('Proposal executed');
log('\n=== FUNDING PROPOSAL COMPLETE ===\n');
}
export async function fundProposalNameNoProposal({
dydxTokenAddress,
shortTimelockAddress,
communityTreasuryAddress,
destinationAddress,
}: {
dydxTokenAddress: string,
shortTimelockAddress: string,
communityTreasuryAddress: string,
destinationAddress: string,
}): Promise<void> {
const deployConfig = getDeployConfig();
const mockShortTimelock = await impersonateAndFundAccount(shortTimelockAddress);
const communityTreasury = new Treasury__factory(mockShortTimelock).attach(
communityTreasuryAddress,
);
await fundCommunityTreasuryFromFoundationIfNecessary({
dydxTokenAddress,
communityTreasuryAddress,
minTreasuryBalance: deployConfig.PROPSAL_FUNDING_AMOUNT,
});
await waitForTx(
await communityTreasury.transfer(
dydxTokenAddress,
destinationAddress,
deployConfig.PROPOSAL_FUNDING_AMOUNT,
),
);
log('\n=== PROPOSAL FUNDING COMPLETE ===\n');
}
async function fundCommunityTreasuryFromFoundationIfNecessary({
dydxTokenAddress,
communityTreasuryAddress,
minTreasuryBalance,
}: {
dydxTokenAddress: string,
communityTreasuryAddress: string,
minTreasuryBalance: string,
}): Promise<void> {
const deployConfig = getDeployConfig();
const mockFoundation = await impersonateAndFundAccount(deployConfig.TOKEN_ALLOCATIONS.DYDX_FOUNDATION.ADDRESS);
const dydxToken = new DydxToken__factory(mockFoundation).attach(dydxTokenAddress);
const communityTreasuryBalance: BigNumber = await dydxToken.balanceOf(communityTreasuryAddress);
if (communityTreasuryBalance.lt(minTreasuryBalance)) {
// Transfer necessary funds to the treasury.
await waitForTx(
await dydxToken.transfer(
communityTreasuryAddress,
minTreasuryBalance,
),
);
}
}
б) Добавьте функции тестирования в тестовый сценарий
В файл test/migrations/deploy-contracts-for-test.ts мы добавим функции, созданные выше, чтобы включить их в наши тесты:
Импортируйте созданные функции
test/migrations/deploy-contracts-for-test.ts
...
import { fundProposalNameNoProposal, fundProposalNameViaProposal } from './proposal-name-proposal';
Добавьте тесты для обеих функций, создав общую функцию тестирования executeProposalNameProposalForTest. Переименуйте ее так, чтобы ее название совпадало с названием предложения.
Мы также вызываем ранее созданную переменную конфигурации TEST_PROPOSAL_NAME_TRUST_WITH_PROPOSAL и PROPOSAL_NAME_ADDRESS из deployConfig.
...
export async function executeProposalNameProposalForTest(
deployedContracts: AllDeployedContracts,
) {
const deployConfig = getDeployConfig();
if (config.TEST_PROPOSAL_NAME_TRUST_WITH_PROPOSAL) {
await fundProposalNameViaProposal({
dydxTokenAddress: deployedContracts.dydxToken.address,
governorAddress: deployedContracts.governor.address,
shortTimelockAddress: deployedContracts.shortTimelock.address,
communityTreasuryAddress: deployedContracts.communityTreasury.address,
destinationAddress: deployConfig.PROPOSAL_NAME_ADDRESS,
});
} else {
await fundProposalNameNoProposal({
dydxTokenAddress: deployedContracts.dydxToken.address,
shortTimelockAddress: deployedContracts.shortTimelock.address,
communityTreasuryAddress: deployedContracts.communityTreasury.address,
destinationAddress: deployConfig.PROPOSAL_NAME_ADDRESS,
});
}
}
...
// put this above the configureForTest function
в) Добавьте контракт для тестирования
Добавьте функцию, созданную выше, в файл test/helpers/get-deployed-contracts-for-test.ts, чтобы тесты запускались в рамках тестирования форка мейннета:
Импортируйте функцию executeProposalNameProposalForTest из файла переноса:
Добавьте эту функцию в getDeployedContractsForTest() вне последнего цикла else:
test/helpers/get-deployed-contracts-for-test.ts
async function getDeployedContractsForTest(): Promise<AllDeployedContracts> {
if (!config.isHardhat()) {
return getAllContracts();
}
let deployedContracts: AllDeployedContracts;
if (config.FORK_MAINNET) {
deployedContracts = await getAllContracts();
} else {
deployedContracts = await deployContractsForTest();
// Execute the proposals which have already been executed on mainnet.
//
// The proposals will be executed when running on a local test network,
// but will not be executed when running on a mainnet fork.
await executeSafetyModuleRecoveryProposalsForTest(deployedContracts);
await executeStarkProxyProposalForTest(deployedContracts);
await executeGrantsProgramProposalForTest(deployedContracts);
await executeGrantsProgramv15ProposalForTest(deployedContracts);
await executeWindDownBorrowingPoolProposalForTest(deployedContracts);
await executeUpdateMerkleDistributorRewardsParametersProposalForTest(deployedContracts);
await executeWindDownSafetyModuleProposalForTest(deployedContracts);
}
await executeProposalNameProposalForTest(deployedContracts);
// Execute the proposals which have not yet been executed on mainnet.
await configureForTest(deployedContracts);
return deployedContracts;
}
г) Окончательный тестовый файл
Наконец, мы добавляем проверку хэша IPFS и баланса мультиподписи после имитации предложения, чтобы убедиться, что все завершится так, как ожидалось.
Добавьте новый файл proposal-name-proposal.spec.ts с названием предложения в раздел test/misc, а затем включите в него следующие два теста:
Мы импортируем хэш IPFS из lib с помощью DIP_NUMBER_IPFS_HASH.
Мы жестко кодируем следующий номер proposalId с помощью ProposalNameId.
Мы проверяем хэш предложения с помощью константы Hash.
Мы проверяем PROPOSAL_NAME_ADDRESS на предмет наличия ожидаемого баланса PROPOSAL_FUNDING_AMOUNT.
Примечание. Если у этого адреса уже есть DYDX, вам потребуется жестко закодировать баланс для завершения теста.
test/misc/proposal-name-proposal.spec.ts
import { expect } from 'chai';
import { DIP_NUMBER_IPFS_HASH } from '../../src/lib/constants';
import { describeContract, TestContext } from '../helpers/describe-contract';
function init() {}
describeContract('proposal-name', init, (ctx: TestContext) => {
it('Proposal IPFS hash is correct', async () => {
const ProposalNameId = #;
const proposal = await ctx.governor.getProposalById(ProposalNameId);
expect(proposal.ipfsHash).to.equal(DIP_NUMBER_IPFS_HASH);
});
it('Destination receives tokens from the community treasury', async () => {
const balance = await ctx.dydxToken.balanceOf(ctx.config.PROPOSAL_NAME_ADDRESS);
expect(balance).to.equal(ctx.config.PROPOSAL_FUNDING_AMOUNT);
});
});
7. Отправка запроса на внесение изменений
После внесения всех изменений в код и их локального сохранения мы можем зафиксировать форк репозитория и отправить запрос на внесение изменений в репозиторий dYdX для рассмотрения:
а) Зафиксируйте изменения с помощью командной строки.
б) Отправьте запрос на внесение изменений в репозиторий dYdX.
в) Дождитесь рассмотрения и одобрения со стороны менеджера репозитория.
Жизненный цикл предложения
Обзор жизненного цикла предложения по улучшению dYdX (ППУ).
Этапы предложения
Ниже мы приводим предварительный проект, объясняющий, как будет протекать процесс управления dYdX v3 — от зарождения и определения концепции до ее фактической реализации. Эти процессы могут быть изменены согласно комментариям сообщества dYdX.
Предлагаемые начальные этапы принятия предложения отражены на следующей блок-схеме:
0. Обсуждение на форуме
1. Создание ЗК (офчейн)
Как минимум, ЗК должен включать следующее:
Короткие и точные названия заголовков ЗК
Короткое и точное описание предложения
Обоснование для ЗК, например, причина его подачи
Заголовок публикации на форуме должен включать краткое название ЗК. Например, «ЗК: запрос нового рынка»
Опрос сообщества, который члены сообщества могут использовать для офчейн-голосования по улучшениям
2. Обсуждение ЗК и комментарии
После публикации на форуме управления все вопросы и комментарии должны быть рассмотрены и приняты во внимание для дальнейшего улучшения ЗК.
3. Замер опроса по ЗК
Опросы Snapshot служат двум целям: выявление отношения к будущим ППУ в цепочке и связывание голосов для переменных, контролируемых вне цепочки.
После того как сообщество DRC достигнет приблизительного консенсуса, любой его участник, владеющий правом на внесение предложений и 10 000 токенов управления, может создать офчейн-голосование по DRC на Snapshot. Мы призываем сообщество dYdX создавать опросы Snapshot по понедельникам, чтобы другие могли с большей вероятностью увидеть их в течение обычной рабочей недели.
Snapshot — это простой интерфейс для голосования, который позволяет пользователям выразить мнение вне чейна. Вес голосов на Snapshot зависит от права голоса адреса, используемого для голосования.
Для опросов Snapshot, связанных с определением отношения, автор предложения должен предоставить следующее:
сведения о ЗК;
система голосования;
период голосования — дата начала и окончания голосования с учетом 4-дневного периода голосования;
задержка голосования — номер снэпшот блока, который в будущем составляет 6570 блоков (примерно 1 день из 13,2 секунды за блок). Номер блока Snapshot фиксирует состояние участников сообщества, которые могут голосовать. Голосовать могут пользователи, владевшие токенами до фиксации номера. Перед замером соответствующего права голоса каждого адреса задержка голосования дает держателям токенов управления время приобретать токены, передавать право голоса и перемещать токены между кошельками. Обратите внимание, что перемещение между кошельками применимо только к $ethDYDX и $wethDYDX.
Для решений, которые не требуют вызова смарт-контракта в цепочке, например, изменения формул распределения наград за торговлю или для поставщиков ликвидности, голосование Snapshot имеет обязательную и окончательную силу. Автор предложения должен указать вышеперечисленные требования, а также предоставить следующее:
бинарные варианты голосования — для ясности, адрес голосует либо за предложение, либо против него.
Предлагаемые изменения будут реализованы dYdX Trading Inc., если результаты опроса Snapshot удовлетворят следующим критериям:
минимальный кворум — не менее 1 000 000 токенов управления. Минимальный размер кворума способствует децентрализации процесса принятия решений и защищает от одностороннего принятия решений.
минимальная разница в количестве голосов — в пользу предложения должно быть отдано не менее 67% голосов. Минимальная разница в количестве голосов помогает отсеивать очень спорные предложения, требующие дальнейшего обсуждения.
На то, чтобы внести изменения, полученные в результате успешного опроса Snapshot, у dYdX Trading Inc. будет периода исполнения сроком до 1 эпохи (28 дней).
Обращаем внимание, что предложения и голоса — это просто подписанные сообщения, хранящиеся в IPFS и доступные на портале Commonwealth.
4. Создание ППУ (ончейн)
Если достигнут примерный консенсус, участник сообщества, обладающий соответствующим правом на внесение данного типа предложений, может внести ППУ в блокчейне. ППУ в блокчейне инициируется вызовом смарт-контракта. Предложение должно быть основано на победном результате офчейн-голосования по ППУ на Snapshot. Оно может состоять из одного или нескольких действий (до десяти).
Для создания ППУ требуется минимальное количество находящихся во владении/делегированных токенов на учетной записи. При создании предложения необходимо указать исполнителя с правом на блокировку по времени. Ниже приведены исходные параметры (управление может менять их):
Параметр
Описание
Исполнитель с правом на короткую блокировку по времени
Исполнитель с правом на остановку дерева Меркла
Исполнитель с правом на длительную блокировку по времени
Исполнитель Starkware
Порог предложения
Минимальное количество находящихся во владении/делегированных токенов, необходимое для создания предложения
0,5% от общего доступного количества
0,5% от общего доступного количества
2% от общего доступного количества
0,5% от общего доступного количества
5. Голосование по ППУ (ончейн)
После создания ППУ в цепочке предложение переходит в состояние ожидания на период, определяемый задержкой голосования, которая в настоящий момент сконфигурирована на 6570 блоков или приблизительно 1 день (из расчета 13,2 секунды на блок). Другими словами, снимки пользователей фиксируются через 1 день после создания ППУ. В этот момент предложение переходит в активное состояние.
После задержки голосования активируется период голосования. Продолжительность периода голосования зависит от типа предложения.
Блок-схема состояний ППУ показана ниже:
После создания ППУ в блокчейне начинаются задержка голосования и период голосования, а для него должны быть достигнуты минимальный кворум и минимальная разница в количестве голосов. Ниже приведены исходные параметры:
Параметр
Описание
Исполнитель с правом на короткую блокировку по времени
Исполнитель с правом на остановку дерева Меркла
Исполнитель с правом на длительную блокировку по времени
Исполнитель Starkware
Задержка голосования
Количество блоков Ethereum, которое нужно создать до начала голосования по предложению после его внесения
6570 блоков
6570 блоков
6570 блоков
6570 блоков
Период голосования*
Время, в течение которого можно голосовать по предложениям
4 дня
2 дня
10 дней
4 дня
Минимальный кворум
Минимальное количество голосов за ППУ для его принятия
2% от общего доступного количества
1% от общего доступного количества
10% от общего доступного количества
2% от общего доступного количества
Разница в количестве голосов
Разрыв в количестве голосов «за/против», требуемый для принятия ППУ
0,5% от общего доступного количества
0,5% от общего доступного количества
10% от общего доступного количества
0,5% от общего доступного количества
*Время рассчитано на основе 13,2 секундных временных блоков.
Управление может менять только задержку голосования. Ее можно изменить только в пределах (включительно) минимальной и максимальной задержки. Период голосования, минимальный размер кворума и разницу в количестве голосов менять нельзя.
6. Постановка в очередь и исполнение предложений
После принятия ППУ любой адрес может вызвать метод помещения в очередь, чтобы поставить предложение в очередь блокировки по времени. В очередь можно помещать только принятые ППУ.
Параметр
Описание
Исполнитель с правом на короткую блокировку по времени
Исполнитель с правом на остановку дерева Меркла
Исполнитель с правом на длительную блокировку по времени
Исполнитель Starkware
Задержка блокировки времени*
Задержка после принятия и размещения предложения в очереди и перед его выполнением
2 дня
0 дней
7 дней
2–9 дней
Грейс-период исполнения*
Период, когда предложение становится выполнимым и в течение которого должно быть исполнено.
7 дней
7 дней
7 дней
7 дней
Минимальная задержка блокировки времени*
Минимальная задержка перед исполнением предложения (после его размещения в очереди)
1 день
0 дней
5 дней
4 дня
Максимальная задержка блокировки времени*
Максимальная задержка до исполнения предложения (после размещения в очереди)
7 дней
1 день
21 день
21 день
*Время рассчитано на основе 13,2 секундных временных блоков.
Как только период голосования завершается и предложение принимается, любой желающий может вызвать функцию размещения в очереди, чтобы начать задержку блокировки по времени.
Для исполнителя Starkware с правом на приоритетную блокировку период приоритета составляет 7 дней из 9 дней задержки блокировки по времени. Это означает, что через 9 дней исполнить предложение может любой пользователь, но со 2-го по 9-й день (период приоритета) сделать это может только исполнитель Starkware.
На практике это выглядит следующим образом:
Дни 0–2: исполнить предложение не может никто
Дни 2–9: исполнить предложение может только Starkware
День 9: исполнить предложение может любой пользователь
7. Отмена предложения (необязательно)
Автор предложения может отменить ППУ в любой момент его жизненного цикла. Предложение может отменить любой пользователь, прежде чем оно будет исполнено, если у лица, представившего предложение, недостаточно прав на внесение предложений в текущем блоке.
Часто задаваемые вопросы
Зачем нужна задержка голосования?
Задержка голосования — это количество блоков Ethereum, которое нужно создать после внесения предложения и до появления возможности проголосовать по нему.
Право голоса должно быть полностью передано на адрес либо до подачи предложения, либо во время задержки голосования по предложению.
На данный момент задержка голосования составляет 6570 блоков, то есть примерно 1 день. Это значение добавляется к номеру текущего блока при создании предложения.
В будущем управление dYdX может проголосовать за увеличение или сокращение продолжительности задержки голосования. Увеличение задержки голосования имеет очевидные преимущества. Однако это может привести к некоторым потенциально негативным последствиям, таким как успешная эксплуатация пограничных случаев.
Зачем нужно пороговое число токенов?
Поскольку $ethDYDX и $wethDYDX являются свободно торгуемыми активами, любой может попытаться перехватить управление посредством покупки на рынке. Тем не менее, для принудительного прохождения недобросовестного голосования потребуется минимум 5 000 000 токенов управления в случае короткого временного ограничения; или 20 000 000 токенов управления в случае длительной блокировки. Хотя возможность владения таким количеством токенов не исключается, оно слишком большое, и вполне вероятно, что атака принесет больший убыток нежели выгоду с учетом колебания цен.
Если какая-либо группа лиц добьется недобросовестного захвата, задержка блокировки по времени даст пострадавшим агентам время на вывод своих активов из протокола. Это также позволит создать форк протокола, который, скорее всего, выберут оставшиеся добросовестные участники.
Технический обзор
Обзор архитектуры управления и смарт-контрактов.
Обзор архитектуры управления
Ончейн-управление dYdX позволяет следующее:
Создавать предложения и голосовать по ним
Получать снимки находящихся во владении токенов в начале процесса внесения предложения
Делегировать отдельные права голоса и права на внесение предложений
Устанавливать пороговые значения для управления, в том числе для числа предложений, кворума, а также разницы в количестве голосов
Заменить смарт-контракт стратегии управления V2, определяющий принцип подсчета голосов
Настраивать несколько контрактов исполнителя, которые позволяют следующее:
быстро вносить изменения в протокол и распределять средства благодаря исполнителям с правом на короткую блокировку по времени;
модернизировать процесс управления благодаря исполнителям с правом на длительную блокировку по времени.
Существует 7 смарт-контрактов, поддерживающих управление dYdX:
Контракт на токен DYDX: содержит снимки, которые поддерживают запросы на получение права голоса и права на внесение предложений адресов в любом номере блока. Поддерживает делегирование отдельных прав голоса и прав на внесение предложений.
Контракт на обернутый токен Ethereum Dydx: содержит снимки, которые поддерживают запросы на получение права голоса и права на внесение предложений адресов в любом номере блока. Поддерживает делегирование отдельных прав голоса и прав на внесение предложений.
Контракт управляющего DYDX: отслеживает и может исполнять предложения с помощью смарт-контракта на блокировку по времени.
Контракты исполнителя: может помещать в очередь, отменять или выполнять операции, за которые проголосовало управление. Если предложение принято, то с помощью контракта исполнителя, указанного в предложении, можно вызывать функции. С помощью контракта исполнителя можно определять продолжительность задержки, с которой выполняются операции, находящиеся в очереди.
****Контракт наприоритетную блокировку по времени: аналогичен контракту на блокировку по времени, но позволяет контролеру приоритета исполнять операции в течение периода приоритета (7 дней) до окончания задержки блокировки по времени.
Контракт на стратегию управления V2: содержит логическую схему подсчета голосов. В настоящее время подсчитываются голоса от токена $ethDYDX, токена $wethDYDX и $stkDYDX. Может быть модернизирован с помощью длительной блокировки по времени.
Контракт на модуль безопасности: содержит логическую схему стейкинга токенов DYDX, токенизации размещенной в стейке позиции и получения наград при сохранении права голоса и права на внесение предложений, а также функций делегирования базовых токенов.
Контракт
Адрес
Токен DYDX
0x92D6C1e31e14520e676a687F0a93788B716BEff5
Обернутый токен Ethereum Dydx
0x46b2DeAe6eFf3011008EA27EA36b7c27255dddFA9
Управляющий DYDX
0x7E9B1672616FF6D6629Ef2879419aaE79A9018D2
Исполнитель с правом на короткую блокировку по времени
0x64c7d40c07EFAbec2AafdC243bF59eaF2195c6dc
Исполнитель с правом на длительную блокировку по времени
0xEcaE9BF44A21d00E2350a42127A377Bf5856d84B
Исполнитель с правом на остановку дерева Меркла
0xd98e7A71BacB6F11438A8271dDB2EFd7f9361F52
Исполнитель Starkware с правом на приоритетную блокировку по времени
0xa306989BA6BcacdECCf3C0614FfF2B8C668e3CaE
Казна наград
0x639192D54431F8c816368D3FB4107Bc168d0E871
Казначейский мост наград
0x8d0051943D4c72aF12D638c6b7253C71929A910A
Казна сообщества
0xE710CEd57456D3A16152c32835B5FB4E72D9eA5b
Казначейский мост сообщества
0x5D8541e3078BE7c2D773185aD8C8b9ED5105E08c
Модуль безопасности
0x65f7BA4Ec257AF7c55fd5854E5f6356bBd0fb8EC
Стратегия управления V2
0xc2f5F3505910Da80F0592a3Cc023881C50b16505
Вестинг казны наград
0xb9431E19B29B952d9358025f680077C3Fd37292f
Вестинг казны сообщества
0x08a90Fe0741B7DeF03fB290cc7B273F1855767D8
Дистрибьютор Меркла
0x01d3348601968aB85b4bb028979006eac235a588
Адаптер Chainlink
0x99B0599952a4FD2d1A1561Fa4C010827EaD30354
Стейкинг ликвидности
0x5Aa653A076c1dbB47cec8C1B4d152444CAD91941
Доверенность получения
0x0fd829C3365A225FB9226e75c97c3A114bD3199e
Вспомогательный управляющий StarkEx
0x0db9b3F7Dd83e29C9bece8E5e1089bA4369E694a
Управляющий удалением StarkEx V2
0xFCAac0F14deA11eDe11Afcb875f29130e1ad5ec0
Администрирование доверенности казны наград
0x40D6992cbd03E0DC1c2DE9606D29Cb245E737a5d
Администрирование доверенности казны сообщества
0x9d51599A6b10f562619D8ef2EFDcA1B68aE80D03
Администрирование доверенности модуля безопасности
Контракт на обернутый токен Ethereum Dydx — это обернутая версия токена Dydx. Пользователи могут взаимодействовать со смарт-контрактом wethDYDX и получать wethDYDX.
Смарт-контракт дистрибьютора Меркла распределяет вознаграждения в виде токенов $ethDYDX согласно балансам дерева Меркла. Дерево может периодически обновляться с учетом совокупного баланса вознаграждений каждого пользователя, что позволяет распределять новые награды между ними с течением времени.
Обновление выражается в установке последнего значения, возвращенного контрактом оракула, для предложенного корня Меркла. Предложенный корень Меркла может быть активен после периода ожидания. В течение периода ожидания управление dYdX может заморозить корень Меркла в случае, если предложенный корень неверный или содержит вредоносный код. Исполнитель с правом на короткую блокировку по времени может возобновить процесс обновления корня.
Модуль безопасности представляет собой пул стейкинга, который распределяет награды в виде токенов $ethDYDX между пользователями, размещающими $ethDYDX в стейке с целью защиты протокола.
Награды для поставщиков ликвидности
Модуль ликвидности представляет собой набор смарт-контрактов для стейкинга и займа, которые стимулируют распределение средств в виде $USDC с целью поддержания двусторонних котировок на бирже dYdX уровня 2.
Стейкеры получают награды $ethDYDX за стейкинг $USDC. Предварительно утвержденные партнеры могут заимствовать размещенные в стейке средства на основе репутации и без залогового обеспечения. Средства можно использовать только на бирже уровня 2, что обеспечивается контрактом StarkProxy, который взаимодействует с контрактом StarkEx Perpetual Exchange.
StarkProxy
Контракты кассы
Контракт на короткую блокировку по времени может выполнять только действия, утвержденные управлением.
Существует два вестера кассы и контракта кассы:
Поскольку управление контролирует каждую кассу, оно может переводить средства на любой адрес и/или позволять какому-либо адресу расходовать средства любой кассы. Например, управление должно будет установить лимиты для токенов в рамках программ вознаграждения.
Каждый вестер контракта будет наделять токенами равными частями на протяжении \примерно 5 лет (с 3 августа 2021 г. по 3 августа 2026 г.) соответствующую кассу. Поскольку вестер-контракты являются неизменными при развертывании, сообщество dYdX проголосовало за установку получателя контрактов на вестинг по следующим адресам:
Периферийные контракты
Награды на базе оракула Chainlink (награды за торговлю и обеспечение ликвидности)
Цель этой системы — расчет и публикация наград в виде токенов ethDYDX, заработанных трейдерами на бирже dYdX уровня 2, с помощью децентрализованной сети подписантов оракула. Награды хранятся в дереве Меркла, где содержатся совокупные награды каждого пользователя, полученные с начала запуска программы распределения. Каждую эпоху корень Меркла обновляется согласно смарт-контракту MerkleDistributorV1, чтобы показать награды, заработанные за последнюю эпоху.
Для ончейн-публикации данных о вознаграждениях мы обеспечили интеграцию с системой-оракулом Chainlink. Для публикации данных о торговле, которые Chainlink использует для создания дерева Меркла, мы используем систему IPNS. Используя систему IPNS, мы можем размещать торговые данные за последнюю эпоху по той же ссылке IPNS, что и за предыдущие эпохи, обеспечивая аналогичное расположение данных.
После расчета соответствующих наград на основе необработанных торговых данных Chainlink публикует дерево Меркла вознаграждений в протоколе IPFS. Информация об архитектуре системы вознаграждения Chainlink на базе оракула приводится на следующей диаграмме:
Информация об архитектуре системы вознаграждения Chainlink на базе оракула приводится на следующей диаграмме:
Прочие ресурсы
Чтобы создать это предложение, член сообщества dYdX должен иметь не менее 5 млн токенов управления(0,5% от общего доступного количества токенов). Это для внесения предложений с целью .
Жизненный цикл предложения. Нужно опубликовать ЗК согласно предложения, а члены сообщества должны проголосовать за предложение на Snapshot.
Создайте форкв своем аккаунте GitHub.
Процесс управления dYdX осуществляется на форумах управления на веб-сайте и утверждается путем внесения предложений по улучшению dYdX (далее — «ППУ»).
На форумах управления dYdX по адресу зарегистрироваться и создать ветку на любую тему могут все пользователи. Члены сообщества должны зарегистрироваться, используя адрес электронной почты или кошелек Ethereum.
Офчейн-создание запроса комментариев dYdX (далее — «ЗК») — это первый шаг в процессе улучшения управления. Участвовать в , создавать ЗК вне цепочки (офчейн) и обсуждать улучшения могут все пользователи.
Чтобы создать ЗК, используйте , доступный в нашем профиле GitHub. В ЗК должна содержаться вся информация о потенциальном окончательном ППУ.
Весь исходный код смарт-контракта для контрактов на управление и пулы стейкинга можно найти по адресу .
Исходный код интерфейса управления dydx.community, можно найти .
Все новые основные смарт-контракты прошли проверку компанией Peckshield. Важных или высокоприоритетных проблем безопасности не обнаружено. Базовые контракты на управление и токены получены в результате форка кодовой базы контрактов на управление Aave, которые прошли проверку , и и в течение многих месяцев испытывались на практике в основной сети.
Контракт на токен DYDX развернут в основной сети Ethereum по адресу .
wethDYDX развернут в основной сети Ethereum по адресу .
Контракт управляющего развернут в основной сети Ethereum по адресу .
Идея стратегии управления V2 была подана Aave и обновлена на основе .
Стратегия развернута в основной сети Ethereum по адресу .
Контракт на длительную блокировку по времени развернут в основной сети Ethereum по адресу .
Контракт на короткую блокировку по времени развернут в основной сети Etherium по адресу .
Контракт на блокировку дерева Меркла по времени развернут в основной сети Etherium по адресу .
Контракт на приоритетную блокировку по времени Starkware развернут в основной сети Etherium по адресу .
Смарт-контракт дистрибьютора Меркла был вдохновлен проектами Uniswap и Badger. Смарт-контракт развернут в основной сети Ethereum по адресу .
Этот контракт позволяет своему владельцу заимствовать средства из стейка ликвидности и использовать их в рамках контракта StarkPerpetual. Владелец может вносить дополнительные средства, и любые средства, превышающие сумму займа, можно беспрепятственно вывести. Этот контракт взаимодействует с контрактом , созданным Starkware, а также проверенным и развернутым ранее.
Контракт на вестинг казны был вдохновлен протоколом .
и — поощрительные вознаграждения по контракту; и
и йпвестиначены для хранения средств казны "общего назначения".казна Казначейски
В рамках сообщество dYdX проголосовало за использование смарт-контрактов и , что позволило перенести доступные ethDYDX из и в цепочку dYdX.
будет передан в 0x000000вести0000000000000000000000000001, и
будет передан в 0x00вести00000000000000000000000000000002.
Ресурсы торговой марки dYdX Foundation доступны ****