Пофиксить MevBlocker Bundle Merging Tracker

10 000 руб. за проект
21 декабря 2024, 11:55 • 0 откликов • 22 просмотра
Цель:
В проекте возникли многочисленные проблемы, связанные с симуляцией транзакций, проверкой включения и обработкой данных блокчейна. Данный перечень задач направлен на устранение этих проблем, оптимизацию производительности и повышение надежности системы. Описание включает необходимые исправления, оптимизации и улучшения.

Задачи:
1. Отслеживание и исключение пользовательских транзакций:

Добавить параметр user_transaction_hash для идентификации пользовательской транзакции.
Разрешение пользовательской транзакции в симуляциях:

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

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

Если пользовательская транзакция включена в несколько бандлов:
Выполнять симуляцию этих бандлов для определения оптимального возврата или комбинации бандлов, принимая пользовательскую транзакцию как фиксированную часть.
Сравнивать результаты этих симуляций для выявления нарушений или неэффективности.
Отметка транзакций как обработанных:

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


2. Оптимизация simulate_optimal_bundle_combinations
Проблема:
Текущая реализация перебирает все возможные комбинации бандлов, что приводит к сложности O(2^n). Это слишком ресурсоёмко.

Задачи:
Замена полного перебора жадным подходом:

Симулировать каждый бандл по отдельности, сортировать их по значению возврата и добавлять бандлы инкрементально.
Учёт обработанных транзакций:

Вести набор обработанных транзакций для исключения дублирования.
Избежание симуляции всех комбинаций (O(2^n)):

Симулировать каждый бандл отдельно и добавлять бандлы инкрементально.
Бандлы должны обрабатываться изолированно или совместно с уже выбранными.
Реализация жадного алгоритма (O(2n)):

Бандлы сортируются по значению возврата (O(n log n)).
Итерация по отсортированным бандлам выполняется линейно (O(n)).
Транзакции отслеживаются для предотвращения дублирования.
Пошаговое добавление бандлов:

Бандлы добавляются по одному, если их транзакции совместимы с уже обработанным набором.


Обязательно найти все функции, которые необходимо скорректировать в соответствии с задачами (включая те, которые не были явно упомянуты, но находятся в предоставленном коде и требуют изменений).
Так же, требуется пересмотреть calculate_refund и детект нарушений и в случае необходимости - пофиксить.
Большая часть перечисленного выполнена больше чем наполовину, так что понимающему человеку будет проще.

Репа на гитхаб: rylaix/MEVGuard-Open-Source-MEV-Blocker-Verification-Tool at tests (важно, ветка tests)