# Uniswap 工作原理、數學模型與生態機遇 **主講:** Jeff Huang **分享會連結:** https://youtu.be/3XrqBAoHaPQ --- ## 講師背景:一個「非典型」開發者的 Web3 之路 * **非科班出身:** 讀的是認知科學,做過金融碼農(IBM/JPMorgan),也去騰訊和字節跳動捲過遊戲業務。 * **Web3 老兵:** 2018年就嘗試過 DAICO 創業(雖失敗),現在心態更像「半退休」,純粹因為喜歡跟年輕人一起學新東西。 * **風格:** 自稱「視覺系動物」,比起枯燥的公式,更喜歡用圖形來理解流動性。 --- ## Uniswap V2:優雅的數學與懶人的哲學 V2 是理解 AMM 的基石。它是一個完美的 **Proof of Concept(概念驗證)**。 ### 1. 核心直覺:蹺蹺板上的 $x \cdot y = k$ * **視覺化理解:** 想像一條雙曲線。 * **幾何視角(Iso-price line):** * 想像從原點 $(0,0)$ 射出一條直線。這條線上的每一點,$y/x$(價格)都是一樣的。 * 這條線會穿過無數條 $x \cdot y = k$ 的雙曲線。 * **重點:** $k$ 值越大,曲線離原點越遠,代表**流動性越深(Depth)**。添加流動性不會改變價格($y/x$ 不變),但會把曲線往外推($k$ 變大),讓價格更難被撼動。 ### 2. 套利機制:價格是如何回歸的? 為什麼 Uniswap 價格會跟著幣安走?靠的是套利者。 **套利數學推導** > **場景:** 池內 2 ETH, 6000 USDC ($k=12,000$, $P=3000$)。外部市場漲到 3200。 > **問題:** 套利者需要注入多少 USDC 才能把價格推到 3200? > > 1. **建立方程組:** > * 目標價格:$y' / x' = 3200$ > * 恆定乘積:$x' \cdot y' = 12,000$ > 2. **消去法求解:** > * 將 $y' = 3200x'$ 代入乘積公式 > * $x' \cdot (3200x') = 12,000 \rightarrow x'^2 = 3.75$ > * $x' \approx 1.9365$ (目標 ETH 數量) > 3. **計算交易量:** > * 注入 USDC = $y' - y = (12,000 / 1.9365) - 6000 \approx 196.77$ > * 買走 ETH = $x - x' = 2 - 1.9365 = 0.0635$ > *Jeff :這就是 AMM 自動定價的本質,不需人工干預,數學自動平衡。* ### 3. V2 合約實作細節 * **閃電貸邏輯(先給錢,再檢查):** * 代碼流程:`transfer` (給幣) -> `callback` (執行用戶邏輯) -> `invariant check` (檢查 $k$ 值)。 * 這意味著你可以在沒錢的情況下,先借錢去套利,獲利後再還款。 * **手續費的代碼實現(997 vs 1000):** * V2 手續費是 0.3%。在 Solidity 中為了避免浮點數運算,公式寫成了: * $(Balance0 \times 1000) \times (Balance1 \times 1000) \ge k \times (997)^2$ * 這直接在餘額檢查階段扣除了手續費,開發者寫合約時需精確掌握這一點。 ### 4. TWAP 預言機 * **原理:** 不記當下價格(易被操縱),而是記錄**「價格 $\times$ 時間」的累計值**。 * **計算:** $(累計值_{T2} - 累計值_{T1}) \div (T2 - T1)$。這相當於計算一段時間內的平均面積,極大節省了 Gas。 --- ## Uniswap V3:為了「資本效率」的極致優化 V3 的複雜度是指數級上升,核心是為了解決 V2 資金「睡覺」的問題。 ### 1. 集中流動性 (CLMM) 與 $\sqrt{P}$ * **概念:** 允許 LP 只在特定區間(如 2500-3500)提供流動性。視覺上從「平鋪的線」變成了「柱狀圖」。 * **為什麼要用根號價格 ($\sqrt{P}$)?** * 並非炫技。在計算 $\Delta x$ 和 $\Delta y$ 時,使用 $\sqrt{P}$ 可以讓原本複雜的雙曲線運算變成**線性運算**,便於合約計算。 ### 2. Tick (刻度) 與 Gas 優化 這是 V3 最核心的底層設計。 **Tick Bitmap 與 Tick Spacing** > **問題:** 如果允許在任意價格點(如 1.000001, 1.000002...)添加流動性,交易時合約需要遍歷無數個點來尋找流動性,Gas 會直接爆炸。 > **解法 1:Tick Spacing (刻度間距)** > * 不同的手續費等級對應不同的最小間距: > * **0.01% (穩定幣):** Spacing = 1 (價格貼得極近) > * **0.3% (主流幣):** Spacing = 60 > * **1% (波動幣):** Spacing = 200 (間隔較寬) > **解法 2:Tick Bitmap (位圖索引)** > * Uniswap 不使用迴圈遍歷,而是用 **Bitmap** (一個 `uint256` 記錄 256 個位置的狀態)。 > * 透過位運算 (Bitwise operations),合約可以在 $O(1)$ 時間內直接「跳」到下一個有流動性的 Tick,這是 V3 節省 Gas 的關鍵魔法。 ### 3. 手續費計算:Fee Growth Outside Jeff 直言這是 V3 最難懂的邏輯。 * **天才設計:** 系統只記錄「全局累計手續費」和每個 Tick 的「外側 (Outside) 手續費」。 * **翻轉邏輯:** 當價格穿過一個 Tick 時,該 Tick 的 Outside 數值會翻轉 ($Global - Outside$)。 * **初始化之謎:** 當一個新的 Tick 被激活時,它的 `FeeGrowthOutside` 初始值看似隨機,其實是根據當下的 `FeeGrowthGlobal` 設定的,目的是為了保證數學上的連續性,讓後續的減法運算不會出錯。 --- ## 🔮 Uniswap V4:架構重構 1. **Hooks (鉤子):** 交易前後可插入自定義代碼(如鏈上限價單、動態手續費)。 2. **Singleton (單例):** 所有池子在一個合約內。多幣種跳轉(Multi-hop)不再需要真實轉帳,只需在賬本上加減(Flash Accounting),大幅降低 Gas。 --- ## 💰 生態資源與「財富密碼」 Jeff 強烈建議開發者關注以下資源: 1. **Uniswap Foundation Incubator:** 全免費、6-8 週的線上孵化器,Jeff 是導師。 2. **DeFi Education Fund:** 這是一個由 Uniswap 資助的政治遊說組織,專門在美國進行 DeFi 政策教育與遊說,對關注合規賽道的人很重要。 3. **Unichain Retro Grant:** 針對 Uniswap 新推出的 Unichain 生態的資助計劃。 4. **黑客松 (Hackathons):** 推薦 ETHGlobal,獎金豐厚。 --- > **總結:** > 從 V2 的 $x \cdot y = k$ 幾何美學,到 V3 為了省 Gas 而發明的 Bitmap 和複雜費用算法,Uniswap 的進化史就是一部在**「資本效率」**與**「鏈上計算成本」**之間博弈的歷史。