Solana生態AMM研究:高流動性背後的底層程式碼

  • Solana生態AMM研究:本文探討Solana生態中幾種重要的自動做市商(AMM)實現,包括CPMM、CLMM和DLMM,分析其運作機制與流動性策略,幫助流動性提供者(LP)優化投資選擇。

  • CPMM(恆定乘積做市商)

    • 基本AMM模型,遵循X * Y = k的恆定乘積公式。
    • Raydium的實現透過LP Token管理流動性份額,程式碼開源於GitHub。
    • 交換代幣時,透過數學公式計算輸出量,確保乘積不變。
  • CLMM(集中流動性做市商)

    • 類似Uniswap V3,允許LP設定價格範圍,提高資金利用率。
    • 無需單獨部署合約,利用Solana鏈特性簡化操作。
    • LP需主動管理流動性範圍,避免無常損失。
  • DLMM(動態流動性做市商)

    • Meteora推出的AMM,引入Bin概念,實現零滑點交易。
    • 提供三種流動性策略(Spot、Curve、Bid Ask),適應不同市場條件。
    • 價格變動時自動調整啟動的Bin,優化交易效率。
  • 總結:AMM是Web3金融的核心,Solana生態的多種實現為LP提供靈活選擇,未來將持續推動去中心化金融發展。

總結

在Web3 產業的現況中,與DeFi 相關的產品佔據了絕對的市場。而在這其中,AMM(Automated Market Maker,自動做市商)作為關鍵的一環,是Web3 金融方面變化的有力推動者。本文將分別介紹Solana 生態中幾個重要的AMM 實現,希望能夠對LP(Liquidity Provider,流動性提供者)如何選擇自己的投資策略提供一些幫助。

CPMM

CPMM ( Constant Product Market Maker ) 作為最基本的AMM 實現,在許多產品中有實現。這裡用Raydium 推出的基於恆定乘積的AMM 來舉例。恆定乘積即池子中兩種代幣的供應量具有固定乘積:X * Y = k。

對於流動性提供者來說,當任何人在池子中添加流動性(添加資產)時,CPMM 會自動給錢包地址創建關聯帳戶並發放LP Token(每個代幣對都有屬於自己的LP Token Mint),此LP Token 用於證明該錢包地址持有某個池子的份額,並且將在流動性提供者時銷毀相應的Token。

CPMM 的鏈上程式使用Anchor 開發,程式碼在https://github.com/raydium-io/raydium-cp-swap能夠找到。下面我們來簡單確認下它是如何實現恆定乘積的。

首先,使用者在使用Raydium 的CPMM 交換代幣時,將會觸發swap 相關指令。

舉例來說(僅為了說明情況,本文不對任何Token 負責):當使用者想使用USDC 交換TRUMP 時,可以透過TRUMP-USDC這個池子進行交換。

池子

TRUMP

USDC

7XzVsjqTebULfkUofTDH5gDdZDmxacPmPuTfHa1n9kuh

6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN

EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

例如我們查看這個交易,簡單起見,讓我們忽略交易中的其他指令,只查看Raydium 部分。找到Raydium CPMM: swapBaseInput

Solana生態AMM研究:高流動性背後的底層程式碼

在Input Accounts 中,我們能看到輸入代幣為USDC,輸出代幣為TRUMP。在Solana 生態的AMM 中,LP Pair 可以簡單的透過Token Account 來表示,而不需要創建一個新的合約程序並部署(例如以太坊中常用的工廠合約)。在交易發生時,直接與Raydium 的CPMM Program 來交互,Solana 程式將透過傳入的池子地址、代幣地址等來修改相應的Token Account 的狀態,來進行swap 操作。

例如上述的swapBaseInput 指令,程式碼在這裡能夠找到。經過一系列前置檢查後,具體能夠換到多少目標代幣,透過ConstantProductCurve.swap_base_input_without_fees中進行了計算:

Solana生態AMM研究:高流動性背後的底層程式碼

其中所用到的公式為:

Solana生態AMM研究:高流動性背後的底層程式碼

即TokenX 和TokenY 在總量各自變化後,其乘積應保持不便。公式左邊為變化後的乘積,右邊為變化前的乘積。

Solana生態AMM研究:高流動性背後的底層程式碼

上述算式經過數學轉換後,能得到Δy(即我們能夠換到的y 代幣的數量)的轉換公式:

Solana生態AMM研究:高流動性背後的底層程式碼

也就是程式碼中的delta_y = (delta_x * y) / (x + delta_x)部分。注意這裡的計算不包含手續費,其已經在swap_base_input的前置邏輯中扣除了。

CLMM

CLMM (Concentrated Liquidity Market Maker)同樣是Raydium 推出的AMM,它類似於Uniswap V3,每個代幣對同樣有多個費用層級,能夠分別創建一個對應層級的池子。

由於CLMM 的實作參考了Uniswap V3,所以在學習它時,許多概念和實作方式都可以參考Uniswap 的實作。它也繼承了Uniswap 的概念例如tick、多費率層級、集中流動性等。更多內容可以在ZAN 推出的DEX 開發課程中找到: DEX Development Practice - Uniswap Code Analysis - How Uniswap works - ZAN

但需要注意,與CPMM 類似的,由於Solana 鏈的特性,Raydium CLMM 不需要對每個池子單獨部署一個合約,所以也沒有工廠合約的概念。這一點不同於Uniswap。

CLMM 允許流動性提供者在註入資金時選定一個價格範圍,資金將僅在所選範圍內分佈:

Solana生態AMM研究:高流動性背後的底層程式碼

對於集中流動性池來說,代幣分別分別存在於當前價格的兩側,上圖所選的價格範圍包含了當前價格,所以會將資金分別分配給池子中的兩種代幣。

我們也可以只注入某一種代幣,來提供所謂的單邊流動性(如下圖)。這有些類似傳統金融模式中的限價單,LP 的資金只有在代幣價格達到某種範圍時才會被利用,不過這種模式要考慮的風險點也更多。

Solana生態AMM研究:高流動性背後的底層程式碼

一般來說,對於價格波動小的池子,LP 傾向於選擇小一點的範圍;反之對於那些價格波動非常劇烈的池子,則傾向於選擇大一點的範圍。這樣的目的是為了盡量不讓當前價格脫離自己所選擇的價格範圍,造成太多無常損失。

需要注意,集中流動性雖然可以讓LP 的資金利用率更高,但也對LP 的金融意識提出了更高的要求,LP 需要更積極的管理自己的流動性。如果LP 應對不力,那麼鏈上頻繁的波動將很容易導致LP 遭受嚴重的無常損失。

DLMM

DLMM (Dynamic Liquidity Market Maker) 是Meteora 推出的AMM 產品,它也屬於Uniswap V3 的一種,和上文提到的CLMM 也非常相似,DLMM 也允許LP 將自己的資金集中在當前價格附近的一定範圍內。不過DLMM 在具體實作時有些不同,並且提供了一些特色功能。

DLMM 中提供了Bin 的概念,池子將從基礎價格開始,每隔一小段Bin step 作為一個Bin 存在。如果交易發生在同一個Bin 內,那麼交易者將享受到零滑點。這可以大大增加交易量和交易成功率,理論上LP 能夠收穫更多的交易費用。

Solana生態AMM研究:高流動性背後的底層程式碼

與CLMM 相似的,池子中的代幣同樣在當前價格的兩側分佈,一個代幣僅需要提供單邊流動性。但根據Bin 的概念,目前啟動的Bin(顯示了當前的交換價格)則擁有兩種代幣。即:

  • 目前啟動的Bin:其中存在兩種代幣,在當前Bin 中交換代幣將按照固定價格進行,並且0 滑點;
  • 其他Bin:在目前啟動的Bin 兩側分佈,分別僅存在單一代幣。

在目前啟動的Bin 中的代幣量發生變化時,如果某一方代幣減少為0,則DLMM 會將目前啟動的Bin,根據池子中的實際情況,設定為其左側或右側的下一個Bin。依此來推動池子中的價格變動。

當LP 提供流動性時,DLMM 提供了3 中策略,分別是Spot、Curve 和Bid Ask

  • 其中Spot 最普世,基本上所有的流動性池都比較合適,算是一種最簡單的流動性策略。
  • Curve 則更適合那些價格變動非常小的池子,例如穩定幣對。這些池子中的價格波動非常小,就像它的形狀所透露的那樣,把LP 的資金集中分佈在此區間內,能夠最大限度的吃滿交易費。
  • Bid Ask 則更適合那些價格波動非常大的池子。人們總是傾向於在這種池子中進行更多的套利交易,價格可能很難集中在某一小段範圍內。這種策略通常需要LP 經常調整自己的部位,來避免價格脫離自己所設定的資金範圍。由於涉及到對市場的判斷力,這通常並不容易。

總結

AMM 作為Web3 金融領域的重要組成部分,透過其獨特的機制和創新,推動去中心化金融的普及和發展。隨著科技的不斷進步和生態系統的完善,AMM 預計在未來發揮更大的作用,進一步改變傳統金融的格局。

分享至:

作者:ZAN Team

本文為PANews入駐專欄作者的觀點,不代表PANews立場,不承擔法律責任。

文章及觀點也不構成投資意見

圖片來源:ZAN Team如有侵權,請聯絡作者刪除。

關注PANews官方賬號,一起穿越牛熊
推薦閱讀
14分鐘前
2小時前
3小時前
4小時前
5小時前
5小時前

熱門文章

行業要聞
市場熱點
精選讀物

精選專題

App内阅读