Ончейн ликвидациялар: Aave мен Compound механикасы және олардың айналасындағы бот бизнесі
Aave-дегі ликвидация — бұл тұрақты жария оферта: біреудің қарызын өтеп, оның кепілін 5–15% дисконтпен алып қаласың. Бұл оферта өзгермейтін контрактіге жазылған, ешқандай рұқсатты, KYC-ті, протоколмен қандай да бір қатынасты талап етпейді — жай ғана позиция шекарадан өткен блокта liquidationCall() шақыратын бірінші адрес болу керек. Бұл криптодағы ең таза жарыс: жүлде тиынына дейін белгілі, триггер (негізінен) болжамды, ал жалғыз сұрақ — сенің инфрақұрылымың басқалардан бұрын жетеді ме, жетпейді ме.
Бұл мақалада машинаны басынан аяғына дейін бөлшектейміз: позиция қашан ликвидацияланатынын дәл анықтайтын математика, Chainlink оракул механикасы ликвидацияларды реактивті емес, керісінше болжамды ететін себеп, бәсекеге қабілетті ликвидация ботының нақты не нәрседен тұратыны, және жарыс экономикасы неге сонша дәрежеде қысқарғаны — бонустың негізгі бөлігі енді блок билдерлеріне, ал одан сайын протоколдардың өзіне қайтарылады. Соңында мұны сырттай ұқсас, бірақ мүлдем басқа ойын болып табылатын perp-DEX ликвидацияларымен (GMX, Hyperliquid) салыстырамыз.
Механика: health factor, шектер, бонустар
LTV мен ликвидация шегінің айырмашылығы
Aave v3-тегі әрбір кепіл активінің екі бөлек тәуекел параметрі бар, және оларды шатастыру — қарыз алушылардың ең жиі жасайтын қателігі:
- LTV (loan-to-value) — активке қарсы ашылу кезінде қарызға алуға болатын максималды сома. Aave v3 mainnet-те WETH үшін бұл шамамен 80%.
- Ликвидация шегі (liquidation threshold) — позиция ликвидацияланатын болатын кепілдендіру деңгейі. WETH үшін — шамамен 83%.
Олардың арасындағы алшақтық — әдейі қалдырылған буфер: сен бірден ликвидацияланатын позицияны аша алмайсың. Бірақ бұл буфер жұқа — бағаның бірнеше пайыздық қолайсыз қозғалысы "максималды алынған қарызды" "кез келгеннің алуына болатын" позициядан бөліп тұрады.
Health factor (денсаулық коэффициенті) барлығын бір санға жинақтайды:
мұндағы — кепіл активінің саны, — оның оракул бағасы, — оның ликвидация шегі, ал — әрбір қарыз позициясының құны. болғанда, кез келген адам ликвидация жасай алады. Ешқандай кезеңдік жеңілдік, маржа-колл немесе хабарландыру жоқ. Шарт "жалқау" түрде бағаланады — біреу функцияны шақырғанша ешнәрсе болмайды.

Close factor және ликвидация бонусы
Тағы екі параметр ликвидатор не алатынын анықтайды:
- Close factor — бір ликвидация арқылы өтелуі мүмкін қарыздың үлесі. Aave v3-тің әдепкі мәні — 50%. Aave v3.3 нұсқасынан бастап, болғанда (
CLOSE_FACTOR_HF_THRESHOLD) немесе позицияның кепілі не қарызы шаң-тозаң (dust) шегінен (~$2,000) төмен болғанда close factor 100%-ға дейін секіреді — кішкентай позициялар үшін екі транзакция жасаудың мәні жоқ, ал қалған "шаң" протоколда bad debt есептеу мәселесін тудырады. - Ликвидация бонусы (кімнің жағында тұрғаныңа байланысты "ликвидация айыппұлы" деп те аталады) — ликвидатор кепілді сатып алатын дисконт. Aave-де бұл — активке байланысты, басқару органы белгілейтін тұрақты спред: WETH пен ірі стейблкоиндер үшін шамамен 5%, ұзын құйрықты (long-tail) құбылмалы кепілдер үшін 10–15%-ға дейін.
Compound v2 дәл сол логикамен, бірақ басқа константалармен жұмыс істейді: liquidateBorrow() 50% close factor және 8% ликвидация ынталандыруымен (тәркіленген cToken кепілі өтелген қарыздың 1,08 есесіне тең). Compound v3 (Comet) ағынды екі қадамға қайта құрды: absorb() су астындағы позицияны протоколдың өз балансына тартады (қарыз резервтерге социализацияланады, кепіл протокол меншігіне айналады), ал buyCollateral() кез келген адамға сол кепілді протоколдан basic активте төленетін, басқару органы белгілеген дисконтпен сатып алуға мүмкіндік береді. Іс жүзінде ликвидатор екеуін де бір транзакцияда шақырады — absorb-тың өзі ештеңе төлемейді, пайда толығымен дисконтталған buyCollateral-да жатыр.
Нақты позиция, қадам сайын ликвидацияланады
Aave v3-тің WETH үшін типтік параметрлерін алайық: LTV 80%, ликвидация шегі 83%, ликвидация бонусы 5%.
Бастапқы жағдай. Сен $3,000-нан 10 WETH депозит саласың ($30,000 кепіл) және 20,000 USDC қарызға аласың.
Ликвидация бағасы. Кепіл құны 20{,}000 / 0.83 = \24{,}096HF = 1 болады, яғни ETH **\2,410**-да — 19,7% құлдырау. Қауіпсіз болып көрінеді. Бірақ олай емес, өйткені ETH үшін 20% құлдырау — таңғы ас сияқты қарапайым нәрсе.
Құлдырау. Оракулда ETH $2,350 көрсетеді. Кепіл енді $23,500:
болғандықтан, 50% close factor қолданылады. Ликвидатор сенің 10,000 USDC қарызыңды өтеп, оракул бағасы бойынша 10{,}000 \times 1.05 = \10{,}500$ тұратын кепілді тәркілейді:
Ликвидатордың P&L көрсеткіші. Ол $10,000 жұмсап, $10,500 тұратын ETH алды: бір функцияны шақырғаны үшін $500 жалпы пайда, газ шығынын, ETH-ті сатудағы своп шығындарын және — бұл маңызды — жарыста жеңу үшін не ставка жасауы керек болғанын шегергенге дейін (бұл туралы төменде толығырақ).
Сенің P&L көрсеткіші. Қарыз $10,000-ға дейін, кепіл 5.532 WETH-ке ($13,000) дейін төмендейді. Жаңа health factor:
Екі жайсыз фактіні байқа. Біріншіден, сен мәжбүрлі делевереджтеу привилегиясы үшін $500 төледің — бонус толығымен сенің капиталыңнан алынады. Екіншіден, жаңа HF 1,079 — судың бетінде ғана. ETH тағы 7%-ға түссе, қалған жартысы қайта ликвидацияланады. Тұрақты спредпен ликвидация төлемқабілеттілікті қалпына келтіреді, бірақ қауіпсіздікті емес. Осы "жарым-жартылай ликвидация, әлі де әлсіз, қайта ликвидацияланады" үлгісі — сауда сигналы ретінде ликвидация каскадтары туралы қатарлас мақалада қарастыратын каскадты динамиканың микроқұрылымы.
Триггер: ликвидациялар болжамды, реактивті емес
Мына жерде бұл бизнесті түсінетіндер мен түсінбейтіндер бөлінеді: Aave мен Compound-та позициялар нарық бағасы қозғалғанда емес, оракул жаңарғанда ликвидацияланатын болады.
Екі протокол да бағаларды Chainlink data feeds арқылы оқиды. Ethereum mainnet-тегі Chainlink feed екі шарттың кез келгені орындалғанда жаңа ончейн бағаны жібереді:
- Ауытқу шегі (deviation threshold) — офчейн агрегатталған баға соңғы ончейн мәннен белгілі бір пайыздан асып ауытқыса: mainnet-тегі ETH/USD үшін 0,5%, көптеген кіші feed-тер үшін 1–2%.
- Heartbeat (жүрек соғысы) — ауытқуға қарамастан жаңарту жіберілетін максималды интервал (ETH/USD үшін 3,600 секунд).
Мұның терең салдары бар. Жаңартулардың арасында ончейн баға құрылымдық түрде ескірген. Егер Binance-тегі ETH 0,6%-ға түссе, ал ончейн feed әлі ескі бағаны көрсетіп тұрса, әрбір сауатты ойыншы оракул жаңарту транзакциясы жақындап келе жатқанын біледі, жаңа баға (шамамен) қандай болатынын біледі және жаңарту жүзеге асқанға дейін дәл қай позициялар шекарасынан өтетінін есептей алады.

Сондықтан басым стратегия — "health factor-ды бақылап, реакция жасау" емес, оракул жаңартуын backrun жасау: liquidationCall()-ың Chainlink transmit транзакциясынан бірден кейін, сол блокта орындалатын bundle құру. Оракул жаңартуы — старт дабылы, әрі бәрі стартердің тапаншаны көтергенін көріп тұр. Bundle механикасы — блок билдерлеріне жабық жіберу, атомарлы реттеу кепілдіктері — бұл mempool-дағы сэндвич шабуылдары мен фронтраннинг туралы мақалада қарастырған механизммен бірдей; ликвидациялар — оны қолданудың жай ғана ең заңды түрі.
Тәжірибеде екі нюанс маңызды:
- Transmit-ты mempool-да көрудің қажеті жоқ. Офчейн агрегация байқалатын болғандықтан (сен CEX feed-терінен сол баға есептеуін өзің жүргізе аласың), ауытқу шектен асқан бойда жаңарту сөзсіз болатынын алдын ала болжай аласың және баға жоғары да, төмен де қозғалатын жол үшін bundle-дерді алдын ала дайындай аласың.
- Heartbeat жаңартулары — жоспарланған өтімділік оқиғалары. Feed сағат бойы 0,5%-ға ауытқымаса да, жаңарту бәрібір келеді — ал баға маңында шоғырланған позициялар қабырғасына қарсы 0,4%-ға жылжыған болса, сол "зиянсыз" heartbeat триггерге айналады. Бәсекеге қабілетті операторлар әр feed бойынша соңғы жаңартудан өткен уақытты бірінші кезектегі сигнал ретінде бақылайды.
Осы болжамдылық протоколдардың құнды қайтарып алуға көшуінің де себебі. 2025 жылдың наурызында Aave Chainlink SVR-ды (Smart Value Recapture) интеграциялады: қатысушы feed-тер үшін оракул жаңартулары Flashbots MEV-Share арқылы бағытталады, оларды backrun жасау құқығы аукционда сатылады, ал жеңімпаз ставкасы толығымен searcher мен билдерлерге кетудің орнына Aave DAO (65%) мен Chainlink (35%) арасында бөлінеді. Бірнеше айдың ішінде жүйе $32 млн-нан астам ликвидацияны өңдеп, $1,1 млн-нан астам құнды қайтарып алды, тиесілі ликвидация MEV-нің 80%-нан астамын алды. Мұны нарықтық баға ретінде оқы: ашық жарыс сонша тиімді болды, протокол финиш сызығын аукционда сата алды.
Ботты құру: төрт ішкі жүйе
Бәсекеге қабілетті ликвидация боты — жай скрипт емес; ол шағын сауда фирмасына тең инфрақұрылым. Төрт ішкі жүйе, әрқайсысы жеке алғанда қарапайым, бірақ жиынтығында латентілікке аса сезімтал.

1. Позицияларды индекстеу
Саған нақты уақыт режимінде жүргізілетін толық қарыз алушылар жиынтығы мен олардың баланстары керек. Бастапқы толтыру — протокол іске қосылғаннан бергі әрбір Supply, Borrow, Repay, Withdraw, LiquidationCall оқиғасын кері түрде жинау, оларды әр пайдаланушының ағымдағы баланстарына жинақтау, содан кейін жаңа лог жазбаларына websocket жазылымы арқылы тірі күйде ұстау. Aave-тің getUserAccountData(address) функциясы health factor-ды тікелей қайтарады, бірақ оны 100 мыңнан астам қарыз алушы үшін әр блокта, әр пайдаланушыға шақыру — үмітсіз әрекет; байсалды операторлар протоколдың есеп жүргізу логикасын жергілікті түрде қайталайды (пайыздық ставка индексінің математикасын қоса, өйткені қарыз әр секунд сайын өседі), ал RPC шақыруларын тек тексеру үшін сақтап қояды.
2. Оракул симуляциясы бар health factor мониторингі
Негізгі цикл — "ағымдағы оракул бағасы бойынша HF есепте" емес. Ол — "оракул дәл қазір жариялайтын баға бойынша HF есепте":
def liquidatable_at(positions, feed, candidate_price):
"""Positions that cross HF < 1 if `feed` updates to candidate_price."""
out = []
for pos in positions.borrowers_exposed_to(feed):
hf = pos.health_factor(price_override={feed: candidate_price})
if hf < 1.0:
close_factor = 1.0 if hf < 0.95 else 0.5
repay = pos.debt_value * close_factor
seized = repay * (1 + pos.liq_bonus)
gross = seized - repay # the prize, pre-costs
out.append((pos, repay, gross))
return sorted(out, key=lambda x: -x[2])
deviation = abs(offchain_px - onchain_px) / onchain_px
if deviation > FEED_DEVIATION_THRESHOLD * 0.8: # update imminent
targets = liquidatable_at(positions, feed, offchain_px)
for pos, repay, gross in targets:
prepare_bundle(pos, repay, max_bid=gross - costs(pos))
Позицияларды -ге жақындығы бойынша сұрыптау (әрбір позицияны триггерлейтін бағамен кілттелген priority queue) "ыстық" жиынтықты шағын ұстап тұрады. 0.8 коэффициенті — бүкіл ойынның мәні: сен bundle-дерді жаңарту дерек болғанға дейін, кейін емес, дайындап, жіберіп қою керексің.
3. Flash loan арқылы қаржыландырылатын орындау
Ликвидация жасау үшін капитал қажет емес — саған шамамен 200 миллисекунд блок уақыты керек. Канондық орындау контрактісі атомарлы түрде мыналарды жасайды:
- Қарыз активін flash-borrow жасау (Balancer 0 bps-пен, немесе Aave-дың өзі ~5 bps-пен — flash loan арқылы атомарлы арбитраж мақаласында құрастырған сол примитив).
liquidationCall(collateral, debtAsset, user, repayAmount, false)шақыру —falseмәні aToken-нің орнына негізгі кепілді алуды білдіреді.- Тәркіленген кепілді ең жақсы баға ұсынатын алаңда (Uniswap v3 / v4, 1inch маршруты немесе жабық fill) қарыз активіне ауыстыру.
- Flash loan-ды өтеу; қалғаны — пайда, ол
require(profit >= minProfit)арқылы тексеріледі, сондықтан ескірген симуляция залалмен орындалудың орнына revert болады.
Своп кезеңі — сылбыр боттар "өлетін" жер: $10,500 тұратын ұзын құйрықты токенді тәркілеу оның DEX өтімділігін жеп қоюды білдіреді, ал шығудағы бағаға әсер ету ликвидация бонусынан асып кетуі мүмкін. Бәсекеге қабілетті операторлар толық айналымды — шығу свопын қоса — симуляциялайды және таза нәтиже теріс болатын ликвидацияларды өткізіп жібереді, немесе кепілді нарықта лақтырудың орнына ұстап тұрып, оны perp-те хеджирлейді.
4. Bundle жіберу
Соңғы транзакция жария mempool-ға мүлдем жақындамайды. Ол блок билдерлеріне (немесе қолданылатын жерде SVR/OEV аукционына) bundle ретінде жіберіледі: "менің ликвидациямды осы оракул transmit-тен бірден кейін орналастыр; міне менің tip-ім." Tip — сол симуляцияны жасаған әрбір басқа ботқа қарсы "жеңілсең — ештеңе төлемейсің" типті аукциондағы сенің ставкаң. Осыдан экономиканың жайсыз жағына көшейік.
Бәсеке: бонус нақты қайда кетеді
Академиялық негіз — Qin, Zhou, Gamito, Jovanovic және Gervais, "An Empirical Study of DeFi Liquidations: Incentives, Risks, and Instabilities" (2021), олар 2019 жылдың сәуірінен 2021 жылдың сәуіріне дейін Aave, Compound, MakerDAO және dYdX бойынша бизнесті өлшеді: жалпы $807 млн-ды құраған 28,138 ликвидация, ликвидаторлардың жиынтық пайдасы $63,6 млн. Мақала сонымен қатар тұрақты спредпен ликвидацияның құрылымдық тиімсіздігін құжаттады — дисконт аукцион алатын мөлшерге қарағанда қарыз алушыны жиі шамадан тыс жазалайтын дөрекі құрал — және ликвидаторлардың қарапайым стратегиялармен байқарлық ақшаны үстел үстінде қалдырғанын көрсетті.
Ол дәуірдің пайдалары енді қайталанбайды, үш бір-бірімен қосылатын себепке байланысты:
Газ аукционы билдер аукционына айналды. 2019–2020 жылдары ликвидаторлар ашық mempool-да приоритеттік газ аукциондарында бәсекелесті; жеңімпаз газды артық төледі, ұтылғандар revert болды, ал бонустың айтарлықтай бөлігі ликвидаторда қалды. MEV-Boost-тан кейін бәсеке жабық билдер аукциондарында өтеді. N бот бірдей детерминистикалық мүмкіндікті бірдей пайда цифрына дейін симуляциялағанда, ставкалар толық жүлдеге қарай жинақталады: жеңіске жеткен bundle әдетте жалпы пайданың 90%-нан астамын билдерге/валидаторға tip ретінде береді. Ликвидатордың артықшылығы кімнің шығу бағасы шамалы жақсырақ, шығыны шамалы төменірек немесе басқалар байқамаған мүмкіндіктерге ие болғанмен ғана шектеледі.
Оракул backrun-дары басым, және олар қоршалып жатыр. Ақша нарығындағы ликвидациялардың дерлік барлығы оракул жаңартуларымен триггерленетіндіктен, пайдалы стратегия кеңістігі бір нүктеге дейін тарылды: transmit-тен кейінгі слотты жеңіп алу. SVR тәрізді механизмдер мұны формализациялайды — протокол сол слотты аукционда сатады және түсімнің көп бөлігін өзінде қалдырады. Searcher-дің үлесі "бонус минус газдан" "аукцион жеңімпазының маржасына" дейін қысқарады, ал бәсекелес ставкалар оны нөлге қарай итермелейді.
Не қалды — ұзын құйрық. 2026 жылы жаңа қатысушы үшін нақты ништер: билдер нарықтары әлі жетілмеген чейндер мен L2-лер; бонус параметрлері дұрыс бағаланбаған, бәсекелес боттары аз ұзын құйрықты несиелік форктар; экзотикалық кепілі бар, шығу свопының симуляциясы шынымен қиын позициялар (артықшылық жақсы орындаудан келеді, латентіліктен емес); және стресс оқиғалары — газ секірген, RPC ақаулары шекаралық операторларды сыртқа шығарғанда — MakerDAO-ның Қара бейсенбісі (2020 жылдың наурызы), онда нөлдік ставкалы аукциондар ликвидаторларға $8,3 млн-дық кепілді дерлік тегін алуға мүмкіндік берді, себебі басқа ешкімнің инфрақұрылымы жұмыс істемеді, — бұл жарыс жүргізу ең қиын кезде дәл сол уақытта ең жақсы төлейтінінің канондық мысалы болып қалады.
Адал үміттерді бағалау: бұл қазір нақты тұрақты шығындары бар (түйіндер, билдерлермен байланыс, ондаған деплойды бақылау) бизнес, ол мықтап дисконтталған жүлде қорына бәсекелеседі. Бұл EVM ішкі жұмысы, оракулдар мен MEV инфрақұрылымы туралы кез келген курстан гөрі көбірек білуге болатын жақсы жол. Бірақ бұл — күн көрудің қиын жолы.
Perp-DEX ликвидациялары: сол сөз, басқа ойын
Perpetual DEX-тер де "ликвидациялайды", тіпті бас цифрлар үлкенірек — бірақ механизм, демек мүмкіндіктің өзі де, құрылымдық тұрғыдан басқа.
GMX (v2): позициялар оракул бағалары бойынша (Chainlink low-latency Data Streams) өтімділік пулымен саудаласады. Ликвидация кепіл минус залал және комиссиялар minimum талаптардан төмен түскенде іске қосылады, оны keeper-лер орындайды — ашық жарыс емес, оракул қол қойған бағалармен жұмыс істейтін тағайындалған инфрақұрылым. Бірінші шақырғанға 5% бонус төлейтін жария функция жоқ; қалған кепіл протокол ережелері бойынша пулға ағады. Searcher тұрғысынан жеңетін ештеңе жоқ.
Hyperliquid: ликвидациялар L1-дің өз matching engine-і ішінде жұмыс істейді. Аккаунт капиталы minimum маржадан төмен түскенде (CEX feed-тері мен ордер кітабынан аралас mark price бойынша бағаланады, дәл жоғарыда сипатталған оракул ойындарына қарсы тұру үшін), engine ликвидация нарықтық ордерлерін ордер кітабына жібереді — ірі позициялар әсерді шектеу үшін бөлшектелген түрде. Егер капитал minimum маржаның үштен екісінен төмен түсе берсе, позицияны HLP ішіндегі стратегия болып табылатын backstop liquidator vault mark price бойынша өз мойнына алады, HLP — протоколдың қауымдастыққа тиесілі маркет-мейкинг vault-ы, ал соңғы қабат — auto-deleveraging. Ликвидация P&L-і HLP депозиторларына жинақталады — "ликвидатор пайдасы" әр оқиға үшін жарысудың орнына кез келген адам қосыла алатын vault-қа социализацияланады.
Трейдер үшін салдары: ақша нарықтарында ойын — ликвидатор болу — тұрақты спред үшін инфрақұрылымдық жарыс. Perp DEX-терде ликвидатор рөлі жабық, сондықтан ойын ликвидациялар айналасында сауда жасауға ауысады: ликвидация бағаларын ашық позициялардан есептеуге болады, мәжбүрлі ағын көрінетін ордер кітабына соғады, ал шоғырланған ликвидация деңгейлері бағаның қозғалысы үшін магнит те, отын да болады. Бұл — CEX ликвидация каскадтарын сауда объектісіне айналдыратын сол логика, оны funding rate-тер левериджіңді өлтіреді (левередж құны позицияларды құздан итеретін нәрсе) және шиткоин pump-and-dump механикасы (ликвидация кластерлеріне жасалған инженерленген итерулер) мақалаларында қозғадық. Каскадтарды сигнал ретінде толық қарастыру — олардың қалыптасуын анықтау, отынын өлшеу, артық қозғалысты сауда объектісіне айналдыру — осы сериядағы келесі мақаланың тақырыбы.
Не есте қалдыру керек
Ақша нарығындағы ликвидация — криптода барлығы оқылатын сирек бұрыш: триггер шарты — формула, жүлде — басқару органы белгілеген константа, старт дабылы — сен алдын ала көре алатын оракул транзакциясы. Осы оқылымдылық 2019–2021 жылдары шынымен ашық бизнес құрды, ал одан кейін — дәл барлығы оқылатын болғандықтан — бәсеке артықшылықты инфрақұрылым сапасына дейін түсіріп, қалғанын протоколдарға аукционмен қайтарды. Механика әлі де маңызды білім болып қалады: егер сен ончейн қарызға алсаң, бұл математика — сенің тәуекел моделің; егер мәжбүрлі ағын айналасында сауда жасасаң, оракул кадансы мен close factor-лар саған қашан және қанша екенін айтады; ал ботты бәрібір құрастыратын болсаң, кем дегенде ақша нақты қайда кететінін біле отырып құрастыр.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.