• <pre id="x08qo"></pre><object id="x08qo"></object><track id="x08qo"></track>

    1. <track id="x08qo"></track>
        <acronym id="x08qo"><strong id="x08qo"><address id="x08qo"></address></strong></acronym>
        收藏本站 網站導航 開放平臺 Tuesday, November 7, 2023 星期二
        • 微信

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

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

          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 這一刻度體系來搭建;

          流動性分布依然是水平分布在限價區間內,每個池的流動性深度依然是該市場內所有參與的流動性堆疊的結果;

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

          III. Uniswap 的革新

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

          全新的合約結構

          巧妙的賬本設計

          更高的開發者自由度

          對于流動性提供者更多的保護

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

          3.1 全新的合約結構

          熟悉 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 經濟性上還是工程美學上都有極大的進步。

          3.2 巧妙的賬本設計

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

          3.3 更高的開發者自由度

          在 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 做得比前代以及一眾競品更好。

          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 也有很多借鑒之處。

          IV. 思考

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

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

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

        免責聲明:中金網發布此信息目的在于傳播更多信息,與本網站立場無關。中金網不保證該信息的準確性、真實性、完整性、有效性等。相關信息并未經過本網站證實,不構成任何投資建議,據此操作,風險自擔。
        亚洲Av日韩AV欧美Av中文Av_免费看日本黄色大片_正常体位视频裸体视频_中国Av特黄精品
      1. <pre id="x08qo"></pre><object id="x08qo"></object><track id="x08qo"></track>

        1. <track id="x08qo"></track>
            <acronym id="x08qo"><strong id="x08qo"><address id="x08qo"></address></strong></acronym>