從Drift的困境看Solana爲何執着訂單薄

研究Drift Protocol之後,我充分充分理解了爲什麼Solana對 CLOB 也就是訂單薄有執念。

因爲想要在鏈上實現永續合約 AMM 實在是太難太難太難了。以致於放棄,轉而擁抱中心化做市商。

盡管Perpetual Protocol創立的 vAMM(virtual AMM)解決了在現貨 AMM X * Y = K 基礎上加槓杆的問題。

但沒有中心化做市商,使得永續合約 AMM 必須要通過預先確定的數值規則,解決對手盤(比如所有用戶一致做多,沒有人做空)、深度、價格偏離(永續合約價格偏離現貨)等問題。

使得 Drift v1 在可調整參數及其公式化表達上顯得異常復雜。

復雜到,要根據合約價格偏離狀態,規定市場情況,比如 Healthiest Market 最健康市場、Unhealthy Marker 亞健康市場等等,一共四種情況,要評估多空失衡狀態,規定該狀態下是否對用戶倉位清算,以及調整系數的解決方案。

看到這裏是不是已經頭大了。再對比下訂單薄,是不是感覺中心化的東西,好像也挺眉清目秀的。現在是不是能理解一點 Solana 對訂單薄的執念了。

後來,Drift 上線了限價單功能,但體驗上還是跟訂單薄有些不同。

目前,Drift 上的交易由三種流動性機制支持:

1)JIT 拍賣,做市商提供流動性;

2)限價訂單簿,做市商提供流動性;

3)AMM,如果沒有 MM 介入提供流動性,則由 Drift 的 AMM 提供。

但 UTC 時間8月7日 0:00 之後,Drift 將放棄 AMM 模式,徹底擁抱中心化做市商。

vAMM 會面臨以下核心問題,

1)資金費率持續流失。協議的保險基金相當於在做空波動率——在市場波動劇烈時會被套利者慢慢蠶食;

2)無法維持價格錨定,需要持續補貼來維持期貨價格與現貨價格的一致性;

3)路徑依賴性問題。價格偏離越遠,維持成本越高。

連 vAMM 的鼻祖,Perpetual Protocol 也在考慮新方向,“Perp V2 將採用更主動的做市策略,以避免 V1 模式中的資金費率流失問題。新版本將整合 Uniswap V3 的功能,團隊相信去中心化永續合約的解決方案在於 CLOB 和 AMM 模式的有機結合。”

這種轉變其實是讓原文依賴數學公式定價的 vAMM,變爲做市商主動報價。風險從協議承擔,分攤到了市場。

從目前看,AMM 模式可能只適用與現貨。而鏈上合約交易,還是需要在去中心化和中心化之間保持平衡。

接下來,還是說說 vAMM,這也是最難的部分。會是助眠好幫手呢。

vAMM(virtual AMM)

Perpetual Protocol 的 vAMM 採用與 Uniswap 相同的 X * Y = K 恆定乘積公式。

對於 Uniswap 等現貨 AMM,用戶直接基於 LP 交易,LP 資產的比價反應了現貨價格。

而 vAMM 其實是兩層結構,LP 是抵押品,真實資產存儲在智能合約保險庫中。vAMM 其實是用戶開槓杆之後一個價格發現機制。

舉個例子,

1/ 假設 ETH 當前價格爲 4000 USDT,vAMM 池子初始爲 100 ETH 和 400,000 USDT。

2/ Alice 用 100 U 作爲保證金,10 倍槓杆做多 ETH,

1)Alice 向智能合約存入 1000 U,作爲保證金。

2)Perpetual Protocol 將 10,000 U(100 U × 10 倍槓杆)記入 vAMM, vAMM 根據恆定乘積公式 X * Y = K 計算 Alice 應得 ETH。

初始狀態 X * Y = K 100 ETH * 400,000 U= 40,000,000

Alice 存入 1000U之後,變爲 410,000 U。 X = K / Y 40,000,000 / 410,000 = 97.5609 ETH

Alice 實際獲得約 2.44 ETH。

此時 vAMM 內的狀態更新爲 97.5609 ETH 和 410,000 U。

3/ Bob 隨後使用 1000 U 作爲保證金,10 倍槓杆做空 ETH,

1)Bob 向同一個合約存入 1000 U。Perpetual Protocol 將 -10,000 vDAI 記入 vAMM,vAMM 根據恆定乘積公式 X * Y = K 計算 Bob 的空頭倉位大小。

Bob 做空了 2.4391 ETH,此時 vAMM 內的狀態恢復爲 100 ETH 和 400,000 U。

價格機制也採用資金費率機制,類似 CEX 永續合約的資金費率支付 (funding payments)。

具體公式,使用了 FTX 交易所的:

這裏其實有一個點,對於理解 vAMM 與傳統 CEX 合約的區別非常非常非常重要。

在 CEX,每個多頭都有對應的空頭,也就是有真實對手方,所以持倉用戶會支付資金費率。交易所只是一個交易場所,不承擔任何持倉風險。而在 vAMM,情況完全不同。

可以看到 vAMM 利用 X * Y = K 來定價的,而資產是作爲保證金質押到合約內的。所以本質上,是依據價格曲線交易,而非真實對手方。

所以一旦面臨多空失衡,協議需要想辦法吸引真實對手盤,而吸引的方式是補貼。

這就使得補貼來源的穩定性和資金池,非常重要,關係項目生死。

尤其在單邊行情下,或價格劇烈波動時,所以資金池相當於做空波動率。而做空波動率的特徵,恰恰是平時小賺,波動時大虧。

Drift 在 Perpetual Protocol 的 vAMM 基礎上進行了創新,推出了 dAMM(動態 AMM),區別是參數可以配置,用來應對標的價格偏離,多空對手盤不對稱、深度等問題。不過還是有些事情解決不了。

Drift AMM

Drift 採用動態 AMM,基於 Perpetual Protocol 創新的虛擬 AMM(vAMM)改進,但具有以下可配置參數:

  • Peg: 價格乘數。控制合約價格與現貨價格偏離度,幾乎是通過硬控的方式,讓合約價格錨定現貨價格。
  • K: 控制流動性深度,K值越大,深度越好,滑點越少。反之同理。而在合約價格極度偏離現貨價格的情況下,降低 K值有助於引起價格波動,將合約價格向現貨價格靠攏。
  • 費用池 (Fee Pool): 收入主要用於調整 Peg 和 K。

在配合預言機價格(合約價格)與標記價格(現貨價格)偏離度的四種情況,就有以下表格,

1/ Peg(錨定乘數)

vAMM 合約價格偏離市場現貨價格時,用於快速調整價格,讓標的價格接近真實市場價格。

公式:

Price = ( Y / X ) * Peg

價格 = (基礎資產 / 計價資產) * Peg 乘數

調整方案

每筆交易後檢查預言機-標記價格偏離度。如果偏離度超過 LIQ_LIMIT值(當前爲 10%) ,會有兩種選項,

1)若費用池儲備充足,則直接調整 Peg,讓價格重新錨定;

2)若費用池儲備不足,就會比較兩種成本:

費率補貼,吸引套利的成本,與直接重新錨定的成本。

通常情況下,會考慮先降低 K值,減少流動性深度,使價格更容易推動。

調整後,虧損方的倉位會真實計損,而盈利方倉位會由費用池補足。

2/ k(流動性深度)

控制滑點大小。其實很好理解,因爲是 X * Y = K,K值大,代表兩個資產 X 和 Y 就多,自然 K值越大滑點越小。

當然,因爲 Drift 是基於 Perpetual Protocol 的 vAMM,其中 X * Y= K 起到加槓杆之後的定價作用,並非真實 LP 資產,所以 K值是可以調整的。

小結下,

k 值控制價格對交易量的敏感度;

Peg 調整價格的絕對水平

3/ 費用池(Fee Pool)

不僅是收入,更是市場調節工具。用途:調整 Peg值、k值後需要補給盈利交易者的盈利,支付資金費率失衡。

費用池主要收入來源,

1)Taker 吃單手續費,基礎費率 0.05-0.1%;

2)清算費用,50%給費用池;

3)資金費率收入。

到這裏,其實能看出該模式相當依賴費用池的健康情況。會使得 Drift 在手續費方面失去優勢,這是其一。

另一個更本質的問題是,收入增長是線性的,交易量 * 手續費 = 收入,但支出可能隨着行情走單邊變成指數級,價格偏離的平方 * 持倉量 * 時間 = 支出。

所以從更長期的角度,支出並不能完全覆蓋收入。

這也是爲什麼,Drift 要放棄 vAMM,擁抱中心化做市的原因。

總結下

vAMM 模式下,用戶交易永續合約需存入保證金,用於潛在的清算。而 X * Y = K 公式實際變陳用於定價的曲線。

由此,在該公式基礎上,Drift 改變了定價方式,加入 Peg 錨定乘數,同時也讓 K值變得可調,以此來讓合約價格錨定現貨價格。而在調整過程中,出現的用戶倉位盈利,則由費用池補充。

所以,這使得費用池變得異常重要,但長期看,在極端行情下,支出會成指數級增長,但收入只能線性增長。造成協議對失衡倉位淨補貼。

單純通過數學公式控制鏈上 AMM 這個路徑,目前看行不通,仍舊需要中心化做市商撮合,使得對手方平衡,這才是永續合約的本質。

DRIFT2.91%
SOL4.23%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)