Обновление PowerPool — октябрь 2024 года

PowerPoolRU
9 min readNov 5, 2024

--

Привет, сообщество PowerPool! Мы рады представить вам последние достижения и обновления PowerPool за прошедший месяц.

В этом отчете мы рассмотрим:

  1. PowerAgent V2: статистика сети
  2. Обновления кода и интерфейса PowerAgent
  3. Исследовательская деятельность

Давайте углубимся в детали!

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, вызванная проблемами с подключением сервера к интернету.

dApp:

  • Создана страница «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, тестировала все вышеперечисленные обновления и функции программного обеспечения и сообщала об обнаруженных проблемах команде разработчиков. Одной из важнейших задач было тестирование новой системы поинтов, выпуск которой планируется в ближайшее время после завершения работы старой системы и распределения наград владельцам старых поинтов.

--

--

PowerPoolRU
PowerPoolRU

Written by PowerPoolRU

Официальные переводы оригинальных статей PowerPool (https://medium.com/@powerpoolcvp)

No responses yet