曲線不變量簡介 - 第二部分

本文為機器翻譯
展示原文

這篇文章的第二部分討論了StableSwap不變數。

CryptoSwap

CryptoSwap不變數是一個核心數學公式,它定義了Curve交易池的"流動性曲線",專門設計用於高度波動的資產對(不像穩定幣那樣緊密掛鉤)。它有助於池集中流動性在"內部"價格(透過內部預言機確定)周圍,並在池失衡時自動調整。以下是關鍵要點:

結合兩種不變數的優勢:

  • 當池平衡(價值等價餘額)時,CryptoSwap不變數的行為類似於StableSwap不變數,創造一個"平坦"區域(無滑點),實現近1:1的交換。

  • 當池失衡時,不變數逐漸轉向恆定乘積不變數行為(如Uniswap),導致滑點增加,並保護池免受過度價格偏離。

AMM不變數比較:恆定乘積(虛線)、StableSwap(藍色)和本文中的(橙色)

在第1部分中,StableSwap不變數描述在一般公式中:

CryptoSwap不變數由StableSwap不變數鼓勵:

但是,K的定義略有不同:

  • A(放大係數):A引數類似於StableSwap不變數(Curve v1),控制曲線中心的平坦程度。這決定了流動性在預期匯率(即"價格尺度")周圍的集中程度。

  • Gamma:Gamma引數控制上圖中兩條恆定乘積曲線的分離程度(虛線)。當Gamma增加時,它會將"調整後的恆定乘積"曲線拉向左下角,使曲線的漸近線更靠近座標軸,並擴大整體曲線形狀。

調整A(左)和Gamma(右)引數的影響。對於左圖,Gamma = 0.000145。對於右圖,A = 400,000。

初始化:

使用初始公式,我們可以將f(D_0)重寫為只有2枚代幣的情況:

使用牛頓法,初始值可以轉換為:

使用此公式,可以透過迴圈A次來計算D_0。在Viper程式碼中,A設定為255

該程式碼計算當前和上一個D_0值之間的絕對差異。當差異非常小(diff ≤ 1)或當差異乘以10^18小於D_0時,它會停止迭代。滿足其中一個條件後,該函式返回收斂的D_0值。

回到不變數,令Sx_i之和,Px_i之積。對於2枚代幣(N = 2),f(D)變為:

f(D)的導數為:

這可以轉換為:

上述公式可以簡化。首先,將所有項除以K,並展開括號內的所有內容。

現在S可以寫為- S + 2S:

然後,提取包含S和D的組中的公共項。

使所有分母在括號內通用:

引入兩個輔助變數mul1mul2來簡化函式中的變數:

現在,導數f'(D)可以簡化為:

在Viper程式碼中,_g1k0變數被定義為:

回到程式碼中,

這段程式碼計算-f'(D)而不是f'(D)。這使牛頓步驟更加清晰。此外,f(D)被除以K:

現在,D的完整牛頓法為:

該公式已分為兩部分用於牛頓法:

最終的D將計算為上述兩個方程的差。

感謝閱讀Verichains!免費訂閱以接收新帖並支援我的工作。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論