Das liquidity-Feld eines Uniswap-V3-Pools ist weder Geld noch Swap-Tiefe. Lass Claude dich durch jedes leicht falsch gelesene Feld führen.
Wer sich mit DeFi beschäftigt, starrt früher oder später auf Daten eines Uniswap-V3-Pools. Und in diesem Zahlenraster auf der Pool-Seite gibt es mindestens ein Feld, das fast jeder beim ersten Mal falsch liest —— ein Lesefehler groß genug, dich glauben zu lassen, in einem 100-Millionen-Dollar-Pool stünden 3,2 Trillionen Dollar an "Liquidität".
Dieser Beitrag liest einen Pool in fünf Minuten von Anfang bis Ende, mit smarts MCP plus Claude. Echte Daten, der USDC/WETH-0.05%-Pool auf Mainnet.
Sobald smarts MCP angeschlossen ist, ruft Claude get_uniswap_v3_pool mit dem Slug univ3-usdc-weth-eth auf und bekommt das hier zurück:
protocol: Uniswap V3
pair: USDC/WETH
fee: 0.05%
price:
1 WETH in USDC: 2310.3381
1 USDC in WETH: 0.00043283
tick: 198868
liquidity: 3243712254364037809
liquidity_note: Uniswap V3 sqrt-formula virtual liquidity
at the current tick. Not a USD amount and
not the depth available to swap.
tvl_usd: 100,645,897.62
tokens:
token0: USDC (decimals 6)
token1: WETH (decimals 18)
block_number: 24959248
Die Daten selbst sind simpel. Der Punkt: jedes Feld hat eine Falle. Eins nach dem anderen.
Man nimmt an, in einem USDC/WETH-Pool sei USDC die "Hauptwährung" und WETH "der bewertete Vermögenswert". Falsch. Uniswap V3 sortiert token0 und token1 strikt nach dem Zahlenwert ihrer Adressen. Die USDC-Adresse 0xa0b8... ist kleiner als die WETH-Adresse 0xc02a..., also token0 = USDC, token1 = WETH.
Diese Reihenfolge regiert jede interne Berechnung: in welche Richtung der Preis zeigt, in welche Richtung Ticks laufen, in welcher Einheit Liquidität ausgedrückt wird. Wechsle in einen anderen Pool, etwa WETH/DAI, und die Rollen von token0/token1 können sich umkehren —— jede Intuition über "geht ETH hoch oder runter?" muss neu durchgerechnet werden.
Einer der Vorteile, wenn Claude den Pool liest: es liefert dir den Preis in beiden Richtungen beschriftet, sodass du dir nicht im Kopf zurechtlegen musst, "welche Tick-Seite welchen Token meint".
Die vier üblichen Fee-Tiers in Uniswap V3 sind 0.01% / 0.05% / 0.30% / 1.00%.
Dass USDC/WETH 0.05% statt 0.30% nimmt, sagt: Market Maker setzen auf Volumen, nicht auf fette Per-Trade-Gebühren, weil die Volatilität begrenzt und der Flow riesig ist.
Wer das weiß, kann beim Anblick eines neuen Pools mit 1% Fee gleich raten: entweder ein brandneuer Token oder niemand interessiert sich für das Paar.
Der V3-Pool-Zustand hat kein separates "letzter Trade-Preis"-Feld. Der aktuelle Preis ist, was slot0.sqrtPriceX96 sagt, und der Tick ist sein Logarithmusausdruck. Mit anderen Worten: solange niemand handelt, bleibt der Preis einfach stehen —— ein gänzlich anderes Modell als die "letzte Ausführung" einer CEX.
(Für historische Preise nimmt man V3s eingebauten Oracle —— der Pool-Zustand hält ein Array von Observation-Akkumulatoren, aus denen sich ein TWAP ableiten lässt. Das ist ein eigener Mechanismus.)
Die gerade gelesenen 1 WETH = 2310.34 USDC sind der "aktuelle Quote" des Pools; der nächste Swap startet von dort und schiebt den Preis entlang der Kurve bis zu einem neuen Tick.
tick: 198868 ist die Zahl, die jeden beim ersten Mal verwirrt. Sie wirkt wie ein Preis, ist aber kein Dollarbetrag.
V3 diskretisiert den Preis logarithmisch: raw_price = 1.0001^tick, wobei raw_price gleich wei von token1 geteilt durch wei von token0 ist —— nicht der Anzeigepreis. Um daraus "1 ETH in USDC" zu machen, muss man noch mit 10^(decimals_token0 - decimals_token1) multiplizieren. Nach dieser Anpassung entspricht Tick 198868 ungefähr 1 ETH ≈ 2310 USDC.
Warum dieser Umweg? Weil Market Maker, sobald der Preis logarithmisch ist, Liquidität nur in einem bestimmten Preisbereich platzieren können —— etwa "nur zwischen 2200 und 2400". Diskrete Ticks sind die Etiketten dieser Bereiche. Das ist V3s Signatur-Innovation gegenüber V2: konzentrierte Liquidität.
In der Praxis musst du keine Ticks ausrechnen. Wichtig zu wissen: ein größerer Tick bedeutet nicht zwangsläufig einen höheren Preis (hängt davon ab, welcher Token token0 ist), und ein Tick-Schritt entspricht 0.01% Preisänderung.
Die große Falle: liquidity: 3243712254364037809.
19 Stellen, sieht nach wei aus. Aber es ist kein Geld.
Es ist die "virtuelle Liquidität" L aus der Mathematik von Uniswap V3 —— ein interner Parameter, der die Steigung der Market-Making-Kurve in einem sqrt-price-Bereich ausdrückt. Seine Einheit ist nicht USD und es ist nicht mit den tatsächlichen Pool-Beständen vergleichbar.
Die Tool-Antwort warnt sogar mit einem liquidity_note:
Uniswap V3 sqrt-formula virtual liquidity at the current tick. Not a USD amount and not the depth available to swap.
Warum die zweite Klausel? Weil ein anderer häufiger Fehler ist, liquidity als "wie viel kann ich gerade ohne Slippage swappen" zu lesen. Auch falsch. V3-Swap-Tiefe wird stückweise berechnet: innerhalb des aktuellen Tick-Bereichs nutzt man dieses L mit der sqrt-price-Formel; sobald ein Swap den Preis über eine Tick-Grenze drückt, springt man in den nächsten Bereich und schaltet auf dessen L um. Jede überschrittene Grenze wechselt das L, bis der Trade fertig ist. "Wie viel man ohne Slippage swappen kann" hängt also davon ab, wie viel L in jedem Bereich entlang des Pfades liegt —— eine einzelne Slot0-Zahl sagt darüber nichts aus.
Merk dir: vergleiche das liquidity-Feld nicht mit USD und nimm es nicht zum Vergleich der "Tiefe" zwischen Pools —— das führt in die Irre.
tvl_usd: 100,645,897.62. Das ist das echte Geld im Pool.
Woher kommt die Zahl? Es ist der reale USDC-Bestand des Vertrags plus der reale WETH-Bestand, jeweils multipliziert mit dem aktuellen USD-Preis von DefiLlama, summiert.
Verglichen mit dem liquidity-Feld:
| Feld | Wert | Bedeutung |
|---|---|---|
| liquidity | 3.24 × 10¹⁸ | interner V3-Mathe-Parameter, einheitslos |
| tvl_usd | $100,645,897 | tatsächlich vom Pool gehaltenes Geld |
Beides wird umgangssprachlich als "Liquidität" übersetzt, sind aber verschiedene Dinge. Für die Story TVL anschauen, für die Mathematik liquidity, niemals mischen.
Letztes Detail: block_number: 24959248.
On-chain-Daten kommen immer mit Blocknummer. Jedes Feld, das Claude geholt hat, wurde im selben Block gelesen. Das hat zwei Konsequenzen:
Für Monitoring oder Arbitrage-Logik ist das die entscheidende Eigenschaft —— ein Lesevorgang gibt dir eine kohärente Sicht auf die Welt, ohne zeitliches Auseinanderlaufen zwischen Feldern fürchten zu müssen.
Wenn du das alles verstanden hast, öffnet sich der Werkzeugkasten:
All das verlangte früher web3.py installieren, ein Skript schreiben, ein ABI pflegen, einen RPC mieten. Jetzt läuft alles auf Konversationsebene mit Claude + MCP —— frag, und es liest.
V3s Mathematikmodell hat eine Hürde. sqrtPriceX96, Ticks, L, konzentrierte Liquidität —— diese Begriffe haben viele abgeschreckt. In der Praxis sind aber 90% dessen, was du brauchst, "ist der Pool gesund, hat er Geld, wie ist der Preis?" —— ohne Formel.
Lass Claude dein V3-Übersetzer sein, der virtuelle Liquidität und Tick-Kodierung in ein simples "1 ETH = 2310 USDC, der Pool hält 100 Mio. $" verwandelt. Die Entscheidungen ab dort sind dein Job.