从Drift的困境看Solana为何执着订单薄

转载
11 小时前
9811
戈多Godot

文章转载来源: 戈多Godot

研究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 这个路径,目前看行不通,仍旧需要中心化做市商撮合,使得对手方平衡,这才是永续合约的本质。