原標題:《uniswap-V3技術白皮書導讀》
來源:星想法
作者:StarLi
uniswapV3一公布就引發廣泛關注。相對V2來說,邏輯和代碼都復雜一些。V3的核心是通過盤口區間提供流動性,解決LP提供流動性時的資金利用率的問題。什么是資金利用率?V3如何推導區間流動性的計算公式?如何理解流動性?如何計算swap費用?本文先從V3技術白皮書詳細分析開始。
先給出一些uniswap官方有關V3的資料:
V3官方介紹https://uniswap.org/blog/uniswap-v3/
技術白皮書https://uniswap.org/whitepaper-v3.pdf
智能合約代碼
https://github.com/Uniswap/uniswap-v3-core
https://github.com/Uniswap/uniswap-v3-periphery
推薦先認真查看技術白皮書,再看智能合約代碼,最后再對照官方介紹。理解了技術白皮書,代碼非常容易理解。在技術白皮書的第一章總結了uniswapV3的技術特點,最核心的概念是"ConcentratedLiquidity"。
1資金利用率
先看看uniswapV2的資金利用率:
上圖為資金池中的x/y的量變化曲線。資金池中的當前價格在c點,并且假設會在a價格點和b價格點之間波動。從c點向a點滑動,消耗最大y_real,從c點向b點滑動,消耗最大為x_real。也就是說,當前價格c點,在a點和b點之間震蕩的話,最大只需要消耗x_real和y_real。理論上只要提供x_real和y_real就足夠了。而事實上,如上圖所示,在價格c點,分別提供了大于x_real和y_real的x和y。明顯可以看出,x-x_real和y-y_real的資金在這種情況下是永遠用不上的,也就稱為閑置資金。
Meta的下一輪大規模裁員將從下周開始:金色財經報道,周四,Meta高管在與員工的問答中宣布,該公司將于下周開始裁員,這是其最新一輪大規模裁員。雖然扎克伯格此前曾宣布將在5月份進行新一輪裁員,但裁員的確切時間直到那次會議才向員工確認。此次裁員將影響Meta的業務部門,并可能影響數千名員工。(VOX)[2023/5/19 15:12:32]
在這種情況下,資金利用率為x_real/x或者y_real/y。如果價格波動非常小的話,資金利用率是非常低的。uniswapV3就是嘗試解決資金利用率低的問題。想法比較簡單,所有資金可以只添加到某個區間,只添加到有可能價格波動到的區間范圍。如何在某個區間添加流動性并提供swap功能是uniswapV3的重點。先從VirtualReserves說起。
2虛擬資金池(VirtualReserves)
uniswap的交易采用的乘積固定模型(x*y=k)。所謂的虛擬資金池(VirtualReserves),是指還在乘積固定曲線上,只提供某個區間流動性的資金池:
圖中的墨綠色的曲線就是虛擬資金池滿足的乘積固定曲線。事實上需要的資金的曲線如圖中的橘黃色。橘黃色的曲線公式如下圖:
你可以想象成虛擬資金曲線在x/y軸進行平移,使得a/b點和x/y軸重合。也就是用一定量的資金就能達到“虛擬”的交易曲線的效果。
多鏈交易基礎設施zkLink完成第二輪代碼審計:5月9日消息,基于零知識證明的多鏈交易基礎設施 zkLink 宣布通過第二輪代碼安全審計,本輪審計由 ABDK Consulting 負責,包括智能合約、ZK-Rollup 電路和增量三個部分,均未發現任何重大安全問題,zkLink 計劃在接下來的幾個月內采取額外的安全措施,包括即將開啟的用戶資金安全測試 Dunkirk 等。此前 zkLink 于 2021 年 6 月完成由 Certik 進行的第一輪代碼審計,未發現重大漏洞。[2023/5/9 14:51:28]
如何計算在某個區間提供虛擬資金池,先要從深入理解流動性開始。
3流動性
乘積固定的交易模型,滿足資金池中的兩種代幣金額滿足:x*y=K。如果設定K=L^2的話,x*y=L^2。L就是我們說的流動性。由乘積固定的交易模型得出如下的公式:
在已知L和sqrt(P)的情況下,也能推導出資金需求量x和y。
通過公式6.6,在流動性不變的情況下,流動性可以看成是單位“價格波動”的y資金量的變化。”價格波動“打上引號是因為事實上是sqrt(P)的變化。
Curve:社區提出建立WBTC/sBTC Base Pool提案:金色財經報道,Curve發布公告稱,由于Ren v1版本即將下線,社區提出建立WBTC/sBTC Base Pool的新提案并已啟動投票。[2022/12/4 21:21:20]
這個是uniswapV3核心公式,用相對值來計算流動性。所謂的流動性,就是單位“價格變化”的資金量。在一定的交易量的情況下,如果流動性好,價格變化就小,流動性不夠的話,價格波動就大。
特別注意的是,一個區間上的流動性和V2的普適的流動性不同。一個區間上的流動性,重點在“區間上”。不同區間的流動性沒有可比性。V2的流動性和區間上的流動性的區別如下圖:
V2的流動性是“普適”的,在所有價格點上流動性相同。V3的流動性是由一系列不同區間上的流動性組成。相對來說,在當前價格左右的流動性比較高。流動性提供者LP只有提供了可供交易的流動性才能獲取交易費。為了獲取更多的交易費,為了提高資金的利用率,流動性提供者會將資金提供在合理的價格波動范圍內。也就是說,在某個區間swap交易產生的手續費,只有該區間流動性提供者才能獲取手續費。為了計算每個區間獲取的手續費,引入了Tick的概念和計算方法。
4Tick
在區間上提供流動性,帶來很多復雜的情況:區間和區間的重疊覆蓋。因為不同區間的流動性沒有可比性,某個交易費并不能混入到流動資金中,等刪除流動性時候一并提取。為了解決這個問題,uniswapV3引入了Tick的概念。交易費用實時結算并單獨記錄,并不混入流動資金中。雖然整個區間和區間的流動性沒有可比性,但是,在具體的某個價格點上,流動性是可比較的。uniswapV3將整個價格范圍(負無窮到正無窮)分成一個個的Tick:
加密黑客在2022年的三個季度內盜取了超過25億美元:金色財經報道,根據Atlas進行的分析結果,在2022年第三季度,盡管最近一個季度的區塊鏈黑客數量與第二季度相比下降了43%,但黑客成功竊取了總計約4.83億美元的資金,在三個季度中,區塊鏈黑客損失的總金額為 2,570,117,825 美元,損失的金額是根據黑客或欺詐發生時特定加密貨幣的兌換率確定的。[2022/10/26 11:45:44]
后一個價格點的價格是前一個價格點價格基礎上浮動萬分之一。
每個Tick也有一個唯一的序號。區間可以由兩個Tick表示。邏輯上交易手續費可以一個個的Tick計算,并在每一個Tick上根據流動性的占比進行交易分配。先看看一個Tick范圍的swap的計算。
5Tick內的SWAP
假設有一個很小的量的y,需要swap為x。通過6.13的公式,可以計算出因為y的變化導致的價格變化。
再利用6.15的公式可以算出換取的x的量。
日本政府計劃開始全面改善Web3環境:6月8日消息,日本政府于昨日批準了《2022年經濟財政運營和改革的基本方針》,該政策提及,要通過推進更加去中心化的可信任的互聯網、擴大及普及區塊鏈上的數字資產、讓用戶管理及使用自己的數據,來創造新的價值,日本將努力為實現這樣一個去中心化的數字社會來進行必要的環境改善。這意味著日本政府計劃開始全面改善Web3環境。該政策附帶的《《新資本主義實施方案流程表(草案)》中表示,該國政府將于2022年末前進行Web3環境改善的討論,之后的計劃目前未定。
該政策還提及日本將推進國際標準化,以實現不依賴特定服務的個人和企業增強數據控制的可信網絡,并改善NFT和DAO等Web3的推廣環境。
此外,該方針內容還包括將在2023年國會例會上推出相關法案以擴大包括元宇宙的內容應用,并將實施證券代幣的籌資相關制度、放寬保護加密貨幣用戶的審查標準,以及制定作為支付手段的經濟機能的相關解釋指南。(Coinpost)[2022/6/8 4:10:07]
uniswapV3針對同樣的交易對設置了不同的交易費:0.05%,0.3%以及1%。如果是從Y換取X,則在換取之前先扣除手續費再進行上述的交換。
在同一交易池中只支持一種費率。也就是說,在一個交易池中支持不同的價格區間,但是都是同樣的費率。如果需要添加同樣交易對的不同交易費的交易池,必須創建新的交易池。
接下來,深入講解一下添加/刪除流動性以及交易費用的計算邏輯。
6添加/刪除流動性
V3的添加/刪除流動性是當前價格情況下在某個區間添加或者刪除流動性。所有的流動性添加/刪除流動性采用如下的公式:
注意,價格變化并不是指區間的大小,而是在某個區間上提供流動性,相對當前價格,“需要相應資金變化”對應的價格變化。
分為三種情況,想要添加的流動性區間和當前價格的關系。
當前價格處于流動性價格區間(il<=ic<iu)
因為價格在區間范圍內,如果價格滑動到il,則需要提供y資金。如果價格滑動到iu,則需要提供相應的x資金。所以,對于delta_Y來說的,價格變化為sqrt(P)-sqrt(p(il));對于delta_X來說,價格變化為1/sqrt(P)-1/sqrt(p(iu))。
當前價格低于流動性價格區間
因為當前價格遠低于il,即使從當前價格向iu滑動,也只需要x的資金,不需要y的資金。所以,在這種情況下,delta_Y=0。因為從il滑向iu需要整個區間的x的資金,對于delta_X來說,價格變化為1/sqrt(il)-1/sqrt(p(iu))。
當前價格高于流動性價格區間和第一種情況類似,不重復分析了。
7Swap交易費用
uniswap最復雜的邏輯是計算交易費用并分配。在添加和刪除流動性之前需要將相應的交易費用提取。
Tick上的總流動性在某個Tick上可以存在多個區間。在計算交易費用時,需要平攤這些費用給所有在這個Tick上多個區間的總的流動性。在每個區間的邊界的Tick上記錄下delta_L。
存在一個全局狀態:liquidity,保存當前價格對應Tick的流動性總和。當價格波動,穿過某個Tick時,會進行流動性的增加或者減少。舉例來說,價格從左到右穿過區間,當穿過區間的第一個Tick時,流動性需要增加,穿出最后一個Tick時,流動性需要減少,中間的Tick都沒有流動性的增加和減少。
區間上的交易費用率計算一個區間上的交易費用率,采用總的費用率減去區間外的費用率的方法。在一個區間的邊界Tick上記錄feeGrowthOutside。所謂的feeGrowthOutside,就是“另外”一個方向上總的費用率。另外的一個方向是相對穿過當前Tick的方向而言。當價格從左到右穿過一個Tick,feeGrowthOutside指的是Tick左邊所有區間的費用率。簡單的說,就是價格要去方向的相反方向所有區間的費用率。feeGrowthOutside用fo表示。因為fo是一個Tick的兩個方向的總的費用率,兩個方向的費用率的總和肯定是等于fg。所以當穿過一個Tick時,這個Tick上的fo要進行翻轉:
當一個區間創建時,區間邊界上Tick的fo需要初始化:
如果當前的價格大于Tick的價格時,因為即使當前價格在設置的區間內,但是之前費用也不會分到,所以,可以簡單的假想為所有的費用發生在Tick價格之下,也就是fo=fg。如果Tick的價格大于當前價格,價格還沒有穿過Tick,因為假設了之前所有發生的費用發生在Tick價格之下,Tick之上是沒有費用的,所以fo=0。在理解了這些邏輯的基礎上,在swap的過程中,隨著價格的波動,一個區間上,超過最高Tick的費用率以及低于最低Tick的費用率可以用如下的方式計算:
以低于最低Tick的費用率的計算為例,如果ic>=i,低于Tick的所有的費用率就是fo。如果ic
獲取的費用率的基礎上,用費用率乘以區間的流動性可以計算出該區間收取的費用。
總結:
uniswapV3版本核心思想是流動性集中。流動性提供者可以在某個區間提供流動性,提高資金使用率。在某個區間獲取的交易費,由所有在該區間的流動性提供者均分。uniswapV3設計了區間粒度-Tick,并且推導了流動性添加/刪除以及費用計算的過程。在之基礎上,uniswapV3也更新了價格預言機的實現。
Tags:TICICKSWAPUNIlotteryticketBRICKS幣BlockSwap NetworkAUNI幣
加密資產錢包imToken宣布完成B輪3000萬美元融資。本輪融資由啟明創投領投,IDGCapital、HashKey、BreyerCapital、SignumCapital、LonglingC.
1900/1/1 0:00:00以太坊社區針對EIP-1559提案討論仍處于膠著狀態。鑒于EIP-1559遭到部分礦工的強烈反對,3月13日,有礦工提出提案EIP-3368.
1900/1/1 0:00:00「智能音響」 “主人你好,我是小Q,現在是早上08點29分,上班時間要到咯!” 「智能門鎖」 “主人你摔疼我了,你總是這樣匆忙.
1900/1/1 0:00:00據TheBlock報道,比特幣獎勵應用Lolli近日宣布完成500萬美元Pre-A輪融資,投資方包括由Reddit創始人AlexisOhanian聯合創立的風險投資公司SevenSevenSix.
1900/1/1 0:00:00本文來源:星球日報,作者:鏈上脫口秀據NiftyGateway官網消息,國際知名拍賣公司蘇富比,與NFT交易平臺NiftyGateway展開合作.
1900/1/1 0:00:00Venmo在今天早些時候宣布,將對其7,000多萬用戶增加加密貨幣業務板塊。這一舉措將允許用戶在其應用程序中直接購買、持有、銷售和比特幣、以太坊、萊特幣和比特幣現金等加密貨幣.
1900/1/1 0:00:00