2018 年 8 月, Hayden Adams 與他的夥伴們完成了 Uniswap v1 的開發並在以太坊主網上線,從此成為 DeFi 世界裡最不可或缺的拚圖之一,隨著五年的磨練,他們再度推出第四版迭代,本次的的更新較於前代有哪些堅持與變革。本文源自 Joseph Xu 所著文章《Uniswap v4: DeFi 五月花號再次啟程》,由 PANews 整理、撰稿。
(前情提要: Uniswap V4 版本降臨!你該知道 V4 的全部升級重點)
(背景補充: Uniswap V4 重點性能「Hooks」是如何實現限價單交易的?)
在 1620 年,一艘名為五月花號(Mayflower)的英國船隻駛離英格蘭,五月花號帶著 102 名乘客和大約 30 名船員駛向美國,他們離開英格蘭的原因是認為英格蘭教會不僅抵製改革而且過於腐敗,所以決定穿越大西洋來到北美,在那裡他們將建立屬於自己的新移民社群。
2017 年 7 月,Hayden Adams 被他大學畢業後的第一個僱主西門子解僱,彼時他還是一位毫無區塊鏈開發經驗的機械工程師。2018 年 8 月,在 Hayden 失業的第 13 個月時,Hayden 與他的夥伴們完成了 Uniswap v1 的開發並在以太坊主網上線,從此成為 DeFi 世界裡最不可或缺的拚圖之一。而在本文著筆的 48 小時前,Uniswap 發布了他們的第四版迭代。我們在第一時間內瀏覽了他們的白皮書和合約程式碼,試圖分析這一醞釀兩年之久的更新較於前代有哪些堅持與變革。
延伸閱讀:Uniswap V4 帶來的終極問題:DEX能超越CEX嗎?
Uniswap 的堅持
坦率地說,目前 v4 的合約還不是一個開發完成的狀態,可讀性和可參考性都受到了一定的影響。但是我們還是可以確認,v4 保留了很多前代驗證為有效的特性:
- 恆定積公式 x*y = k 沿用至今;
- 限價流動性依然基於 tick 這一刻度體系來搭建;
- 流動性分佈依然是水平分佈在限價區間內,每個池的流動性深度依然是該市場內所有參與的流動性堆疊的結果;
可以說經過兩年的市場驗證,Uniswap v3 證明瞭其在資金利用率上的優勢,限價流動性單這一極具創造力的設計在 v4 中被沿用。
Uniswap 的革新
結合白皮書和合約程式碼,我們欣喜地發現 v4 在上述堅持的基礎上完成了諸多創新和改變,而這些革新主要著力於以下四個方面:
- 全新的合約結構
- 巧妙的帳本設計
- 更高的開發者自由度
- 對於流動性提供者更多的保護
接下來,我們將從這四個方面入手,詳細討論其設計和工程實現上的巧思:
全新的合約結構
熟悉 Uniswap 過往版本程式碼的人都知道 factory-pool 這一自其 v1 沿用至今的合約架構,可以說這個架構至今都是目前 DeFi 世界裡使用最廣泛的合約結構。而 Uniswap 在 v4 中決定棄用,引入了新的單例合約(Singleton)結構,旨在最大限度的降低建立流動性池以及跨池(合約)呼叫中的 gas 消耗。
我們可以看到,v4-core 中僅剩下 PoolManager 一個合約承擔著核心的業務邏輯,而 PoolManager 將承擔著協議所有流動性彙算的任務,使用 PoolKey 這一欄位來索引對應的幣對市場,而 AMM 曲線以及流動性的相關計算都抽象到了 libraries 庫合約中。
在合約結構方面,同樣值得一提的是 v4 的流動性倉位資料的儲存與封裝也產生了巨大改變:
在 v2 中,由於流動性全區間分佈,協議使用的是同質化流動性代幣(ERC-20)作為流動性份額的憑證;
在 v3 中,因為限價流動性的引入,倉位之間無法繼續使用 ERC-20 來代幣化流動性,而是選擇在對應的流動性 Id 相關資料外層封裝了非同質化代幣(ERC-721),並使用 NonfungiblePositionManager 這一合約進行流動性相關操作的管理。
而在 v4 中,我們驚訝地發現,流動性倉位不再使用代幣化的方法進行封裝,而是使用地址進行倉位管理。
可以說 v3 在流動性倉位資料外層進行封裝 ERC721 憑證的操作是比較割裂的,而 v4 這種簡單直接地將流動性資料與地址繫結,雖然可能會喪失一些流動性代幣相關的可組合性,但是無論從 gas 經濟性上還是工程美學上都有極大的進步。
巧妙的帳本設計
閃電記帳(Flash Accounting)可以說是 v4 中最具有開創性的設計之一。回顧過往市場中絕大多數流動性協議,它們的交易和流動性相關操作都伴隨著代幣轉移,流程無外乎:安全性檢查 -> 根據設定目標計算代幣轉換的數量 -> 更新帳務資料 -> 代幣轉移。而 v4 中顛覆了這一固有的編碼邏輯,利用回撥函式(Callback Function)的特性,構建了一套複式記帳帳本。
什麼是複式記帳法?複式記帳法是以資產與權益平衡關係作為記帳基礎,對於每一筆經濟業務,都要以相等的金額在兩個或兩個以上相互聯絡的帳戶中進行登記,系統地反應資金運動變化結果的一種記帳方法。舉一個簡單的例子,Alice 從 Bob 那裡借款 1000 USDC,這一筆經濟活動將被記錄成:
從上面的表格中,我們很好理解:資產 = 權益 – 負債。(此處負債為絕對值)
我們把這個例子拓展的更複雜一些:Alice 從 Bob 那裡借款 1000 USDC;Bob 從 Carl 那裡借款 1 ETH;Carl 又向 Alice 借了 1000 DAI,那麼我們的複式記帳表格將會是:
顯然,Uniswap 的流動性池是交易者進行借貸的物件,而 swap 交易的本質則是:在交易完成後,流動性池與交易者彼此之間債務兩清。也就是說當 Alice 試圖使用 1800 USDC 購買 1 ETH 時,她與流動性池的關係也可以使用複式記帳法來記錄:
如果此刻 ETH-USDC 池中的 ETH 恰好價值 1800 USDC,那麼在 swap 交易結束後,Alice 與 pool 互不相欠,交易可以成功執行。而在 v4 中,每個操作都會更新一個稱為 delta 的內部淨餘額,而這個內部淨餘額就可以看作我們上面所說的資產。每筆交易,無論其跨過多少個交易對,都需要在完成時保證 delta 為零,否則將被駁回。v4 中新增的 take () 和 settle () 函式便可用於借出或存入資金到池中,協議便通過這兩個函式來強製執行池的結算和償付,以保證在呼叫結束時 PoolManager 與呼叫者之間互不相欠任何代幣。
同時,協議引入了 ERC-1155 這一半同質化代幣,並將協議的債務進行代幣化。也就是說,當交易者或者 LP 在任一操作中導致協議對其產生欠款,他可以不使用 take () 而是使用 mint () 函式來 1:1 的鑄造對應資產的 ERC-1155 代幣來獲得可剛性兌付的權益憑證。基於該權益憑證的激勵或者衍生產品將會有極大的創造空間,而這也意味著,將會有更多流動性被留在流動性池內,為交易者提供更好的流動性深度和交易體驗。
單例合約結構和閃電記帳這兩個特性的結合使得在多個 v4 池之間更高效地進行路由成為可能,降低了流動性碎片化的成本。
更高的開發者自由度
在 v4-periphery repo 中引入鉤子 hooks 合約, hooks 是在流動性池生命週期的各個時間節點執行的程式碼片段。開發者可以利用給出的 BaseHook 合約構建屬於自己的個性化交易操作。
Uniswap v4 目前支援八個這樣的鉤子回撥:
- beforeInitialize / afterInitialize
- beforeModifyPosition / afterModifyPosition
- beforeSwap / afterSwap
- beforeDonate / afterDonate
也就是說無論是 LP 還是交易者都可以在流動性池中操作時利用定製化的 hooks 來執行核心邏輯以外的業務邏輯。這無疑為很多原本通過鏈下中心化服務(如 Gelato Network)才能實現的功能提供了鏈上操作的可能性:
- 動態手續費
- 基於時間加權平均做市商來進行更低滑點的 swap 拆單
- 鏈上限價單
- 自定義鏈上價格預言機,如幾何平均預言機(Geomean Oracles)
在此之上,我們可以展開想象,更多場景也有了實現空間:
- 動態手續費可以不是簡單地根據時間線性變化,可以根據單筆 swap 產生的 tick 跳躍數量來量化波動率,從而動態改變手續費,實現對於 LP 無常風險的對衝
- 鏈上量化交易策略和流動性調倉策略
- 自動手續費複投
此外,引入 hook 後,池的數量預計將大幅增加,這也使得單例合約結構和複式記帳的新設計有更多的用武之地,即,不同的設計更新之間是互相牽連的。
綜上所述,v4 的確繼續踐行著其作為 DeFi 基礎設施的使命,將自己的核心業務邏輯從紛繁的產品需求中抽象出來,將無儘的想象空間交給社群和開發者,引領更多的人參與進來。這一點上,Uniswap v4 做得比前代以及一眾競品更好。
對於流動性提供者更多的激勵
v3 被一直詬病的缺乏對於 LP 的激勵和保護在 v4 中有所改觀。
PoolManager 中內建的 donate () 方法將允許使用者、協議外整合者和鉤子直接以池中任一代幣向在價格範圍內的 LP 支付費用。這一新機製可以將 MEV 內化到 LP 的回報中,以便 LP 可以從 MEV 中受益。
其他協議的影子
Uniswap 作為 DEX 賽道的龍頭,一直站在 AMM 研究的最前端,但是在 AMM 的研究上其他 AMM 競品也有各自的創新,在 Uniswap v4 這次的更新上我們也能看到其他協議的影子:
- 如 Uniswap v4 的 Singleton 和 Flash Accounting 結構與 Balancer v2 的 Vault <-> Pool logic 結構的高度一致,都採用了虛擬帳本的形式對多個 Pool 進行統一記帳來降低交易路由過程中的 gas 消耗。
- 動態手續費、鏈上原生限價單,以及使用 ERC-1155 來具象化流動性是剛剛上線的 Joe v2.1 中已經實現的功能
- 同時,如 2.4 節所提到的內部化 MEV,LP 們從原本被 bots 獲取 MEV 的對手方,因為 hooks 的存在,可以將它們納入到自己的價值迴圈體系中,疊加 Flashbot 或者 Eden Network 等 MEV 拍賣 / 分配協議,可以把激勵二次分配到提供了有效流動性的 LP 手中。這一點上,儘管 Osmosis 並非 EVM 生態中的產品,但是 Skip Protocol 為其開發設計的 ProtoRev 也有很多借鑒之處。
思考
無疑,當下的加密市場處於深熊階段,流動性萎縮疊加 SEC 監管升級都如同烏雲籠罩在整個市場上空。與此同時,Uniswap 的交易量已經連續四個月超過 Coinbase,在監管壓力之下,優秀的 DeFi 產品愈發證明其價值。時至今日,我們依然可以毫不吝嗇地說,Uniswap 是以太坊上最偉大的用例之一。
故事回到本文的最開始,經過 10 周艱苦的海上航行,五月花號抵達美國,1620 年 11 月 21 日在今美國馬薩諸塞州科德角附近拋錨靠岸。當他們到達北美以後,1620 年的冬季格外寒冷,102 名乘客中有一半因病去世。但是活下來的 50 人繼續在北美新英格蘭紮根生活,生養眾多,到 21 世紀他們的後裔已經達到 3,500 萬人。在他們的後代中有很多美國著名人物,包括大約五分之一的美國總統,例如亞當斯父子總統,小羅斯福總統,布什父子總統等政治、法律界人物,以及許多文藝界、科學界、宗教界人物。而在五月花號前往北美的航程中,這些乘客們在會議中簽署了著名《五月花號公約》,這個公約成為 160 年以後美利堅合眾國成立時的憲法精神基礎。
2017 年,在 Hayden Adams 剛失業的那幾個月裡,他學習了智慧合約的編寫,又先後結識了 Vitalik Buterin,Philip Daian,Dan Robinson 等等與他誌同道合的朋友,在他們的影響和幫助下,秉持著抗審查和開源的加密精神,Hayden 建造了 Uniswap,這艘 DeFi 世界的五月花號。而今天,它也即將再次啟程,繼續向著未知之境進發。
📍相關報導📍
Uniswap V4 版本降臨!你該知道 V4 的全部升級重點