一個關於 Curve 和 Uniswap 的數學巧合以及它僅僅是個巧合

進階Dec 31, 2023
本文從起點梳理 Curve V1 和 Uniswap V3 的構造思考過程,兩者在構造過程中數學意義上的擦肩而過,以及是如何地又分道揚鑣通往不衕的終點。
一個關於 Curve 和 Uniswap 的數學巧合以及它僅僅是個巧合

有一個很妙的髮現。2019年 Curve V1 在構造 AMM 公式時,推演過程中有一個中間形態的公式,而這個公式和一年多後 Uniswap V3 的基礎公式恰恰有著相衕的結構(前者是後者的一種特殊形態)。完全不衕的思考路徑,出現了數學上的交點,妙哉。本文將從起點梳理 Curve V1 和 Uniswap V3 的構造思考過程,兩者在構造過程中數學意義上的擦肩而過,以及是如何地又分道揚鑣通曏不衕的終點。

1. Curve V1 公式構建的思維路徑

2018年底 Uniswap 的 xy = k 橫空出世,是爲一次範式革命。但在穩定幣交易對的場景下,缺陷顯著。Michael 抓住了此切入點,於19年底推出了全新 AMM Curve V1 。

新 AMM 公式構造過程的基礎之一仍然是 xy = k。後續將統一按照 Curve V1 白皮書的參數代號,寫爲如下公式。

穩定幣交易對的價格多數時候隻在 1:1 附近很小的區間浮動,隻在 1:1 單一價格點提供流動性的公式便是 x+y = D,這是構造過程的另一基礎。

Michael 希望將兩個基礎公式揉合起來,又或者説在 xy = (D/2)² 的基礎之上,引入一些 x+y =D 的特性。

於是把兩個基礎公式「雜交」加到了一起,得到了一個揉合公式。

其中 x+y=D 的部分,配上了一個 A 參數,且額外在等號兩側都乘上了 D。乘以 D 的原因,是爲了讓 A 參數去維度化(不論池子內是兩代幣、三代幣亦或更多,衕樣的 A 值有衕樣的效力),這裡不展開,也併非本次討論的重點。

重點在 A 參數。先説明一下,Curve V1 白皮書在揉合公式內使用的是希臘字母 Chi(長得很像 x ),而併非 A。爲了書寫方便和閲讀體驗,我改用了 A ,併不會影響論述。

A 參數的作用,或許可以用黑灰白的色條來類比理解,90%灰就很像黑了,而10%灰就更接近白。A 參數決定了最終的公式産物更像 x+y=D,還是更像 xy=(D/2)²。

從極限 A 的數值,可以更好理解這個揉合的過程。A = 0,揉合公式就變成了 xy=(D/2)²。A = 無窮大,揉合公式就變成了 x+y=D。於是 A 在其中,就是一種中間態,A 越大,就越像 x+y=D。這種揉合,通過圖形可以更加直觀地感受,有興趣可在 desmos² 中玩耍 A。

關於 Curve V1,講到這裡先停住,請大緻記住這個揉合公式。然後我們接下去看一下 Uniswap V3 的情況。

2. Uniswap V3 公式構建的思維路徑

Uni V1/V2 的 xy = k 稱霸江湖後,因「流動性均勻地分布在0至無窮大完整的價格域上」所帶來的不足之處日漸顯露,Curve V1 的推出更是直接精準地切走了穩定幣交易對這一重要的市場。

在設計 V3 時,Uniswap 團隊首先想構造出隻在有限連續價格區間內提供流動性的公式,他們構造的起點仍然是 xy=k 。

想象一下,如果想實現一個效果,在 [Pa, Pb] 價格區間內(比如 [0.99, 1.01] 或是 [1500, 1700]),這個公式對交易的支持就和 Uni V1/V2 的 xy = k 一模一樣,但當價格超出 [Pa, Pb],就不再提供流動性了。

這種效果對應的公式如下:

若用圖來呈現,會十分清晰,就是把 xy=k 曏左下方平移了一些位置。具體要移多少,由Pa、Pb決定。

這個公式實現的效果是,所有流動性都集中在 [Pa, Pb] 內,LP 存入一定數量的 X_token 和 Y_token,在 [Pa, Pb] 價格區間內提供了一些流動性。單就這個局部的流動性效果,若要讓 Uni V2 的 LP 來達成,則需要 LP 去存入更多的 X_token 和 Y_token;多的程度取決於 Pa、Pb,可能需要多很多。

這個平移公式是 Uni V3 進一步構造的基礎公式,Uni V3 暫講到這。

3. 奇妙的擦肩而過 - 兩種思維路徑的交點

將第1節中 Curve V1 的揉合公式做一些變換:

再和第2節中 Uni V3 的平移公式放在一起觀察,會髮現兩者很像:

若再對 Uni V3 平移公式內的 Pa 和 Pb 做一些限定,令 Pb=1/Pa,也就是限定價格區間爲類似 [0.5, 2] 或 [0.01, 100] 這樣的區間,滿足在 1:1 價格點兩側倍數意義上的對稱。

做了這個限定之後,可以説兩個公式就是完全一樣了:

兩個公式裡有著不衕的參數錶達,可以很輕鬆地推導出兩組參數的關繫。我們不妨以 Curve V1 揉合公式的參數 A 和 D 爲 基礎,計算出 L 和 Pa,如下所示:

這些參數的意義和兩個協議各自構造的思維路徑有關,我們結合兩組參數的關繫,再簡要地回顧一下兩種構造過程。

簡化起見,假設一個穩定幣交易對的池子,初始價格是 1:1。Curve V1 揉合公式中的 D 代錶了初始 LP 投入了兩種穩定幣各 D/2 的數量。A 則代錶了這個揉合公式趨近 x+y=D 的程度。

來到 Uni 這一側,我們再虛擬出一個 Uni V2 的穩定幣交易對池子,滿足以下公式:

也就是初始價 1:1 的 話,初始 LP 需投入兩種穩定幣各 D(2A+1)/2 這麽多的數量。

這時有一個 Uni V3 池子,希望實現的效果是,隻在以下價格區間內提供流動性:

且在這個區間內的流動性效果就如衕剛剛虛擬出的 Uni V2 池子那般。滿足這個效果的 Uni V3 池子所對應的公式恰恰就和前述的 Curve V1 揉合公式一模一樣了。

簡要概括的話,Curve V1 通過揉合所實現的效果,恰恰就相當於先虛擬出一個代幣儲備量大很多(多了 2A 倍)的 Uni V2 池子,然後在 [(2A/(2A+1))², ((2A+1)/2A)²] 價格區間實現了和這個 Uni V2 池子完全相衕的流動性效果。

4.分道揚鑣 - 兩種思維路徑的不衕終點

Curve V1 揉合公式就是 Uni V3 平移公式的一個特殊形態。事實上,若在 Curve V1 揉合公式內再引入一個參數,x+y 的部分調整爲 x+py,兩者就完全等價了,這裡不多展開。

Curve V1 在揉合公式的基礎上,Uni V3 在平移公式的基礎上,順著各自原本的思維路徑,繼續前行,分道揚鑣。

4.1 Curve V1:進一步的動態漸變揉合

Curve V1 揉合公式存在一個缺陷,隻在有限價格區間內提供流動性,Michael 需要的是一個全價格區間都有流動性的公式。(至於爲什麽有這個需求?或許全價格區間都有流動性是很自然的、更加完整健全的狀態,比如在對外提供 Oracle 的意義上。)

我們可以這麽來理解他進一步構造的思路:讓這個揉合的程度動態化。之前的揉合公式裡的 A 是一個常數,代錶了統一的揉合程度。現在進一步地,當 x 偏離 D/2 越多(即 x 越小或越大時),或者説價格偏離 1:1 越多,讓揉合的程度更加偏曏 xy = (D/2)²,x 或價格偏離到極限狀態時,就變成了單純的 xy=(D/2)²,這樣就實現了全價格區間都有流動性。

Michael 把 A 變成了 Axy/(D/2)²

這就可以實現上麵所講的動態漸變效果。構造方式當然不僅限於這一種,我有種感覺 Michael 在這一步構造過程裡,併沒有對不衕的動態漸變實現方式的差異做很深入的對比研究,或許隻要能方便地實現全價格流動性就點到爲止了。

終於,我們得到了 Curve V1 的最終形態公式如下:

4.2 Uni V3:放棄大一統單一公式,自由組合分段函數

Uni V3 平移公式最核心的內涵在於 [Pa, Pb] 這個價格區間。以這個平移公式作爲基礎,很自然地,Uni V3 走曏了一個方曏;不衕價格區間的流動性可以不衕(如果不衕價格區間的流動性相衕,那就又回到 Uni V2 了)。

在這個大方曏上,仍然有不衕的設計分叉。一條分叉路,可以由協議定死一個不衕價格區間的流動性分配規則,LP 們仍然是衕質的,其實 Curve V1 可以看作是這一種類型(價格區間極限小)。

另一條分叉路,所有的決定權全部讓渡給 LP 們,LP 們各自獨立的決策共衕決定了最終流動性在不衕價格區間的分配方式。

Uni V3 選擇了後者,這個選擇極爲關鍵,這讓整個市場博弈的元素極大地豐富了起來,價格判斷、波動率判斷、運氣成分等等都卷入了進來,使得流動性市場離充分競爭市場更近了一步。

從數學角度看 Uni V3 的進一步構造,乍一看,像是一種非常規的分段函數。不衕的價格區間,對應著不衕的 L 值,相應地就是不衕的公式,比如以下一個極簡的示例:

事實上,以上可以轉化爲標準的分段函數,即以 x 來定義子域,子函數爲 y 和 x 的一個公式,本文不展開。

5. 結語

Curve V1 於2019年底推出,彼時其主要目的就是更好地支持穩定幣交易對、填補該市場空白。或許正是這決定了 Michael 的思維路徑,重點是以 1:1 價格點對稱的結構,併且流動性相對聚攏在 1:1 價格點附近。當 Michael 將 x+y=D 和 xy = (D/2)² 雜交推導出了揉合公式時,在我看來最核心、最具開創性的工作已經完成,因爲這個揉合公式已經滿足了上述的對稱、聚攏的特徵。而將揉合公式進一步改造成支持全價格區間流動性的公式,對 Michael 而言,或許隻是略施小計,收尾工作而已。

Uni V3 更晚才推出,2021年3月白皮書髮布。Uni 團隊已經看到了 Curve V1 的足夠長時間的運行情況。一群極聰明的人,回擊 Curve 的方法自然要升維。Uni 團隊直接打破了一個大前提,LP 們不再「大鍋飯」,可以不再統一地按照每個池子的單一固定公式去提供流動性。

Uni V3 在 Uni V1/V2 xy=k 的基礎上,構造出了隻在特定價格區間提供流動性的一個基礎公式(即上文所説的平移公式)。Uni V3 要打破 LP「大鍋飯」的大前提,於是賦予了 LP 們以自由,自由地決定在什麽樣的價格區間(或是數個區間)提供流動性。LP 們每個個體獨立自由地決策,彙總到每個池子層麵,也會形成一個公式(分段函數),隻是這個公式的形狀是動態變化的,絶非之前的 AMM 的那種固定形狀模式(部分 AMM 可通過治理調整形狀,如 Curve V1 調整 A 參數)。

這種設計,不僅僅解決 Uni V2 在穩定幣交易對場景下的資金效率低的問題(回擊 Curve V1 ),更是在所有的交易對場景,引入了更加充分的競爭,提升了市場整體的資金效率水平。

從歷史背景、根本出髮點的差異梳理了一遍之後,再來看我最初所感嘆的 Curve V1 揉合公式和 Uni V3 平移公式的相似性,又似乎不過是個不值一提的簡單數學巧合罷了。

聲明:

  1. 本文轉載自[Buidler DAO],著作權歸屬原作者[observerdq],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

一個關於 Curve 和 Uniswap 的數學巧合以及它僅僅是個巧合

進階Dec 31, 2023
本文從起點梳理 Curve V1 和 Uniswap V3 的構造思考過程,兩者在構造過程中數學意義上的擦肩而過,以及是如何地又分道揚鑣通往不衕的終點。
一個關於 Curve 和 Uniswap 的數學巧合以及它僅僅是個巧合

有一個很妙的髮現。2019年 Curve V1 在構造 AMM 公式時,推演過程中有一個中間形態的公式,而這個公式和一年多後 Uniswap V3 的基礎公式恰恰有著相衕的結構(前者是後者的一種特殊形態)。完全不衕的思考路徑,出現了數學上的交點,妙哉。本文將從起點梳理 Curve V1 和 Uniswap V3 的構造思考過程,兩者在構造過程中數學意義上的擦肩而過,以及是如何地又分道揚鑣通曏不衕的終點。

1. Curve V1 公式構建的思維路徑

2018年底 Uniswap 的 xy = k 橫空出世,是爲一次範式革命。但在穩定幣交易對的場景下,缺陷顯著。Michael 抓住了此切入點,於19年底推出了全新 AMM Curve V1 。

新 AMM 公式構造過程的基礎之一仍然是 xy = k。後續將統一按照 Curve V1 白皮書的參數代號,寫爲如下公式。

穩定幣交易對的價格多數時候隻在 1:1 附近很小的區間浮動,隻在 1:1 單一價格點提供流動性的公式便是 x+y = D,這是構造過程的另一基礎。

Michael 希望將兩個基礎公式揉合起來,又或者説在 xy = (D/2)² 的基礎之上,引入一些 x+y =D 的特性。

於是把兩個基礎公式「雜交」加到了一起,得到了一個揉合公式。

其中 x+y=D 的部分,配上了一個 A 參數,且額外在等號兩側都乘上了 D。乘以 D 的原因,是爲了讓 A 參數去維度化(不論池子內是兩代幣、三代幣亦或更多,衕樣的 A 值有衕樣的效力),這裡不展開,也併非本次討論的重點。

重點在 A 參數。先説明一下,Curve V1 白皮書在揉合公式內使用的是希臘字母 Chi(長得很像 x ),而併非 A。爲了書寫方便和閲讀體驗,我改用了 A ,併不會影響論述。

A 參數的作用,或許可以用黑灰白的色條來類比理解,90%灰就很像黑了,而10%灰就更接近白。A 參數決定了最終的公式産物更像 x+y=D,還是更像 xy=(D/2)²。

從極限 A 的數值,可以更好理解這個揉合的過程。A = 0,揉合公式就變成了 xy=(D/2)²。A = 無窮大,揉合公式就變成了 x+y=D。於是 A 在其中,就是一種中間態,A 越大,就越像 x+y=D。這種揉合,通過圖形可以更加直觀地感受,有興趣可在 desmos² 中玩耍 A。

關於 Curve V1,講到這裡先停住,請大緻記住這個揉合公式。然後我們接下去看一下 Uniswap V3 的情況。

2. Uniswap V3 公式構建的思維路徑

Uni V1/V2 的 xy = k 稱霸江湖後,因「流動性均勻地分布在0至無窮大完整的價格域上」所帶來的不足之處日漸顯露,Curve V1 的推出更是直接精準地切走了穩定幣交易對這一重要的市場。

在設計 V3 時,Uniswap 團隊首先想構造出隻在有限連續價格區間內提供流動性的公式,他們構造的起點仍然是 xy=k 。

想象一下,如果想實現一個效果,在 [Pa, Pb] 價格區間內(比如 [0.99, 1.01] 或是 [1500, 1700]),這個公式對交易的支持就和 Uni V1/V2 的 xy = k 一模一樣,但當價格超出 [Pa, Pb],就不再提供流動性了。

這種效果對應的公式如下:

若用圖來呈現,會十分清晰,就是把 xy=k 曏左下方平移了一些位置。具體要移多少,由Pa、Pb決定。

這個公式實現的效果是,所有流動性都集中在 [Pa, Pb] 內,LP 存入一定數量的 X_token 和 Y_token,在 [Pa, Pb] 價格區間內提供了一些流動性。單就這個局部的流動性效果,若要讓 Uni V2 的 LP 來達成,則需要 LP 去存入更多的 X_token 和 Y_token;多的程度取決於 Pa、Pb,可能需要多很多。

這個平移公式是 Uni V3 進一步構造的基礎公式,Uni V3 暫講到這。

3. 奇妙的擦肩而過 - 兩種思維路徑的交點

將第1節中 Curve V1 的揉合公式做一些變換:

再和第2節中 Uni V3 的平移公式放在一起觀察,會髮現兩者很像:

若再對 Uni V3 平移公式內的 Pa 和 Pb 做一些限定,令 Pb=1/Pa,也就是限定價格區間爲類似 [0.5, 2] 或 [0.01, 100] 這樣的區間,滿足在 1:1 價格點兩側倍數意義上的對稱。

做了這個限定之後,可以説兩個公式就是完全一樣了:

兩個公式裡有著不衕的參數錶達,可以很輕鬆地推導出兩組參數的關繫。我們不妨以 Curve V1 揉合公式的參數 A 和 D 爲 基礎,計算出 L 和 Pa,如下所示:

這些參數的意義和兩個協議各自構造的思維路徑有關,我們結合兩組參數的關繫,再簡要地回顧一下兩種構造過程。

簡化起見,假設一個穩定幣交易對的池子,初始價格是 1:1。Curve V1 揉合公式中的 D 代錶了初始 LP 投入了兩種穩定幣各 D/2 的數量。A 則代錶了這個揉合公式趨近 x+y=D 的程度。

來到 Uni 這一側,我們再虛擬出一個 Uni V2 的穩定幣交易對池子,滿足以下公式:

也就是初始價 1:1 的 話,初始 LP 需投入兩種穩定幣各 D(2A+1)/2 這麽多的數量。

這時有一個 Uni V3 池子,希望實現的效果是,隻在以下價格區間內提供流動性:

且在這個區間內的流動性效果就如衕剛剛虛擬出的 Uni V2 池子那般。滿足這個效果的 Uni V3 池子所對應的公式恰恰就和前述的 Curve V1 揉合公式一模一樣了。

簡要概括的話,Curve V1 通過揉合所實現的效果,恰恰就相當於先虛擬出一個代幣儲備量大很多(多了 2A 倍)的 Uni V2 池子,然後在 [(2A/(2A+1))², ((2A+1)/2A)²] 價格區間實現了和這個 Uni V2 池子完全相衕的流動性效果。

4.分道揚鑣 - 兩種思維路徑的不衕終點

Curve V1 揉合公式就是 Uni V3 平移公式的一個特殊形態。事實上,若在 Curve V1 揉合公式內再引入一個參數,x+y 的部分調整爲 x+py,兩者就完全等價了,這裡不多展開。

Curve V1 在揉合公式的基礎上,Uni V3 在平移公式的基礎上,順著各自原本的思維路徑,繼續前行,分道揚鑣。

4.1 Curve V1:進一步的動態漸變揉合

Curve V1 揉合公式存在一個缺陷,隻在有限價格區間內提供流動性,Michael 需要的是一個全價格區間都有流動性的公式。(至於爲什麽有這個需求?或許全價格區間都有流動性是很自然的、更加完整健全的狀態,比如在對外提供 Oracle 的意義上。)

我們可以這麽來理解他進一步構造的思路:讓這個揉合的程度動態化。之前的揉合公式裡的 A 是一個常數,代錶了統一的揉合程度。現在進一步地,當 x 偏離 D/2 越多(即 x 越小或越大時),或者説價格偏離 1:1 越多,讓揉合的程度更加偏曏 xy = (D/2)²,x 或價格偏離到極限狀態時,就變成了單純的 xy=(D/2)²,這樣就實現了全價格區間都有流動性。

Michael 把 A 變成了 Axy/(D/2)²

這就可以實現上麵所講的動態漸變效果。構造方式當然不僅限於這一種,我有種感覺 Michael 在這一步構造過程裡,併沒有對不衕的動態漸變實現方式的差異做很深入的對比研究,或許隻要能方便地實現全價格流動性就點到爲止了。

終於,我們得到了 Curve V1 的最終形態公式如下:

4.2 Uni V3:放棄大一統單一公式,自由組合分段函數

Uni V3 平移公式最核心的內涵在於 [Pa, Pb] 這個價格區間。以這個平移公式作爲基礎,很自然地,Uni V3 走曏了一個方曏;不衕價格區間的流動性可以不衕(如果不衕價格區間的流動性相衕,那就又回到 Uni V2 了)。

在這個大方曏上,仍然有不衕的設計分叉。一條分叉路,可以由協議定死一個不衕價格區間的流動性分配規則,LP 們仍然是衕質的,其實 Curve V1 可以看作是這一種類型(價格區間極限小)。

另一條分叉路,所有的決定權全部讓渡給 LP 們,LP 們各自獨立的決策共衕決定了最終流動性在不衕價格區間的分配方式。

Uni V3 選擇了後者,這個選擇極爲關鍵,這讓整個市場博弈的元素極大地豐富了起來,價格判斷、波動率判斷、運氣成分等等都卷入了進來,使得流動性市場離充分競爭市場更近了一步。

從數學角度看 Uni V3 的進一步構造,乍一看,像是一種非常規的分段函數。不衕的價格區間,對應著不衕的 L 值,相應地就是不衕的公式,比如以下一個極簡的示例:

事實上,以上可以轉化爲標準的分段函數,即以 x 來定義子域,子函數爲 y 和 x 的一個公式,本文不展開。

5. 結語

Curve V1 於2019年底推出,彼時其主要目的就是更好地支持穩定幣交易對、填補該市場空白。或許正是這決定了 Michael 的思維路徑,重點是以 1:1 價格點對稱的結構,併且流動性相對聚攏在 1:1 價格點附近。當 Michael 將 x+y=D 和 xy = (D/2)² 雜交推導出了揉合公式時,在我看來最核心、最具開創性的工作已經完成,因爲這個揉合公式已經滿足了上述的對稱、聚攏的特徵。而將揉合公式進一步改造成支持全價格區間流動性的公式,對 Michael 而言,或許隻是略施小計,收尾工作而已。

Uni V3 更晚才推出,2021年3月白皮書髮布。Uni 團隊已經看到了 Curve V1 的足夠長時間的運行情況。一群極聰明的人,回擊 Curve 的方法自然要升維。Uni 團隊直接打破了一個大前提,LP 們不再「大鍋飯」,可以不再統一地按照每個池子的單一固定公式去提供流動性。

Uni V3 在 Uni V1/V2 xy=k 的基礎上,構造出了隻在特定價格區間提供流動性的一個基礎公式(即上文所説的平移公式)。Uni V3 要打破 LP「大鍋飯」的大前提,於是賦予了 LP 們以自由,自由地決定在什麽樣的價格區間(或是數個區間)提供流動性。LP 們每個個體獨立自由地決策,彙總到每個池子層麵,也會形成一個公式(分段函數),隻是這個公式的形狀是動態變化的,絶非之前的 AMM 的那種固定形狀模式(部分 AMM 可通過治理調整形狀,如 Curve V1 調整 A 參數)。

這種設計,不僅僅解決 Uni V2 在穩定幣交易對場景下的資金效率低的問題(回擊 Curve V1 ),更是在所有的交易對場景,引入了更加充分的競爭,提升了市場整體的資金效率水平。

從歷史背景、根本出髮點的差異梳理了一遍之後,再來看我最初所感嘆的 Curve V1 揉合公式和 Uni V3 平移公式的相似性,又似乎不過是個不值一提的簡單數學巧合罷了。

聲明:

  1. 本文轉載自[Buidler DAO],著作權歸屬原作者[observerdq],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!