作者:Joseph Xu

編排:@createpjf

I. 前言

1620 年,一艘名為五月花號(Mayflower)的英國船隻駛離英格蘭,五月花號帶著102名乘客和大約30名船員駛向美國,他們離開英格蘭的原因是認為英格蘭教會不僅抵制改革而且過於腐敗,所以決定穿越大西洋來到北美,在那裡他們將建立屬於自己的新移民社區。

2017 年7月,Hayden Adams 被他大學畢業後的第一個雇主西門子解僱,彼時他還是一位毫無區塊鏈開發經驗的機械工程師。 2018年8月,在Hayden 失業的第13個月時,Hayden 與他的伙伴們完成了Uniswap v1 的開發並在以太坊主網上線,從此成為DeFi 世界裡最不可或缺的拼圖之一。而在本文著筆的48小時前,Uniswap 發布了他們的第四版迭代。我們在第一時間內瀏覽了他們的白皮書和合約代碼,試圖分析這一醞釀兩年之久的更新較於前代有哪些堅持與變革。

II. Uniswap 的堅持

坦率地說,目前v4 的合約還不是一個開發完成的狀態,可讀性和可參考性都受到了一定的影響。但是我們還是可以確認,v4 保留了很多前代驗證為有效的特性:

  • 恆定積公式x*y = k 沿用至今;
  • 限價流動性依然基於tick 這一刻度體係來搭建;
  • 流動性分佈依然是水平分佈在限價區間內,每個池的流動性深度依然是該市場內所有參與的流動性堆疊的結果;

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

可以說經過兩年的市場驗證,Uniswap v3 證明了其在資金利用率上的優勢,限價流動性單這一極具創造力的設計在v4 中被沿用。

III. Uniswap 的革新

結合白皮書和合約代碼,我們欣喜地發現v4 在上述堅持的基礎上完成了諸多創新和改變,而這些革新主要著力於以下四個方面:

  • 全新的合約結構
  • 巧妙的賬本設計
  • 更高的開發者自由度
  • 對於流動性提供者更多的保護

接下來,我們將從這四個方面入手,詳細討論其設計和工程實現上的巧思:

3.1 全新的合約結構

熟悉Uniswap 過往版本代碼的人都知道factory-pool 這一自其v1 沿用至今的合約架構,可以說這個架構至今都是目前DeFi 世界裡使用最廣泛的合約結構。而Uniswap 在v4 中決定棄用,引入了新的單例合約(Singleton)結構,旨在最大限度的降低創建流動性池以及跨池(合約)調用中的gas 消耗。

我們可以看到,v4-core 中僅剩下PoolManager 一個合約承擔著核心的業務邏輯,而PoolManager 將承擔著協議所有流動性彙算的任務,使用PoolKey 這一字段來索引對應的幣對市場,而AMM 曲線以及流動性的相關計算都抽像到了libraries 庫合約中。

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

在合約結構方面,同樣值得一提的是v4 的流動性倉位數據的存儲與封裝也產生了巨大改變:

  • 在v2 中,由於流動性全區間分佈,協議使用的是同質化流動性代幣(ERC-20)作為流動性份額的憑證;
  • 在v3 中,因為限價流動性的引入,倉位之間無法繼續使用ERC-20 來代幣化流動性,而是選擇在對應的流動性Id 相關數據外層封裝了非同質化代幣( ERC-721),並使用NonfungiblePositionManager 這一合約進行流動性相關操作的管理。
  • 而在v4 中,我們驚訝地發現,流動性倉位不再使用代幣化的方法進行封裝,而是使用地址進行倉位管理。

可以說v3 在流動性倉位數據外層進行封裝ERC721 憑證的操作是比較割裂的,而v4 這種簡單直接地將流動性數據與地址綁定,雖然可能會喪失一些流動性代幣相關的可組合性,但是無論從gas 經濟性上還是工程美學上都有極大的進步。

3.2 巧妙的賬本設計

閃電記賬(Flash Accounting)可以說是v4 中最具有開創性的設計之一。回顧過往市場中絕大多數流動性協議,它們的交易和流動性相關操作都伴隨著代幣轉移,流程無外乎:安全性檢查-> 根據設定目標計算代幣轉換的數量-> 更新賬務數據-> 代幣轉移。而v4 中顛覆了這一固有的編碼邏輯,利用回調函數(Callback Function)的特性,構建了一套複式記賬賬本。

什麼是複式記賬法?複式記賬法是以資產與權益平衡關係作為記賬基礎,對於每一筆經濟業務,都要以相等的金額在兩個或兩個以上相互聯繫的賬戶中進行登記,系統地反映資金運動變化結果的一種記賬方法。舉一個簡單的例子,Alice 從Bob 那裡借款1000 USDC,這一筆經濟活動將被記錄成:

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

從上面的表格中,我們很好理解:資產= 權益- 負債。 (此處負債為絕對值)

我們把這個例子拓展的更複雜一些:Alice 從Bob 那裡借款1000 USDC;Bob 從Carl 那裡借款1 ETH;Carl 又向Alice 借了1000 DAI,那麼我們的複式記賬表格將會是:

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

顯然,Uniswap 的流動性池是交易者進行借貸的對象,而swap 交易的本質則是:在交易完成後,流動性池與交易者彼此之間債務兩清。也就是說當Alice 試圖使用1800 USDC 購買1 ETH 時,她與流動性池的關係也可以使用複式記賬法來記錄:

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

如果此刻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 池之間更高效地進行路由成為可能,降低了流動性碎片化的成本。

3.3 更高的開發者自由度

在v4-periphery repo 中引入鉤子hooks 合約, hooks是在流動性池生命週期的各個時間節點運行的代碼片段。開發者可以利用給出的BaseHook 合約構建屬於自己的個性化交易操作。

Uniswap v4 目前支持八個這樣的鉤子回調:

  • beforeInitialize / afterInitialize
  • beforeModifyPosition / afterModifyPosition
  • beforeSwap / afterSwap
  • beforeDonate / afterDonate

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

也就是說無論是LP 還是交易者都可以在流動性池中操作時利用定制化的hooks 來執行核心邏輯以外的業務邏輯。這無疑為很多原本通過鏈下中心化服務(如Gelato Network)才能實現的功能提供了鏈上操作的可能性:

  • 動態手續費
  • 基於時間加權平均做市商來進行更低滑點的swap 拆單
  • 鏈上限價單
  • 自定義鏈上價格預言機,如幾何平均預言機(Geomean Oracles)

在此之上,我們可以展開想像,更多場景也有了實現空間:

  • 動態手續費可以不是簡單地根據時間線性變化,可以根據單筆swap 產生的tick 跳躍數量來量化波動率,從而動態改變手續費,實現對於LP 無常風險的對沖
  • 鏈上量化交易策略和流動性調倉策略
  • 自動手續費复投

此外,引入hook 後,池的數量預計將大幅增加,這也使得單例合約結構和復式記賬的新設計有更多的用武之地,即,不同的設計更新之間是互相牽連的。

綜上所述,v4 的確繼續踐行著其作為DeFi 基礎設施的使命,將自己的核心業務邏輯從紛繁的產品需求中抽像出來,將無盡的想像空間交給社區和開發者,引領更多的人參與進來。這一點上,Uniswap v4 做得比前代以及一眾競品更好。

3.4 對於流動性提供者更多的激勵

v3 被一直詬病的缺乏對於LP 的激勵和保護在v4 中有所改觀。

PoolManager 中內置的donate() 方法將允許用戶、協議外集成者和鉤子直接以池中任一代幣向在價格範圍內的LP 支付費用。這一新機制可以將MEV 內化到LP 的回報中,以便LP 可以從MEV 中受益。

3.5 其他協議的影子

Uniswap 作為DEX 賽道的龍頭,一直站在AMM 研究的最前沿,但是在AMM 的研究上其他AMM 競品也有各自的創新,在Uniswap v4 這次的更新上我們也能看到其他協議的影子:

  • 如Uniswap v4 的Singleton 和Flash Accounting 結構與Balancer v2 的Vault <-> Pool logic 結構的高度一致,都採用了虛擬賬本的形式對多個Pool 進行統一記賬來降低交易路由過程中的gas消耗。
  • 在動態手續費、鏈上原生限價單,以及使用ERC-1155 來具象化流動性是剛剛上線的Joe v2.1 中已經實現的功能
  • 同時,如3.4 節所提到的內部化MEV,LP 們從原本被bots 獲取MEV 的對手方,因為hooks 的存在,可以將它們納入到自己的價值循環體系中,疊加Flashbot 或者Eden Network 等MEV 拍賣/分配協議,可以把激勵二次分配到提供了有效流動性的LP 手中。這一點上,儘管Osmosis 並非EVM 生態中的產品,但是Skip Protocol 為其開發設計的ProtoRev 也有很多藉鑑之處。

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

IV. 思考

無疑,當下的加密市場處於深熊階段,流動性萎縮疊加SEC 監管升級都如同烏雲籠罩在整個市場上空。與此同時,Uniswap 的交易量已經連續四個月超過Coinbase,在監管壓力之下,優秀的DeFi 產品愈發證明其價值。時至今日,我們依然可以毫不吝嗇地說,Uniswap 是以太坊上最偉大的用例之一。

DeFi的重要拼圖,解讀Uniswap v4有哪些堅持與變革?

故事回到本文的最開始,經過10週艱苦的海上航行,五月花號抵達美國,1620年11月21日在今美國馬薩諸塞州科德角附近拋錨靠岸。當他們到達北美以後,1620年的冬季格外寒冷,102名乘客中有一半因病去世。但是活下來的50人繼續在北美新英格蘭紮根生活,生養眾多,到21世紀他們的後裔已經達到3,500萬人。在他們的後代中有很多美國著名人物,包括大約五分之一的美國總統,例如亞當斯父子總統,小羅斯福總統,布什父子總統等政治、法律界人物,以及許多文藝界、科學界、宗教界人物。而在五月花號前往北美的航程中,這些乘客們在會議中籤署了著名《五月花號公約》,這個公約成為160年以後美利堅合眾國成立時的憲法精神基礎。

2017年,在Hayden Adams 剛失業的那幾個月裡,他學習了智能合約的編寫,又先後結識了Vitalik Buterin,Philip Daian,Dan Robinson 等等與他志同道合的朋友,在他們的影響和幫助下,秉持著抗審查和開源的加密精神,Hayden 建造了Uniswap,這艘DeFi 世界的五月花號。而今天,它也即將再次啟程,繼續向著未知之境進發。

參考資料

https://github.com/Uniswap

https://blog.uniswap.org/uniswap-v4

https://github.com/Uniswap/v4-core/blob/main/whitepaper-v4-draft.pdf