Tekan ESC untuk menutup

Matematika JIT Liquidity: Cara Bot MEV Hitung Profit Uniswap

Ini adalah artikel kedua dari seri kami "Predator di Pool: Seni dan Matematika Likuiditas JIT." Di sini, kita beralih dari teori "pencurian" ke perhitungan dingin: bagaimana algoritma dalam 200 milidetik memutuskan apakah layak untuk masuk.

Jika artikel pertama membahas "apa itu," artikel ini membahas "berapa biayanya." Agar serangan JIT tidak berubah menjadi amal bagi miner/validator, bot harus menyelesaikan persamaan dengan lima variabel lebih cepat daripada blok ditambang.

1. Likuiditas (L): Variabel Utama

Di Uniswap v3, likuiditas bukan hanya jumlah token, tetapi faktor L yang menentukan seberapa banyak aset bergerak saat harga berubah. Formula swap (invarian):

formule-jt
 

Bagi bot JIT, sangat penting untuk menghitung berapa bagian dari total L di rentang harga tertentu (tick) yang harus ditempatinya.

Rumus bagian fee (Fshare):

Fshare = Ljit / Lpool + Ljit

Dimana:

  • Ljit — likuiditas yang disediakan oleh bot.
  • Lpool — likuiditas LP pasif yang sudah ada di tick target.

Aturan praktis: Untuk mengambil 95% dari fee, likuiditas bot harus 19 kali likuiditas pool saat ini di rentang tersebut.

 

2. Menghitung Keuntungan Swap (Gross Profit)

Bot melihat transaksi pengguna senilai $S$ di mempool. Mengetahui tingkat fee pool ($\phi$, misalnya 0,05% atau 0,3%), ia menghitung total fee transaksi:

formule-jt-2
 

Perkiraan keuntungan kotor bot (Pgross):

formule-jt-3
 

 

3. Memperhitungkan "Pajak Gas" (Biaya Operasional)

Berbeda dengan LP pasif yang membayar gas sekali untuk beberapa bulan, bot JIT membayar gas dua kali dalam satu blok (atau satu transaksi mahal dengan banyak panggilan).

Biaya gas (Cgas):

  • mint(): ~150k–200k gas.
  • decreaseLiquidity() + collect(): ~120k–180k gas.
  • Plus biaya prioritas untuk Flashbots agar dijamin masuk blok.

Di jaringan Ethereum Mainnet dengan harga gas 30 gwei, total biaya bisa $50–$150. Di L2 (Arbitrum/Polygon), biayanya sangat rendah ($0,10–$0,50), tapi kompetisi untuk micro-swap lebih tinggi.

 

4. Menghitung Titik Impas (Break-even Point)

Serangan hanya masuk akal jika:

formule-jt-4
 

Dimana Cslippage adalah kerugian saat menarik likuiditas (impermanent loss selama satu swap), dan Copportunity adalah biaya modal (misalnya bunga dari Flash Loan).

Fakta yang jarang diketahui: Bot berpengalaman memperhitungkan "Shadow Slippage." Saat bot menambahkan likuiditas besar, harga menjadi lebih "kaku." Jika swap pengguna besar, bot bisa memasukkan likuiditas lebih sedikit agar harga bergerak lebih, dengan rencana arbitrase di blok berikutnya. Tapi untuk JIT murni — lebih banyak likuiditas lebih baik.

 

5. Contoh Perhitungan Praktis (Mainnet)

  • Pool: ETH/USDC (0,05%)
  • Swap pengguna: $500,000.
  • Lpool saat ini di tick: $2,000,000.
  • Bot menambahkan Ljit: $18,000,000.
  • Total fee: $500,000 x 0.0005 = $250.
  • Porsi bot: 18M / 18M + 2M = 90%.
  • Pendapatan bot: $250 x 0.9 = $225.
  • Biaya gas: $120 (kondisi rata-rata).
  • Laba bersih: $225 - $120 = $105 per blok.

Terlihat sedikit? Bot top menjalankan 500–1000 serangan seperti ini per hari. Itu $50,000–$100,000 keuntungan bersih per hari dengan hampir tanpa risiko pasar.

 

6. Nuansa Teknis: Memilih Lebar Tick

Bot tidak pernah memilih rentang lebar. Semakin sempit rentang (tick), semakin tinggi konsentrasi modal dan semakin tinggi $L$ untuk jumlah token yang sama.

Standar JIT: tickLower dan tickUpper dengan selisih 1 langkah minimum (misal 10 poin untuk pool 0,05%).

Perhitungan likuiditas dari jumlah token (TypeScript/Ethers):

import { LiquidityAmounts } from '@uniswap/v3-sdk';
import { JSBI } from '@uniswap/sdk-core';
function calculateJitLiquidity(amount0, amount1, currentPrice, tickLower, tickUpper) {
    const sqrtRatioX96 = encodePriceSqrt(currentPrice);
    const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);
    const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);
    return LiquidityAmounts.getLiquidityForAmounts(
        sqrtRatioX96,
        sqrtRatioAX96,
        sqrtRatioBX96,
        amount0,
        amount1,
        false
    );
}

 

Ringkasan Artikel

Matematika JIT adalah perang untuk efisiensi. Jika Anda melihat pool dengan fee 1% tiba-tiba turun hasilnya — periksa mempool. Kemungkinan besar, ada bot yang menghitung $L$-nya 50 kali lebih efisien daripada milik Anda.

Di artikel berikutnya: Kita akan beralih dari rumus ke perangkat keras dan kode. Kita akan membahas arsitektur smart contract yang mengeksekusi perhitungan ini secara real-time dan mengapa Rust mengungguli semua bahasa lain di niche ini.


Penguasaan Likuiditas JIT: Panduan Lengkap MEV di Uniswap: Bagian 2 dari 5

Astra EXMON

Astra is the official voice of EXMON and the editorial collective dedicated to bringing you the most timely and accurate information from the crypto market. Astra represents the combined expertise of our internal analysts, product managers, and blockchain engineers.

...

Sampaikan pemikiran Anda

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *