Перейти к основному содержимому
БлокчейнMar 28, 2026

Deep EVM #13: Что такое MEV — извлекаемая ценность, серчеры и билдеры

OS
Open Soft Team

Engineering Team

Определение MEV

MEV (Maximal Extractable Value) — максимальная извлекаемая ценность — это прибыль, которую можно извлечь из производства блока сверх стандартной награды и комиссий, путём включения, исключения или переупорядочивания транзакций внутри блока.

До The Merge термин расшифровывался как Miner Extractable Value. После перехода на Proof-of-Stake майнеров заменили валидаторы, но суть осталась: тот, кто определяет порядок транзакций в блоке, может извлечь из этого прибыль.

Типы MEV

Арбитраж DEX

Самый чистый вид MEV. Если цена токена на Uniswap V2 отличается от цены на SushiSwap, серчер может купить на дешёвой площадке и продать на дорогой в одной атомарной транзакции:

Транзакция:
1. Flash-заём 100 WETH на Aave
2. Своп 100 WETH → 150,000 USDC на Uniswap (цена 1500)
3. Своп 150,000 USDC → 101.5 WETH на SushiSwap (цена 1478)
4. Возврат 100 WETH + комиссия на Aave
5. Прибыль: ~1.4 WETH

Прибыль гарантирована атомарностью — если любой шаг неуспешен, вся транзакция ревертится.

Ликвидации

DeFi-протоколы кредитования (Aave, Compound) позволяют ликвидировать позиции, когда залог падает ниже порога. Ликвидатор получает бонус 5-10% от ликвидированной суммы:

Пользователь A: залог 10 ETH, долг 12,000 DAI
Цена ETH падает: 10 ETH = 11,500 DAI < долг
Ликвидатор: погашает 6,000 DAI, получает 5.5 ETH (стоимостью 6,325 DAI)
Прибыль: 325 DAI

Сэндвич-атаки

Серчер видит ожидающую транзакцию большого свапа в мемпуле и размещает две транзакции вокруг неё:

  1. Front-run: покупка токена перед жертвой (поднимает цену)
  2. Жертва: выполняет своп по завышенной цене
  3. Back-run: продажа токена после жертвы (фиксирует прибыль)

Это наиболее спорный вид MEV, поскольку напрямую вредит пользователям.

JIT-ликвидность

Just-In-Time ликвидность — серчер добавляет концентрированную ликвидность на Uniswap V3 непосредственно перед крупным свапом и убирает её сразу после. Серчер собирает комиссии от свапа без долгосрочного risk exposure.

Экосистема MEV после The Merge

PBS — Proposer-Builder Separation

После The Merge экосистема MEV перешла на модель разделения ролей:

  • Серчеры (Searchers) — находят MEV-возможности и создают бандлы транзакций
  • Билдеры (Builders) — собирают бандлы от серчеров в полные блоки
  • Релееры (Relayers) — передают блоки от билдеров к валидаторам (MEV-Boost)
  • Валидаторы (Proposers) — выбирают наиболее прибыльный блок для предложения

Поток данных

Серчер → Бандл → Билдер → Блок → Релеер → Валидатор
                                              ↓
                                          Ethereum

Flashbots

Flashbots — ключевая организация в MEV-экосистеме. Они создали:

  1. MEV-Boost — middleware для валидаторов, подключающий их к рынку блоков
  2. Flashbots Protect — RPC для пользователей, защищающий от сэндвич-атак
  3. MEV-Share — протокол, перераспределяющий часть MEV обратно пользователям

Экономика серчера

Типичная экономика MEV-серчера:

Доход от арбитража:        $X
- Газ транзакции:          -$G
- Приоритетная комиссия:   -$P (взятка валидатору/билдеру)
- Инфраструктура:          -$I (ноды, сервера, данные)
= Чистая прибыль:          $X - $G - $P - $I

Конкуренция в MEV-экосистеме настолько жёсткая, что серчеры часто отдают 90-99% прибыли в виде приоритетных комиссий. Выигрывает тот, кто:

  1. Находит возможности быстрее — задержка в миллисекунды решает
  2. Исполняет с меньшим газом — оптимизация Huff-контрактов
  3. Моделирует точнее — предсказание реального profit после MEV-конкуренции

Инструменты серчера

Мемпул-мониторинг

Серчеры подключаются к P2P-сети Ethereum для получения pending-транзакций:

use ethers::providers::{Provider, Ws, Middleware};

async fn monitor_mempool() {
    let provider = Provider::<Ws>::connect("ws://localhost:8546").await.unwrap();
    let mut stream = provider.subscribe_pending_txs().await.unwrap();
    
    while let Some(tx_hash) = stream.next().await {
        let tx = provider.get_transaction(tx_hash).await.unwrap();
        if let Some(tx) = tx {
            // Анализ транзакции на MEV-возможности
            analyze_transaction(&tx).await;
        }
    }
}

Форк стейта

Для симуляции MEV-транзакций серчеры форкают текущее состояние блокчейна:

use revm::{EVM, db::CacheDB, primitives::*};

fn simulate_arbitrage(state: &CacheDB, route: &ArbitrageRoute) -> Result<U256> {
    let mut evm = EVM::new();
    evm.database(state.clone());
    
    // Настройка транзакции
    evm.env.tx.caller = searcher_address;
    evm.env.tx.transact_to = TransactTo::Call(contract_address);
    evm.env.tx.data = encode_swap_calldata(route);
    evm.env.tx.gas_limit = 300_000;
    
    let result = evm.transact()?;
    Ok(extract_profit(&result))
}

Бандлинг через Flashbots

use ethers_flashbots::FlashbotsMiddleware;

async fn submit_bundle(bundle: Vec<Transaction>) {
    let flashbots = FlashbotsMiddleware::new(
        provider,
        "https://relay.flashbots.net",
        signer,
    );
    
    let pending = flashbots
        .inner()
        .send_bundle(&bundle)
        .target_block(next_block)
        .send()
        .await?;
}

Этика MEV

MEV — спорная тема:

  • Арбитраж — полезен: выравнивает цены между площадками
  • Ликвидации — необходимы: поддерживают платёжеспособность протоколов
  • Сэндвич-атаки — вредны: напрямую извлекают ценность у пользователей
  • JIT-ликвидность — нейтральны: улучшают исполнение свапов, но отнимают комиссии у LP

Flashbots и другие организации работают над «справедливым» MEV — протоколами, минимизирующими вред пользователям при сохранении полезных видов MEV.

Итоги

MEV — фундаментальное свойство блокчейнов с произвольным порядком транзакций. Экосистема PBS разделила роли на серчеров, билдеров и релееров. Конкуренция жёсткая — выигрывает тот, кто быстрее, дешевле и точнее. В следующей статье мы погрузимся в алгоритмическую сторону: как находить арбитражные циклы с помощью DFS на графе пулов.