Uniswap v2 白皮書:“自上次收取費用以來計算的總費用”的公式是如何得出的?
上面這個截圖來自uniswap v2白皮書page5,這個方程是怎麼推導出來的?
(為了使問題更易於搜尋,這裡是文本形式的引用)
可以通過測量自上次收取費用以來 k 的平方根(即 x * y 的平方根)的增長來計算收取的總費用。這個公式為您提供了 t₁ 和 t2 之間的累積費用佔 t2 時池中流動性的百分比:
k1
k
在t1
, k2 @ t2。k1 的平方根是使用者最後一次收取費用時的池大小。
k2 的平方根現在是池的大小。
一個除以另一個給你百分比增長。
1 - 百分比增長只是反轉它。
所以:
如果
// @t1 x1 = 5 // (5 ABC tokens in pool) y1 = 5 // (5 XYZ tokens in pool) k1 = x1 * y1 // (so, 25) // @t2 x2 = 20 y2 = 20 k2 = x2 * y2 // (so, 400) sqrk1 = sqrt(k1) == 5 sqrk2 = sqrt(k2) == 20 sqrk1 / sqrk2 == .25 // f1,2 == 1 - .25 == .75 == 75%
因此,在 t2 時,累積費用(即您作為流動性提供者的收益)佔池中流動性的百分比為 75%,因為
- k 的原始 sqrt 是 5
- k 的最終 sqrt 是 20,
- 5 是 20 的 25%
- 所以 5 -> 20 增加了 75%
因此,如果您在 t1 投入 5 ABC 和 5 XYZ,然後您取出 20 ABC 和 20 XYZ @ t2,您從 t1 到 t2 獲得了 75% 的費用。
(這是“費用”,因為這就是導致您在池中所佔份額增加的原因;添加到池中的其他使用者在這裡不相關/不考慮。假設這些 x & y & k 值是流動性提供者特定的,或者在這種情況下,1 個流動性提供者提供了所有的 x & y @ t1,x & y @ t2 的增加都來自掉期獲得的費用,而新的比率反映了套利的集體結果。 )
方便的是,我們還可以看到我們投入了 10 個 token,取出了 40 個 token,5 -> 40 增加了 75%。那麼,為什麼這個方程有
k
和square root
?好吧,在我們上面的例子中,x 和 y 具有相同的值——它們在開始和結束時以 1:1 的比例進行交易。在這個等式中,這讓我們基本上將它們視為蘋果:蘋果——儘管如此,這很不尋常,而且在現實世界中幾乎從未如此。*有趣的是將此場景與另一種場景進行比較,其中
x2 = 10
&y2 = 40
。*在這種情況下,k
將是相同的。在這種情況下,我們投入 10 個代幣,取出 50 個代幣,10 -> 50 是 80% 的收益。然而
k
,(x=20 * y=20)
與(x=10 * y=40)
我們的增長實際上是 75% 還是 80% 相同?這就是為什麼
k
這麼酷的單位的部分原因,以及為什麼這個使用 k 的方程存在。它非常優雅地捕捉令牌值本身的潛在變化。我們現在有更多的 y,但 y 的值下降了。我們在 x 中增加的較少,但 x 的值上升了。通過 k,我們使用 x 和 y 作為彼此價值的相對指標。