Нажмите ESC, чтобы закрыть

Ликвидационные боты DeFi: Охота на китов перед ректом

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

Когда крупный игрок («кит») берет огромный кредит под залог своей криптовалюты на кредитной платформе (Aave, Compound, Spark, Morpho) и рынок идет против него, наступает критический момент. Если позиция оказывается в шаге от принудительного закрытия, возникает уникальная неэффективность рынка.

В этой статье мы разберем, как устроена механика поиска таких позиций, как обнаружить «китов», находящихся в 1% от ликвидации, и как именно технически и стратегически извлечь из этого прибыль.

Анатомия DeFi-кредитования: Почему происходят ликвидации

Чтобы понять, где искать уязвимость, нужно досконально знать математику протоколов кредитования (Lending Protocols). В отличие от централизованных бирж (CEX), где движком ликвидаций управляет сама биржа, в DeFi этот процесс полностью отдан на аутсорс внешним участникам — ликвидаторам.

Протокол не может сам закрыть позицию, у него нет встроенного триггера. Вместо этого он предлагает экономический стимул (скидку на покупку залога, обычно 5–10%), чтобы любой желающий в сети пришел, погасил долг заемщика и забрал его залог себе.

Главная метрика: Health Factor (HF)

Безопасность любой кредитной позиции измеряется так называемым Фактором Здоровья (Health Factor). Формула в большинстве EVM-совместимых протоколов (например, Aave v3) выглядит следующим образом:

1
 

Где:

  • Collateral_i - стоимость залога i в базовой валюте (например, в ETH или USD).
  • LiquidationThreshold_i (Порог ликвидации) - максимальное соотношение долга к залогу, установленное протоколом для данного актива (например, 85%).
  • Debt_j - общая стоимость взятого займа j с учетом набежавших процентов.

Критическая точка: Если HF > 1, позиция в безопасности. Как только HF<1, позиция становится доступной для публичной ликвидации.

Что значит «В 1% от ликвидации»?

Это состояние позиции, при котором её HF находится в диапазоне от 1.0001 до 1.01. Любое минимальное движение цены залогового актива вниз (или заемного актива вверх) мгновенно превращает эту позицию в «корм» для ботов.

Стратегия «Заработок на дампе»: Два сценария

Многие думают, что заработок ликвидатора сводится только к получению бонуса от самого протокола. Но если речь идет о позициях на десятки миллионов долларов («китах»), открываются дополнительные, гораздо более прибыльные горизонты.

Сценарий А: Классическая ликвидация через Flash Loans

Вы находите позицию с HF<1. У вас нет собственных $10,000,000, чтобы закрыть чужой долг. Вы используете флэш-заем (Flash Loan):

  1. Берете $10 млн DAI на Uniswap/Aave в рамках одной транзакции без залога.
  2. Гасите долг кита в протоколе.
  3. Получаете его залог (например, ETH) со скидкой 5% (то есть забираете ETH на сумму $10.5 млн).
  4. Мгновенно продаете ETH на DEX, возвращаете $10 млн DAI + комиссию за флэш-заем.
  5. Чистая прибыль (~$490,000 за вычетом газа) остается у вас.

Сценарий Б: Направленный шорт и «Подталкивание» (Whale Hunting)

Это более агрессивная и глубокая стратегия, требующая понимания рыночной ликвидности:

  1. Вы обнаруживаете «кита», чей HF равен 1.005 (1% до краха). Его залог - $50,000 WBTC, а долг - USDT.
  2. Вы математически рассчитываете, при какой цене WBTC его HF станет равен 1. Допустим, цена должна упасть всего на $150.
  3. Вы открываете крупную короткую позицию (шорт) по WBTC на фьючерсном рынке или DEX с плечом.
  4. Если на рынке наблюдается локальный дефицит ликвидности (тонкий стакан), вы или другие участники рынка совершаете крупную продажу WBTC на спотовом рынке, вызывая секундный пролив цены (дамп).
  5. Цена касается ликвидационного триггера. Боты-ликвидаторы (или вы сами) начинают каскадно ликвидировать кита. При ликвидации огромный объем WBTC принудительно выбрасывается на рынок для покрытия долга, что вызывает еще более мощный дамп (каскадный обвал).
  6. Ваша шорт-позиция закрывается по тейк-профиту на самом дне этого искусственного или ускоренного импульса.

Инструменты для поиска «раненых китов»

Мониторить блокчейн вручную через Etherscan нереально. Профессионалы используют три уровня инструментов: готовые дашборды, инфраструктурные API и собственные парсеры нод.

1. Готовые аналитические платформы (Для быстрого старта)

  • DeFi Saver (раздел Loan Shifter / Simulation): Позволяет визуализировать крупные позиции в топ-протоколах.
  • Debank / Arkham Intelligence: Используются для создания списков отслеживания (Watchlists) конкретных адресов. Найдя крупного заемщика через топ холдеров токенов, вы можете «повесить» на него алерт.
  • Dune Analytics: Существуют публичные дашборды, агрегирующие Health Factor крупных заемщиков в реальном времени. (Ищите по тегам: Aave v3 liquidation thresholds, Compound positions monitoring).

2. Специализированные API (Для автоматизации)

Самый надежный способ получать отфильтрованные данные без необходимости поднимать собственную архивную ноду — использование официальных API самих подсистем.

Например, у Aave есть открытый GraphQL эндпоинт (The Graph), через который можно вытянуть состояние всех заемщиков.

ПараметрОписаниеЗачем отслеживать
collateralBalanceUSDОбщий объем залога в USDФильтрация «китов» (от $1 млн и выше)
totalBorrowsUSDОбщий долг в USDОценка ликвидности, необходимой для закрытия
currentLiquidationThresholdТекущий порог ликвидацииНужен для точного расчета точки невозврата

Практическое руководство: Пишем парсер критических позиций

Перейдем к технической реализации. Чтобы найти адрес, находящийся в 1% от ликвидации, нам нужно написать скрипт, который опрашивает смарт-контракт Pool или DataProvider соответствующего протокола.

Ниже представлен пример скрипта на Python с использованием библиотеки web3.py. Этот скрипт обращается к контракту Aave Protocol Data Provider на блокчейне Arbitrum (где комиссии ниже, а скорость выше, что критично для ликвидаций), получает данные пользователя и рассчитывает близость к ликвидации.

import os
from web3 import Web3
# Инициализируем подключение к быстрой RPC-ноде (например, Alchemy или QuickNode)
RPC_URL = "https://arb-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
w3 = Web3(Web3.HTTPProvider(RPC_URL))
if not w3.is_connected():
    raise Exception("Не удалось подключиться к блокчейну")
# Адрес контракта Aave v3 Pool на Arbitrum
AAVE_POOL_ADDRESS = "0x794a61358D6845594F94dc1DB02A252b5b4814aD"
# Минимальный ABI, содержащий только функцию getUserAccountData
AAVE_POOL_ABI = [
    {
        "inputs": [{"internalType": "address", "name": "user", "type": "address"}],
        "name": "getUserAccountData",
        "outputs": [
            {"internalType": "uint256", "name": "totalCollateralBase", "type": "uint256"},
            {"internalType": "uint256", "name": "totalDebtBase", "type": "uint256"},
            {"internalType": "uint256", "name": "availableBorrowsBase", "type": "uint256"},
            {"internalType": "uint256", "name": "currentLiquidationThreshold", "type": "uint256"},
            {"internalType": "uint256", "name": "ltv", "type": "uint256"},
            {"internalType": "uint256", "name": "healthFactor", "type": "uint256"}
        ],
        "stateMutability": "view",
        "type": "function"
    }
]
pool_contract = w3.eth.contract(address=AAVE_POOL_ADDRESS, abi=AAVE_POOL_ABI)
def check_whale_position(user_address):
    try:
        # Получаем данные аккаунта из смарт-контракта
        data = pool_contract.functions.getUserAccountData(w3.to_checksum_address(user_address)).call()
        
        # Данные возвращаются с точностью до 18 знаков (в базовой валюте Aave)
        collateral = data[0] / 1e8  # В зависимости от базовой валюты v3 (обычно USD с 8 знаками)
        debt = data[1] / 1e8
        hf = data[5] / 1e18 # Health Factor возвращается с 18 десятичными знаками
        
        # Фильтруем только крупных игроков (залог > $500,000)
        if collateral > 500000:
            print(f"Адрес: {user_address}")
            print(f"  Залог: ${collateral:,.2f} | Долг: ${debt:,.2f}")
            print(f"  Health Factor: {hf:.4f}")
            
            # Проверяем вхождение в зону 1% до ликвидации
            # Поскольку ликвидация триггерится при HF <= 1.0, зона риска — от 1.0000 до 1.0100
            if 1.0000 < hf <= 1.0100:
                print(f"⚠️ КРИТИЧЕСКИЙ СТАТУС: Кит в 1% от ликвидации! Возможен дамп залога.")
                # Здесь должен быть ваш триггер для алерта в Telegram или вызова функции ликвидационного бота
            print("-" * 50)
            
    except Exception as e:
        print(f"Ошибка проверки адреса {user_address}: {e}")
# Пример проверки конкретного адреса кита (замените на реальный адрес из вашего списка)
whale_target = "0x..." 
check_whale_position(whale_target)

Где брать адреса для перебора?

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

  • Парсинг исторических событий (Events): Бот один раз сканирует блокчейн с момента деплоя протокола и собирает все адреса, которые вызывали события Supply, Borrow, CollateralSwitch.
  • Подписка на живые логи: Скрипт слушает новые блоки через WebSockets (w3.eth.subscribe('logs', ...)), вылавливая новые адреса, взаимодействующие с пулом. Все уникальные адреса сохраняются в локальную базу данных (например, MariaDB/PostgreSQL).
  • Циклический мониторинг: Потоковый воркер (worker) непрерывно крутится по базе данных, запрашивая getUserAccountData для каждого адреса.

Анатомия «Охоты»: Как рассчитать точную точку триггера

Чтобы эффективно использовать информацию о «раненом ките», недостаточно просто знать его текущий Health Factor. Профессиональный серчер должен понимать динамику изменения цены. Нам нужно знать точную стоимость залогового актива, при которой позиция уйдет под нож.

Давайте формализуем расчет. Допустим, у нашего кита есть один залоговый актив (например, ETH) и один заемный актив со стабильной ценой (USDT). Порог ликвидации (Liquidation Threshold, сокращенно LT) для ETH в протоколе равен 85% (0.85).

Формула критической цены залога Price_crit выглядит так:

Formula for the critical price of collateral
 

Практический пример расчета

Представьте крупную позицию на рынке:

  • Залог Collateral_Amount: $10,000\ ETH
  • Текущая цена ETH: $3,400\ USD
  • Стоимость залога в фиате: $34,000,000\ USD
  • Текущий долг Debt_USD: $28,500,000\ USDT
  • Порог ликвидации LT: 85% (0.85)

Посчитаем текущий Фактор Здоровья позиции:

position-health-factor
 

Позиция находится всего в 1.4% от ликвидации. Теперь определим цену ETH, при которой позиция рухнет:

The ETH price at which the position will collapse
 

Как только цена ETH на оракуле протокола (обычно это Chainlink) коснется отметки $3,352.94, позиция станет ликвидируемой.

Малоизвестный инсайд: Смарт-контракты не знают о рыночной цене на Binance в реальную секунду. Они зависят от оракулов. Оракулы Chainlink обновляют цену на блокчейне либо по времени (например, каждые 20 минут), либо при отклонении цены вне сети (Deviation Threshold) на определенный процент — например, 0.5% или 1% для некоторых пар. Зная этот порог, опытные трейдеры могут предугадать точный момент «срабатывания» ликвидации на секунды раньше, чем транзакция оракула подтвердится в мемпуле.

Стратегия «Whale Hunting» на практике: Механика исполнения

Когда цель обнаружена и критическая цена рассчитана, у серчера есть два пути заработка: пассивный (подготовка к ликвидации) и активный (катализация дампа).

1. Подготовка ликвидности (Флэш-займы vs Собственный капитал)

Если вы планируете забрать ликвидационный бонус (в нашем примере 5% от $34 млн — это $1.7 млн брутто-прибыли), вам нужно достать $28.5 млн для закрытия долга.

Поскольку держать такие деньги на кошельке неэффективно, используется Flash Loan через пулы ликвидности Uniswap v3 или балансиры Aave. Вы берете $28.5 млн в долг внутри одной транзакции, вызываете функцию liquidationCall в контракте Aave, забираете ETH, тут же конвертируете часть ETH обратно в USDT через агрегатор ликвидности (1inch / Paraswap), чтобы вернуть флэш-заем с процентом (0.05%). Остаток ETH - ваша чистая прибыль.

2. Рыночный арбитраж и направленный шорт

Если объемы кита слишком велики для стандартного флэш-лоана или ликвидности в пулах не хватает для мгновенной конвертации залога без огромного проскальзывания (Slippage), в дело вступает стратегия фронтраннинга на деривативах:

  1. Шаг 1: Вы видите, что до критической точки 3,352.94 осталось всего 15-20 долларов движения цены.
  2. Шаг 2: На децентрализованных фьючерсных биржах (Hyperliquid, dYdX, Vertex) или CEX открывается агрессивный шорт с плечом.
  3. Шаг 3 (Катализатор): На спотовом рынке (где ликвидность в данный момент наиболее тонкая) происходит продажа актива. Часто это делают крупные маркетмейкеры или объединенные группы серчеров.
  4. Шаг 4 (Каскад): Как только цена падает до триггера, боты со всего мира начинают вызывать ликвидационные функции. Чтобы зафиксировать прибыль, эти боты рыночными ордерами начинают продавать ликвидированный залог (ETH) обратно в стейблкоины.
  5. Шаг 5 (Фиксация): Массированный вброс 10,000 ETH на продажу в течение одной-двух минут пробивает локальные стаканы, утягивая цену еще на 2-3% вниз. Ваша короткая позиция мгновенно закрывается об этот искусственный импульс.

Архитектура ликвидационного бота: Как обогнать конкурентов

Если вы решите написать бота, который сам будет выполнять транзакцию ликвидации, стандартный Web3-скрипт не справится. В этой нише идет жесткая война скоростей, известная как PGA (Priority Gas Auction) и MEV-бусты.

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

Стек технологий профессионального MEV-бота:

  • Язык программирования: Сбор данных и аналитика - Python/Go. Исполняющий смарт-контракт (который принимает флэш-заем и вызывает ликвидацию) - строго Solidity / Yul (максимальная оптимизация газа). В последнее время для бэкенда ботов активно используют Rust (библиотека alloy).
  • Прямое подключение к строителям блоков (Block Builders): Профессионалы не отправляют транзакции в общий доступ. Они используют приватные реле (Relays), такие как Flashbots (MEV-Share / MEV-Boost), BeaverBuild, Titan. Транзакция отправляется в виде «бандла» (Bundle) напрямую валидатору. Вы говорите валидатору: «Включи мою транзакцию строго после транзакции оракула, которая опустит цену ETH, и я отдам тебе 50% от своей прибыли от ликвидации в качестве чаевых (tip)».

Ниже представлена логическая схема взаимодействия компонентов такого бота:

[Blockchain Node / Websocket] 
       │ (Слушает новые блоки и мемпул)
       ▼
[Parser & DB] ────► [Health Factor Calculator] 
                         │ (Если HF <= 1)
                         ▼
                  [Flashbots / MEV Builder] ──► [Private Validator] ──► [Profit]

Архитектура исполняющего смарт-контракта (Solidity)

Чтобы ликвидация прошла успешно в рамках одной неделимой транзакции, логика взаимодействия с Flash Loan и кредитным протоколом должна быть упакована в кастомный смарт-контракт. Отправка отдельных транзакций с кошелька исключена — конкуренты перехватят залог в тот же миг.

Ниже представлен архитектурный пример смарт-контракта на Solidity ^0.8.20, оптимизированного для взаимодействия с Aave v3 через механизм Flash Loan.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IPool {
    function liquidationCall(
        address collateralAsset,
        address debtAsset,
        address user,
        uint256 debtToCover,
        bool receiveAToken
    ) external;
    function flashLoanSimple(
        address receiverAddress,
        address asset,
        uint256 amount,
        bytes calldata params,
        uint16 referralCode
    ) external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}
contract LiquidatorBot {
    address public immutable owner;
    IPool public immutable aavePool;
    modifier onlyOwner() {
        require(msg.sender == owner, "Not an owner");
        _;
    }
    constructor(address _pool) {
        owner = msg.sender;
        aavePool = IPool(_pool);
    }
    // Структура для передачи параметров внутрь коллбэка флэшлоана
    struct LiquidationParams {
        address collateralAsset;
        address debtAsset;
        address userToLiquidate;
        uint256 debtToCover;
    }
    // 1. Внешний триггер: вызывается вашим бэкендом (на Rust/Go/Python) при обнаружении цели
    function calmedDownTrigger(
        address _collateralAsset,
        address _debtAsset,
        address _userToLiquidate,
        uint256 _debtToCover
    ) external onlyOwner {
        bytes memory params = abi.encode(
            LiquidationParams({
                collateralAsset: _collateralAsset,
                debtAsset: _debtAsset,
                userToLiquidate: _userToLiquidate,
                debtToCover: _debtToCover
            })
        );
        // Запрашиваем флэшлоан у Aave под конкретный объем долга кита
        aavePool.flashLoanSimple(
            address(this),
            _debtAsset,
            _debtToCover,
            params,
            0
        );
    }
    // 2. Коллбэк от Aave: вызывается внутри той же транзакции ПОСЛЕ получения денег на баланс контракта
    function executeOperation(
        address asset,
        uint256 amount,
        uint256 premium,
        address initiator,
        bytes calldata params
    ) external returns (bool) {
        require(msg.sender == address(aavePool), "Invalid caller");
        
        LiquidationParams memory lParams = abi.decode(params, (LiquidationParams));
        // Разрешаем пулу забрать наши заемные средства для проведения ликвидации
        IERC20(lParams.debtAsset).approve(address(aavePool), lParams.debtToCover);
        // Вызываем саму ликвидацию. 
        // Последний параметр false означает, что мы хотим получить чистый залог, а не его aToken-дериватив
        aavePool.liquidationCall(
            lParams.collateralAsset,
            lParams.debtAsset,
            lParams.userToLiquidate,
            lParams.debtToCover,
            false
        );
        // На данном этапе на балансе контракта лежит ликвидированный залог (например, ETH)
        // Задача: Свапнуть залог на DEX (Uniswap/1inch) обратно в валюту долга (например, USDT)
        // Чтобы покрыть тело кредита (amount) + комиссию за флэшлоан (premium)
        
        uint256 totalOwed = amount + premium;
        
        // [Здесь размещается логика вызова swap() на Uniswap v3 / 1inch Router]
        // На выходе мы должны иметь сумму >= totalOwed на балансе в валюте debtAsset
        
        // Одобряем возврат флэшлоана
        IERC20(lParams.debtAsset).approve(address(aavePool), totalOwed);
        // Отправляем оставшуюся чистую прибыль владельцу контракта
        uint256 profit = IERC20(lParams.debtAsset).balanceOf(address(this));
        if (profit > 0) {
            IERC20(lParams.debtAsset).transfer(owner, profit);
        }
        return true;
    }
    // Функция для экстренного вывода любых токенов с контракта
    function withdrawToken(address _token) external onlyOwner {
        uint256 balance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(owner, balance);
    }
}

Малоизвестные тонкости и подводные камни (Альфа-информация)

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

1. Проблема «Мягких ликвидаций» (Close Factor)

Вы не можете ликвидировать всю позицию кита разом, если её объем исчисляется десятками миллионов. В большинстве современных протоколов установлен параметр Close Factor (обычно он равен 50%). Это означает, что за одну транзакцию вы можете погасить только половину долга пользователя.

Если вы нашли кита с долгом $20,000,000, ваш бот должен отправить транзакцию на покрытие максимум $10,000,000. Оставшаяся часть долга пересчитывается, Health\ Factor немного выравнивается, и если позиция все еще находится в зоне риска, её можно ликвидировать повторно в следующем блоке.

2. Системные сбои оракулов и «Фантомные» ликвидации

Крупные игроки часто защищают свои позиции с помощью автоматических децентрализованных систем (например, Gelato network или Chainlink Automation), которые подливают маржу, если HF падает.

Более того, в моменты экстремальной волатильности (рыночных крахов) сеть Ethereum или L2-сети (Arbitrum, Base) могут испытывать перегрузку (Gas Spike). Оракул может обновить цену с задержкой в 1-2 блока. Бот, ориентирующийся на спотовую цену деривативов вне сети (например, на Binance), может отправить транзакцию ликвидации, предполагая, что HF < 1, но на уровне смарт-контракта транзакция завершится ошибкой (REVERT), так как оракул внутри сети еще не обновил цену. Вы просто потеряете деньги на оплату неисполненного газа.

3. Защита от Front-running через приватные RPC

Когда ваш бот отправляет бандл через Flashbots, вы конкурируете с другими серчерами по принципу распределения прибыли. Если вы нашли ликвидацию на $10,000, а ваш конкурент настроил бота так, чтобы отдавать валидатору 99% от прибыли в качестве взятки (Gas Tip), он заберет ликвидацию, получив всего $100 чистыми, а ваша транзакция будет отклонена.

Стратегический хак: В сетях со сверхнизкими комиссиями и высокой скоростью (Base, Arbitrum, Solana) классические Flashbots-бандлы работают иначе или отсутствуют в привычном виде. Там побеждает тот, кто физически ближе находится к валидаторам (низкий сетевой пинг до RPC-ноды) и кто может генерировать транзакции пачками (spamming), используя кастомные gRPC-подключения.

Чек-лист: Как построить стратегию вокруг ликвидаций китов

Если вы хотите развернуть систему мониторинга или торговать каскады ликвидаций вручную/полуавтоматически, двигайтесь по следующему алгоритму:

  • Сбор пула целей: Напишите скрипт для сбора адресов заемщиков из крупных протоколов (Aave, Compound, Spark, Morpho, Radiant). Отфильтруйте адреса, у которых объем залога превышает $1,000,000.
  • Калькулятор триггеров: Напишите модуль, который берет текущие веса позиций выбранных китов и рассчитывает точную цену залога, при которой HF станет равен 1.0000.
  • Интеграция алертов: Привяжите критические точки к парсеру биржевых стаканов. Как только рыночная цена приближается к точке краха кита ближе чем на 1.5%, система должна выдавать высокоприоритетный сигнал.
  • Выбор вектора монетизации:
    • Для капитализированных команд: Активация MEV-бота, использование флэшлоанов, борьба за блок через приватные реле.
    • Для розничных трейдеров: Открытие направленного шорта на фьючерсных рынках с расчетом на каскадный пролив цены в момент, когда боты начнут принудительно распродавать залог кита.

Рынок ликвидаций в DeFi - это чистая математика и скорость выполнения. Тот, кто умеет читать структуру блокчейна и автоматизировать расчет критических точек, всегда будет иметь фундаментальное преимущество перед классическими техническими аналитиками.


FAQ

Ликвидационные боты в DeFi берут флэш-лоаны (вспышечные займы), занимая ровно тот объем капитала, который нужен для покрытия долга проблемного заемщика в рамках одной атомарной транзакции внутри блока. Это избавляет оператора ботика от необходимости замораживать собственный оборотный капитал. Как только смарт-контракт триггерит функцию flashLoanSimple на лендинговом пуле уровня Aave, полученные ликвидные активы тут же направляются на выполнение liquidationCall, что позволяет отжать базовое обеспечение (коллатерал) позиции по дисконтной цене. Затем бот мгновенно прогоняет это изъятое обеспечение через DEX-агрегаторы или AMM, чтобы свапнуть его обратно в актив долга, возвращает тело займа плюс комиссию (премиум) протокола, а оставшийся арбитражный спред кидает на безопасный кошелек оператора до того, как транзакция закроется.

Лаг оракулов создает рассинхрон между спотовыми ценами на внешках (off-chain) и состоянием цен на самом блокчейне (on-chain). Из-за этого боты залетают на неудачные экзекьюшн-бандлы и теряют деньги на газ из-за ревертов (REVERT opcodes), пытаясь ликвидировать позиции, чей ончейн-Health Factor еще не пробил критическую отметку 1.0000. Поскольку сети консенсуса и L2-роллапы имеют детерминированные задержки или зажимают апдейты цен до прохождения определенных порогов отклонения (deviation thresholds), высокочастотные прайс-фиды с CEX-ов часто триггерят симуляции ботов раньше времени. Профессиональные MEV-серчеры обходят эту уязвимость, делая бэкранинг (backrunning) транзакций прайс-фида прямо в мемпуле: они симулируют точное изменение стейта сразу после апдейта оракула и шлют пакеты через приватные RPC-реле, чтобы их альфа не улетала конкурирующим серчерам в рамках газовых войн (Priority Gas Auctions).

Close Factor - это параметр на уровне протокола, который жестко лимитирует максимальный процент недополученного долга заемщика, который можно погасить за одну транзакцию ликвидации. Обычно он не дает ликвидаторам закрыть более 50% от всей проблемной позиции за один подход. Этот структурный барьер мешает одиночному серчеру в один блок полностью сожрать жирные институциональные позиции, заставляя протокол пересчитывать оставшееся обеспечение и долг, чтобы постепенно восстановить хелс-метрики портфеля. Чтобы выжать всю ценность из многомиллионной ликвидации, автоматические поисковые движки вынуждены разворачивать стратегии итеративного исполнения стейта (iterative state execution): они непрерывно чекают оставшиеся обязательства (liabilities) и пушат следующие экзекьюшн-пейлоады пачкой в идущих подряд блоках до тех пор, пока целевой профиль риска не будет полностью зачищен.
Sying Yu

I am a blockchain developer specializing in building secure, scalable, and innovative decentralized solutions. My expertise covers smart contracts, payment systems, and integrating crypto with fiat to optimize financial workflows. I thrive on creating modern, efficient tools for the evolving digital economy....

Поделитесь своим мнением

Ваш e-mail не будет опубликован. Обязательные поля отмечены *