Uni V3的數學原理
前言——Uniswap V3(如下簡稱 Uni V3)放出了很多 feature,然而其最為本質的迭代依然是對 AMM 數學曲线的再思考。在過去的兩年中,我們也躬身入局 AMM 領域,認為 AMM 最基本的曲线形態已經定型,後續的創新應該會在 AMM 基本曲线形態的基礎上實現“策略化”,於是我們創造了 MOV 超導 V2。而如今我們看到了 V3,突然有一種“久別重逢”的感覺,在尋找這種感覺之余,我們也希望為大家呈現 AMM 最為深刻的思考路程。因為 AMM 的時代將會比想象得更為恢弘壯闊。
讓我們直切正題,Uniswap V3 最耀眼的創新——在 AMM 上實現集中流動性。
V3 給出了一個虛擬儲備金(virtual reserves)的概念,舉例講解:
在傳統 V2 中,Alice 一次性將 500,000 DAI 和 333.33 ETH 注入儲備池,總價值 $1m,提供全區間
(注:在一個逐步走向成熟化的金融市場中,無套利原理和提升資本利用效率永遠是兩大核心訴求,也是後續 DeFi 產品向先驅 DeFi 發起挑战的出發點。)
所謂的集中流動性便是讓 LP 自主選擇波動範圍,只為該範圍提供局部流動性,例如 Bob 認為未來一段時間內 ETH 的價格區間在
則
即 Bob 所獲得的虛擬曲线(D 值)幾乎跟 Alice 一樣。
上述計算過程是一種反證法,實際上用戶 Bob 會向系統算法提出自己的需求輸入,包括預測價格區間範圍、當前價格點、最終想要獲得的一個 virtual reserves 規模(即虛擬曲线 D 值)。有了虛擬曲线表達式的確定,可以輕松算出 a、b、c 三個確定的點坐標,進而便算出
同時,也可以看到,一旦未來價格越出了區間,Bob 其中一種資產將徹底消失。
全局狀態中有
再來看
如果當前 tick 等於 i 或者高於 i,此時從全局總手續費
f_{g} 中減去“累積到 i tick”的手續費f_{o}(i) ,剩下的便是對所有高於 i tick 的區間的 fee 統計;但如果當前 tick 還未抵達 i,此時根據對
f_{o} 的初始化定義為 0,則所有高於 i tick 的區間的 fee 統計尚未產生,為 0。
同樣對於
如果當前 tick 抵達或者超過了 i,
f_{o}(i) 表示累計到 i 的手續費,也即對所有低於 i tick 的區間的 fee 統計;如果當前 tick 還未抵達 i,對所有低於 i tick 的區間的 fee 統計值即為當前的全局變量
f_{g} (當前總手續費)。
通俗來概括,系統算法要統計某一個 range 內累計的手續費,
如果當前 tick 已經處於 range 內部,即
i_{l}\leq i_{c} < i_{u} ,只需要從全局手續費f_{g} 減去所有低於i_{l} 組成的 range 累計的手續費;如果當前 tick 不處於 range 內部,且低於下界
i_{l} ,說明尚未在(i_{l},i_{u}) 區間內產生交易,也就未產生手續費,因此該 range 內累計量為 0;如果當前 tick 不處於 range 內部,且高於上界
i_{u} ,需要從全局總量中分別去除“兩頭”各自的累計量,即從全局f_{g} 中減去所有低於i_{l} 區間累計量,再減去“從i_{u} 到當前 tick 區間累計量”。
Uni V3 計算手續費的過程是一種從微觀走向宏觀的思想,它將空間劃分成離散的,每一個時間刻度只會在一個離散空間上產生交易,從而產生手續費,每一個微觀 tick 都在各自記錄着自己從最低 tick 到自身這段區間內的累計手續費總和,然後供上述公式不斷調用,以計算各種宏觀結果。
Uni V3 已經改變了傳統 AMM 對 LP 行為的設定,也不再基於全局流動性(Global Liquidity)和份額(Share)來為每一個 LP 計算手續費收益。對 V3 來講,它只關注在每一個 tick 裏存在多少“虛擬”流動性,以及這些虛擬流動性產生了多少手續費,算得單位虛擬流動性對應的手續費值;在這個時空之下,我們再把視角切到具體每一個 LP 上,對於任何 LP,都會存在一個“开倉”(Position)的區間設定,他在自己設定的區間提供了虛擬流動性,可能是一個 tick,也可能是連續多個 tick,從最簡單的“一個 tick”角度解釋,系統會記得同一時空下每一個 LP 在此 tick 注入的虛擬流動性值,並為他們確定出一個比例(注意這個比例只與最开始注入的虛擬流動性大小有關,並不涉及手續費轉流動性,這與 V2 是不同的),以此分得該 tick 內所有手續費累計。
<img src="https://img.jinse.com/4923027_image3.png" auto";'>
在實際情況中, LP 們還會存在復雜的行為,比如注入/退出的時間紛雜、選擇的 range/tick 紛雜。但 Uni V3 的大道至簡之處正是利用全局計算來屏蔽掉單個 LP 視角,只關心 ticks 視角和 Position 視角。在確定好上述所述的一系列全局狀態變量的定義後,認真記錄好每一筆 swap 交易在 ticks 中發生的情況(包括只在一個 tick 內完成該筆 swap 交易,和需要跨多個 tick 才能完成該筆 swap 交易),同時只記錄每個 tick 內虛擬流動性的大小,以此為根本去提供 swap 交易公式以及 swap 後手續費如何分配給參與該 tick 的所有 LP 們。LP 的復雜行為體現在空間的不連續性和時間的不統一性兩方面,對於時間不統一性(即會出現很多 LP 不斷加入和退出流動性),Uni V3 還會引入 Position 這一級別的全局變量為每一個身份(address)記錄下其對 range/tick 加入/退出(“setPosition”)時手續費的統計(uncollected fee/feeGrowthInside),確保後來的 LP 不會參與到前序 LP 們已經累計的收益分配。
如果總結來講 ,tick-level 是對空間上發生的統計,確保起點一致的 LP 們 fee 分配,而 Position-level 是對時間上發生的統計,確保不同起點的 LP 們 fee 累計起點不一樣。建議實現者深入 V3 代碼,才能真正獲得安全計算法。
最後,Uni V3 過於復雜,但大道至簡,即便去模仿,模仿者依然需要下功夫深刻了解其“微積分”思維。這篇文章只選擇了 fee 這一個角度呈現 Uni V3 的“數學原理”,也是其實現集中流動性的核心邏輯。而在數學之外,我們有更多驚喜的“哲學意義”發現與大家分享,例如 LP token 的進化、NFT 其實並不只屬於藝術領域(更有助於金融)、V3 會存在一個策略博弈、V3 對基金池/合成資產的啓示等等,當然也包括與 MOV 超導 V2 的“心有靈犀”——AMM 的本質是連續性的無限網格,Uni V3 是在這個無限網格基礎之上再實現了微觀無限網格,是“無數網格機器人的疊加”,MOV 超導 V2 則是在無限網格基礎之上進行了更為宏觀的無限網格,是超級網格。請期待下一篇《Uni V3 的自然哲學》。
作者:比原鏈研究院
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
Arthur Hayes 新文聚焦 | 全球貨幣政策的真相,比特幣接下來何去何從?
作為一名宏觀經濟預測者,我試圖基於公开數據和當前事件,作出能夠指導投資組合資產配置的預測。我喜歡“...
Ouroboros DeFi:為什么 Usual Money 被低估了?
前言:Ouroboros DeFi 方法論在Ouroboros DeFi收益基金,我們的投資策略始...
WEEX 唯客交易所贊助臺北區塊鏈周 支持更多全球用戶Onboard Web3
第三屆臺北區塊鏈周(Taipei Blockchain Week, TBW)於 12 月 12-1...
Defi之道
文章數量
89粉絲數
0