Drücken Sie ESC, um zu schließen

JIT Liquidity Math: Profit-Berechnung & MEV-Metriken in Uniswap

Dies ist der zweite Artikel unserer Serie „Raubtiere in Pools: Die Kunst und Mathematik der JIT-Liquidität“. Hier wechseln wir von der Theorie des „Diebstahls“ zur kalten Berechnung: wie ein Algorithmus in 200 Millisekunden entscheidet, ob es sich lohnt, ins Spiel einzusteigen.

Wenn der erste Artikel darüber handelte, „was es ist“, behandelt dieser Artikel „was es kostet“. Damit ein JIT-Angriff nicht zu Wohltätigkeit zugunsten von Minern/Validatoren wird, muss der Bot eine Gleichung mit fünf Unbekannten schneller lösen, als der Block gemined wird.

1. Liquidität (L): Die Hauptvariable

Bei Uniswap v3 ist Liquidität nicht nur die Summe der Token, sondern der Faktor L, der bestimmt, wie viele Vermögenswerte sich bei einer Preisänderung bewegen. Swap-Formel (Invariante):

formule-jt
 

Für einen JIT-Bot ist es entscheidend, zu berechnen, welchen Anteil der gesamten $L$ in einem bestimmten Preisbereich (Tick) er abdecken muss.

Formel für den Gebührenanteil (Fshare):

Fshare = Ljit / Lpool + Ljit

Wo:

  • Ljit  — vom Bot bereitgestellte Liquidität.
  • Lpool — bestehende passive LP-Liquidität im Ziel-Tick.

Praxisregel: Um 95 % der Gebühren abzuschöpfen, muss die Bot-Liquidität in diesem Bereich 19-mal höher sein als die aktuelle Pool-Liquidität.

 

2. Berechnung des Swap-Ertrags (Gross Profit)

Der Bot sieht im Mempool eine Transaktion des Nutzers im Wert von $S$. Kennt man die Pool-Gebührenkategorie ($\phi$, z. B. 0,05 % oder 0,3 %), berechnet er die gesamten Transaktionsgebühren:

formule-jt-2
 

Erwarteter Bruttogewinn des Bots (Pgross):

formule-jt-3
 

 

3. Berücksichtigung der „Gas-Steuer“ (Betriebskosten)

Im Gegensatz zu einem passiven LP, der einmalig Gas für Monate bezahlt, zahlt ein JIT-Bot im selben Block zweimal Gas (oder eine teure Transaktion mit mehreren Aufrufen).

Gas-Kosten (Cgas):

  • mint(): ~150k–200k Gas.
  • decreaseLiquidity() + collect(): ~120k–180k Gas.
  • Plus Prioritätsgebühr für Flashbots, um die Aufnahme in den Block zu garantieren.

Im Ethereum-Mainnet bei 30 gwei Gaspreis können die Gesamtkosten $50–$150 betragen. Auf L2 (Arbitrum/Polygon) sind die Kosten minimal ($0,10–$0,50), aber der Wettbewerb um Mikro-Swaps ist höher.

 

4. Berechnung des Break-even-Punkts

Der Angriff lohnt sich nur, wenn:

formule-jt-4
 

Dabei ist Cslippage der Verlust beim Abziehen von Liquidität (Impermanent Loss während eines Swaps) und Copportunity die Kapitalkosten (z. B. Zinsen für einen Flash Loan).

Wenig bekannter Fakt: Erfahrene Bots berücksichtigen „Shadow Slippage“. Wenn ein Bot große Liquidität einfüllt, wird der Preis „starrer“. Wenn der Swap des Nutzers sehr groß ist, kann der Bot weniger Liquidität einfüllen, damit der Preis stärker bewegt wird, um im nächsten Block zu arbitragen. Für reines JIT gilt jedoch: je mehr Liquidität, desto besser.

 

5. Praktisches Berechnungsbeispiel (Mainnet)

  • Pool: ETH/USDC (0,05 %)
  • Swap des Nutzers: $500,000.
  • Aktuelles Lpool im Tick: $2,000,000.
  • Bot fügt Ljit hinzu: $18,000,000.
  • Gesamtgebühr: $500,000 x 0.0005 = $250.
  • Bot-Anteil: 18M / 18M + 2M = 90%.
  • Bot-Ertrag: $250 x 0.9 = $225.
  • Gas-Kosten: $120 (durchschnittliche Bedingungen).
  • Netto-Gewinn: $225 - $120 = $105 pro Block.

Klingt wenig? Die Top-Bots führen täglich 500–1000 solcher Angriffe durch. Das entspricht einem Netto-Gewinn von $50,000–$100,000 pro Tag bei nahezu keinem Marktrisiko.

 

6. Technisches Detail: Wahl der Tick-Breite

Ein Bot setzt niemals eine breite Range. Je enger die Range (Ticks), desto höher die Kapitalkonzentration und desto größer L bei gleicher Tokenmenge.

JIT-Standard: tickLower und tickUpper mit einem minimalen Schritt Unterschied (z. B. 10 Punkte für einen 0,05 % Pool).

Liquidität aus Token-Menge berechnen (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
    );
}

 

Fazit des Artikels

JIT-Mathematik ist ein Wettkampf um Effizienz. Wenn Sie sehen, dass die Rendite eines Pools mit 1 % Gebühr plötzlich sinkt — prüfen Sie das Mempool. Wahrscheinlich arbeitet ein Bot, der sein L 50-mal effizienter berechnet hat als Ihres.

Im nächsten Artikel: Wir wechseln von Formeln zu Hardware und Code. Wir analysieren die Architektur des Smart Contracts, der diese Berechnungen in Echtzeit ausführt, und warum Rust alle anderen Sprachen in diesem Bereich überholt hat.


JIT-Liquiditäts-Meisterschaft: Der vollständige Leitfaden zu MEV in Uniswap: Teil 2 von 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.

...

Diskussion beitreten

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *