Обновление PowerPool — октябрь 2024 года
Привет, сообщество PowerPool! Мы рады представить вам последние достижения и обновления PowerPool за прошедший месяц.
В этом отчете мы рассмотрим:
- PowerAgent V2: статистика сети
- Обновления кода и интерфейса PowerAgent
- Исследовательская деятельность
Давайте углубимся в детали!
PowerAgent V2: Статистика сети
Чтобы присоединиться к тестнету PowerAgent, вступайте в наш PowerPool Discord!.
PowerAgent Code & UI Updates
Contracts:
- Переработана архитектура VRF: теперь вызов
fulfillRandomWords
осуществляется от агента кVRFAgentCoordinator
, а не кVRFAgentConsumer
. - Обновлен процесс деплоя контрактов: добавлена поддержка
PPAgentV2VRFBased
, скрипт для генерации JSON для верификации и тест для выполнения резолвера с использованием time machine. - Добавлен метод
getRequestData
в агент и улучшен репозиторий агента для тестирования на сервере. - Исследована ошибка: Blacklist on slashing error (
SlashingNotInitiatedExecutionReverted
), но воспроизвести ее не удалось. - Добавлен метод
deactivateJob
вAgent Manager
. - Мигрирован агент на Linea к новой версии потребителя.
- Разработан прототип модуля безопасности.
- Протестирован процесс создания контрактов токенов sidechain через мосты и проанализированы их требования.
- Протестирован
CVP bridge locker
на разных сетях. - Деплоены
CVP
иbridge locker
на сеть Base. - Исследована возможность использования нативного моста Arbitrum для
CVP
.
Liquidation Protection Contracts:
- Проведен тест для измерения затрат газа при выполнении защиты с 1 и 2 токенами на Gnosis Chain.
- Сделано так, чтобы владение стратегией LP не могло быть передано.
- Добавлена стратегия
MultiToken
. - Скорректирован
baseToToken
для лучшей обработки ошибок округления. - Включены проверки баланса и одобрения резерва в резолвере.
- Добавлены
deployedStrategies
и списокknownAddressRegistries
в Factory. - Задеплоена стратегия LP для токенов на Arbitrum и инициированы HF-бампы.
- Добавлены некоторые форк-тесты для стратегии
MultiToken
. - Добавлены дополнительные мок-тесты для стратегии
MultiToken
, охватывающие сценарии с нулевыми балансами и полными разрешениями, использование только первого токена с достаточным балансом, использование второго токена с достаточным балансом при неиспользовании других токенов или с нулевым разрешением, а также аналогично тестирование третьего токена с различными условиями баланса и разрешения. - Исправлены проблемы с запуском форк-тестов.
- Реализовано ограничение, предотвращающее установку защиты для нулевых токенов.
Power Agent Node (TS):
- Отлажен
resolver success callback
и исправлена проблема, когдаresolver callbacks
не выполняли никаких действий. - Исправлена ошибка
_onNewBlockCallback
:Cannot convert undefined to a BigInt
. - Исследована проблема, когда интервал пытался выполняться дважды, но воспроизвести ее не удалось.
- Исправлена проблема слэшинга на Arbitrum с ошибкой
Cannot connect to WS: RangeError: Max payload size exceeded
. - Исправлена ошибка
_onNewBlockCallback
:Cannot mix BigInt and other types, use explicit conversions
, вызывавшаяTypeError
. - Добавлено логирование для решения ошибки
QueueEmitter.execute
. - Исправлена ошибка
Graph meta query
:TypeError: Cannot convert null to a BigInt
. - Исследована и исправлена проблема с
txExecutionFailed
: недостаточно средств для базовой стоимости транзакции, несмотря на баланс $10 на Arbitrum. Проблема решилась сама собой. - Исправлена проблема слэшинга, обновив
queryJob
для источника данных Subquery. - Исследована и исправлена проблема, когда Subgraph отставал на 281 278 блоков при запуске узла.
- Настроены тесты узла и Explorer для запуска в Docker с базой данных PostgreSQL, чтобы устранить проблемы локальной среды и лучше согласовать тестовую среду с производственной.
- Исправлена проблема избыточных запросов от кипера, вызывавшая перегрузку RPC на Gnosis.
- Исправлена проблема переоценки газа на Sepolia.
Power Agent Off-chain service (TS):
- Модифицирован
VRFProofGenerator
для использования потребителя в качестве отправителя вpreSeed
. - Обновлены тесты для использования
VRFAgentConsumer
в качестве адреса задания. - Начали использовать узел go-IPFS для хранения и извлечения off-chain скриптов.
- Проведены дополнительные тесты и отладка off-chain сервиса, исправлены возможные ошибки.
- Добавлен узел go-IPFS в конфигурацию Docker Compose.
- Переработан
scriptToExecute
для устранения проблемы с subquery на VRF. - Исправлено подключение IPFS к бутнодам и добавлены лимиты на сохранение и загрузку файлов.
- Проведены обновления для off-chain сервиса: удалены старые скрипты при запуске и проведён небольшой рефакторинг.
- Реализовано возможное исправление для ситуации, когда контейнер не удавалось завершить, что приводило к состоянию «зомби».
- Исправлена ошибка в off-chain сервисе путем корректировки пути
scriptsToExecute
, из-за чего возникала ошибка «Cannot find module». - Исправлена ошибка во off-chain сервисе, когда объекты скриптов были пустыми при запуске сервиса.
- Решена проблема с тем, что IPFS занимал слишком много места, путем его сброса каждые 24 часа.
- Исследована проблема отсутствия опроса резолверов после переподключения в сети Base, вызванная проблемами с подключением сервера к интернету.
- Создана страница «Points Leaderboard».
- Создана страница «Points Referral».
- Создана страница «Points Overview».
- Создана страница «Points Account».
- Добавлен весь необходимый функционал для страниц «Overview» и «Leaderboard» и проведено тестирование.
- Проведены тесты и исправлены проблемы на странице «Referral».
- Проведены тесты и исправлены проблемы на странице «Points Account».
- Завершена верстка и логика для страницы «Points Overview».
- Завершена верстка и логика для страницы «Points Account».
- Протестированы две эпохи поинтов и внесены некоторые исправления.
- Завершена верстка и логика для страницы «Points Referral».
- Завершена верстка и логика для страницы «Points Leaderboard».
- Исправлена функция генерации и копирования реферальной ссылки на странице «Overview».
- Выполнены корректировки адаптивного дизайна для страниц программы «Points».
- Добавлена навигация на страницу «Points Account».
- Внесены мелкие исправления интерфейса после проверки.
- Исправлена проблема с «initContracts» при использовании реферальной ссылки. Ошибка возникала при посещении страницы по реферальной ссылке — если кошелек не был подключен, проблему можно было решить только перезагрузкой страницы.
- Проведены тесты для создания и регистрации новых киперов в системе «Points».
- Добавлен владелец задания в интерфейс и проведено тестирование.
- Исправлены ошибки после проверки верстки, удалена устаревшая кнопка и улучшены элементы системы дизайна.
- Добавлена информация о сети в таблицу «Points Leaderboard».
- По итогам тестирования исправлены проблемы, связанные с поинтами: скорректированы позиции в таблице лидеров на второй странице, добавлены пропущенные начисления очков после выполнения нескольких заданий, устранена проблема, когда пользователи видели вторую эпоху во время третьей, и уточнено название строки с наградой за регистрацию для снижения путаницы.
- Обновлена страница создания заданий, упрощены интерфейсы и обновлены формы ввода данных.
- Обновлена страница списка агентов: убраны лишние элементы и упрощен интерфейс. Теперь страница состоит из одного списка агентов с элементами, которые можно разворачивать. При создании киперов или заданий нужный агент разворачивается автоматически.
- Обновлена страница «All Keepers» с акцентом на улучшение системы фильтрации, так как она иногда давала сбои при применении фильтра агента.
- Обновлена страница «All Jobs». Убраны слишком сложные, отдельные формы для мобильных устройств; изменение размера существующих элементов теперь обеспечивает совместимость с мобильными устройствами.
- Подготовлена инфраструктура «Subquery» для новых контрактов на «Linea» и «Arbitrum», и эти контракты интегрированы в интерфейс приложения.
- Обновлена страница «My Jobs», добавлены фильтры, аналогичные странице «All Jobs», и ограничено отображение заданий по выбранному агенту.
- Обновлена страница «My Keepers». В отличие от страницы «All Keepers», элементы списка теперь содержат подробную информацию о каждом кипере.
- Обновлена страница киперов в «Explorer», добавлены основные элементы, такие как поиск, и заменены элементы фильтрации на соответствующие новому дизайну.
- Обновлена страница заданий в «Explorer».
- Обновлена страница транзакций в «Explorer».
- Обновлена страница статистики в «Explorer».
- Обновлен интерфейс выбора агента для улучшения ясности, какой агент выбран. Отображение только адреса агента было недостаточным, поэтому для большей ясности добавлено имя агента.
- Добавлена автоселекция агентов с существующими киперами на странице «My Keepers».
- Исправлена проблема, когда кнопка «Create Keeper» внизу не работала.
- Исправлена проблема, когда поля «keeperFrom» и «keeperTo» были пустыми в списке выполнений.
- В приложение PowerPool dApp добавлено приложение для «Liquidation Protection».
- Исправлена проблема, когда задания не обновлялись после выпуска или вывода средств.
- Улучшена логика «Next Execution» для исправления ошибки, из-за которой незакрепленные задания отображались как «Already Executing» в интерфейсе.
- Новая функция: реализован 30-секундный интервал обновления для заданий со статусом «Already Executing». Пока функция активна, «setInterval» обновляет статус задания каждые 30 секунд, обновляя историю для отображения новых записей дебета (execute) при изменении статуса.
- Исследовано, как мост «Arbitrum» влияет на поток интерфейса.
- В процесс создания заданий добавлены off-chain задания резолвера.
- Обновлен интерфейс моста для поддержки любой сети «DeBridge».
- Исправлена проблема, когда интерфейс некорректно работал с разными контрактами на «Linea» и «Arbitrum» [7][8].
Cross-chain DCA trading strategy dApp:
- Проведен базовый тест стратегии «DCA».
- Выполнена миграция на новую версию «Webpack» для устранения сбоев «Node-gyp» на macOS. Также была предпринята попытка использовать виртуальную машину в процессе.
Aave Liquidation protection dApp:
- Реализована функция получения позиций из «Aave» и добавлена ссылка для создания позиций в приложении защиты.
- Инициализировано приложение «Liquidation Protection», удален ненужный код из шаблона PowerPool. Несмотря на использование фреймворка PowerPool, это приложение будет значительно проще, поэтому удаление избыточного кода было важно для оптимизации производства.
- Создан интерфейс для развертывания смарт-контрактов из фабрики в приложении «Liquidation Protection».
- Добавлен функционал редактирования токенов защиты в интерфейсе, позволяющий пользователям удалять и добавлять токены, изменять их порядок и добавлять любые отсутствующие разрешения после этапа создания контракта.
- Добавлен функционал редактирования параметров контракта защиты, что позволяет пользователям изменять целевые и триггерные значения «health factor» и, при необходимости, помечать контракт защиты как устаревший.
- Обновлен основной интерфейс защиты, улучшен индикатор защиты и добавлен список токенов защиты.
- Добавлена возможность принимать передачи заданий и предоставлять разрешения для токенов защиты после создания контракта защиты.
UI/UX:
- Создан шаблон дизайна для модуля «Safety».
- Разработан полный дизайн для dApp «Liquidity Protection».
- Разработан полный дизайн для раздела «Points».
- Внесены изменения в заголовок, добавлен индикатор поинтов.
- Добавлено имя агента в фильтр агентов.
- В «Explorer» добавлен выбор агента.
subQuery:
- Исследована проблема отсутствия информации о слэшинге Кипера, которая была исправлена путем повторной синхронизации Subquery.
- Изучена и устранена ошибка, из-за которой Subquery случайным образом останавливалась и не перезапускалась.
- Исправлена проблема с задержкой Subquery на Polygon более чем на 200 блоков. Эта задержка была критичной для экосистемы, так как Polygon требует ожидания в 200 блоков для предотвращения форков до получения данных. Задержка была уменьшена до 20 блоков для улучшения скорости отклика.
- Исправлена ошибка в Subquery на Arbitrum, вызванная параметром unfinalized-blocks.
Explorer:
- Реализована базовая логика рефералов в Explorer с проверкой через Dune Analytics.
- Проведены улучшения для решения проблемы с актуальностью данных в Explorer.
- Добавлены эпохи и отчетность по очкам в Explorer.
- Добавлены компенсации и комиссии за транзакции в разделе транзакций в Explorer.
- Добавлена функция для расчета очков на основе компенсаций и инициализированы API-эндпоинты.
- Улучшена интеграция «backend for frontend» и проведено тестирование.
- Проведены тесты, исправлены ошибки в Explorer и добавлены награды для пользователей, присоединившихся к программе Points.
- Оптимизирована база данных путем удаления модели «ReferralInvited», добавления модели «ReferralAction» и создания действий по компенсации в «onTransactionReferral».
- Заменены транзакции на действия по рефералам в Explorer и протестирован список на странице аккаунта.
- Добавлены адреса для таблицы лидеров, «referralTotalPointsGave», и обновлена эпоха рефералов для новых транзакций.
- Обновлены «pointsPerCompensationPerNetwork» и протестированы две эпохи в Points Explorer.
- Создан снимок для предыдущей эпохи и улучшен процесс фильтрации.
- Усовершенствована система реферальных очков добавлением столбца в базе данных для отслеживания, сколько очков было передано рефералу. Это значение фиксируется во время создания снимков и суммируется с предыдущими значениями.
- Добавлены «safeExecute» и проверка существования реферала, переименована «GlobalReferralEpoch». Внедрена промежуточная программа (middleware), предотвращающая двойное или тройное начисление очков, решая предыдущую проблему, когда пользователи могли дважды кликнуть и получить двойные награды. Кроме того, улучшена безопасность API, и модель была переименована.
- Добавлены «UserTotalReferralEpoch» и поддержка middleware в эндпоинте worker. Ранее middleware работала в основном потоке, но не поддерживалась в рабочих потоках. Теперь добавлена поддержка middleware для запросов API внутри рабочих потоков. Кроме того, добавлена «UserTotalReferralEpoch», чтобы суммировать все реферальные заработки пользователя за каждую эпоху.
- Проведены дополнительные тесты и улучшен API для интерфейса.
- Обновлен Points Explorer путем установки новой конфигурации, сброса базы данных и тестирования новых значений.
- Улучшено создание провайдеров с стабильным URL-адресом RPC в Explorer.
- Исправлено извлечение адреса задания из execute txData.
- Добавлены и протестированы компенсационные поинты владельца задания в Explorer.
- Исправлена ошибка «undefined» при создании заданий для черного списка. Проблема заключалась в функции «parseAndSetUnrecognizedErrorMessage», которая в некоторых случаях создавала пустые сообщения об ошибках.
- Проведена отладка и исправлена проблема с обновлением общего числа эпох пользователя в таблице лидеров.
- Улучшен эндпоинт «/api/referral/users-epochs» в Explorer.
- Улучшен Explorer для тестирования системы Points, добавлены переменные окружения, улучшена конфигурация и исправлена схема базы данных для работы в новой тестовой среде.
- Создан автоматизированный тест для системы Points, улучшена среда Docker для выполнения тестов, написан тест для проверки общих значений в системе Points, и решена ошибка Docker (docker/for-mac#6956).
- Решены проблемы с очками, выявленные бета-тестерами, путем улучшения переключения RPC на более стабильные варианты, обработки неудачных запросов с автоматическим переключением RPC, улучшения логирования для проблем с RPC, исправления ограничений действий по рефералам, рефакторинга кода API-эндпоинтов и обновления списка RPC-эндпоинтов с удалением недоступных и добавлением активных.
- Проведены автоматизированные тесты и исправлены ошибки, включая улучшение логирования для недоступных провайдеров, обеспечение условий модели для тестов, создание базовых сигнатур методов, если они отсутствовали, изменение продолжительности эпохи с одной недели до двух, исправление обновлений по общему числу эпох и корректировку записи «referralPointsAmount» в базе данных.
- Отлажена и исправлена проблема с обновлением «compensationPointsAmount» в Points Explorer.
Landing page:
- Добавлены диаграммы «Linea» и «Gnosis» в круговую диаграмму на главной странице.
- Добавлен «Polygon» в круговую диаграмму.
- Улучшена стабильность главной страницы, чтобы статистика проекта загружалась в режиме реального времени даже при нестабильном интернет-соединении.
Infrastructure:
- Запущена дополнительная нода BASE.
- Запущена дополнительная нода Optimism.
- Запущена дополнительная нода Linea.
- Запущена дополнительная архивная нода Ethereum.
- Исправлена проблема в ноде «Gnosis», связанная с массовыми запросами блоков, путем настройки логирования NGINX для запросов JSON-RPC с IP-адресами, уменьшения максимального предела блоков для запроса «eth_getLogs» с 20K до 5K и сокращения времени ожидания запроса с 20 секунд до 10. Новых проблем не возникло.
- Обновлена нода Arbitrum до последней версии.
- Обновлена нода Gnosis до последней версии.
R&D activities
Команда исследований и разработок PowerPool отслеживала всю активность киперов и нод, проводила airdrop’ы $CVP, тестировала все вышеперечисленные обновления и функции программного обеспечения и сообщала об обнаруженных проблемах команде разработчиков. Одной из важнейших задач было тестирование новой системы поинтов, выпуск которой планируется в ближайшее время после завершения работы старой системы и распределения наград владельцам старых поинтов.