推荐:市场牛熊不定又遇上俄乌局势紧张加剧全球市场动荡,点击此处加入PANews群组一起抱团取暖
作者:Keegan小钢
前言
ApeX Protocol 是一款新的 DeFi 产品,其定位为衍生品协议,但与目前流行的 dYdX 和 Perp 都大不相同。ApeX Protocol 有几个关键特性是其它衍生品协议所不具备的:
Permissionless:用户可以无需许可地创建任何交易对
Two-way Futures:既支持正向合约,也支持反向合约
eAMM:Elastic AMM,只需提供一种真实资产作为流动性的 AMM
PCV:Protocol Controlled Value,即协议控制价值
编写此文时,ApeX Protocol 主网还未上线,但测试网已经运行了一段时间了。合约代码的 Github 地址也开放了,审计报告也公开了。
官网:https://apex.exchange
Github:https://github.com/ApeX-Protocol/apex-protocol
审计报告:https://github.com/ApeX-Protocol/apex-protocol/blob/master/docs/audit_report.pdf
eAMM 模式
ApeX 协议的底层交易模式采用了 eAMM 模式,称为弹性自动化做市商模式。
每个交易对的底层实现,是和 UniswapV2 类似的恒定乘积做市商模式。不同的地方,首先是流动性提供者(LP) 无需像 Uniswap 一样提供两种真实资产来注入流动性,而只需注入单种真实资产,该种资产也称为基础资产,而另一种资产则是弹性供应的虚拟资产。
比如,交易对 WETH/USDC,WETH 为基础资产,USDC 为虚拟资产。那 LP 提供流动性时,只需要注入 WETH,而 USDC 的数量则是自动计算出来的。当添加的流动性为初始流动性时,会从价格预言机读取出交易对的价格,根据价格算出 USDC 要同步增加到 eAMM 池子里的储备量。而添加的流动性不是初始流动性的话,则根据池子自身的价格来计算 USDC 的增量。
举个例子,假如 LP 注入 0.2 个 WETH 来添加初始流动性,从价格预言机读取到的 WETH 价格为 3000 USDC,那就往池子里增加 0.2 ETH + 0.2 * 3000 USDC 的储备量,其中,0.2 ETH 是真实资产,而 0.2 * 3000 = 600 USDC 则是自动供应的虚拟资产。若非初始流动性,而池子自身的价格为 2900 USDC,那就往池子里增加 0.2 个 ETH 的真实资产和 0.2 * 2900 = 580 USDC 的虚拟资产。
LP 提供流动性之后,和 UniswapV2 一样也会得到代表其份额的 LP Token。LP 要移除流动性时,则将 LP Token 返回给 eAMM 池子进行销毁,而池子则根据份额占比返回对应的基础资产给到 LP。
另外,eAMM 与其他 AMM 模式还有一个地方不同,那就是引入了 Rebase 机制。当 eAMM 池子的价格与外部预言机的价格偏差较大时,就可触发 Rebase,此时就会自动增加或减少 eAMM 池子里虚拟资产的数量,让 eAMM 的价格和外部市场价格保持一致。这种机制将会使得 eAMM 的价格与外部市场价格始终保持在一个合理的偏差范围内,避免出现独立的插针行情。
永续合约
ApeX 协议目前提供的衍生品为永续合约,既支持正向合约,也支持反向合约。比如,交易对 WETH/USDC 和 WBTC/USDC,若保证金都为 USDC,则是正向合约;若保证金分别为币本位的 WETH 和 WBTC,那就是反向合约。
在 ApeX 底层智能合约实现中,一个交易对是用 baseToken - quoteToken 的方式表示的,baseToken 为保证金资产,而 quoteToken 则为虚拟资产。因此,对于 WETH/USDC 交易对,其正向合约在底层智能合约的交易对为 USDC - WETH,而反向合约则为 WETH - USDC,在底层是两个不同的交易对。
不管是正向合约还是反向合约,任何交易对都可由任何用户无需许可地自由创建,这也是其它衍生品协议目前还不具备的一个特性。
从交易流程上来说,交易者通过充值保证金资产来进行开多或开空。在底层智能合约层面,每个账户在每个交易对都只会维护一个仓位,可以对该仓位进行追加或减少保证金,也可以进行加仓或减仓,支持全部平仓也支持部分平仓,甚至可以反向开仓。
还有,其它衍生品交易协议基本都是设置固定的最大开仓杠杆倍数,因此,指定保证金下的最大开仓量也是固定的。而 ApeX 协议的最大开仓量则是动态计算的,其计算公式如下:
该公式主要涉及到几个参数:开仓保证金率 MarginRate(open)、用户开仓保证金数量 Margin(acc)、eAMM 池子的深度 vUSD(pool)、价格 MarkPrice 和滑点保护的系数 beta。
其中,影响最关键的是开仓保证金率和池子的深度。当用户的开仓保证金相比池子的深度来说比较小的话,那最大开仓量主要由开仓保证金率决定,该保证金率也相当于一个固定的最大开仓倍数。而随着用户的开仓保证金提高,第二项对最大开仓量的限制就会逐步增大,使用户实际可开杠杆倍数随着资金量增大而减小。这种方案,兼顾仓位安全性的同时,也提高了资金利用率。
PCV
在大部分 DeFi 应用中,流动性都是其最关键的存在,流动性就是价值所在。但在 DeFi 1.0 的应用中,其流动性基本都是控制在用户手里的,用户可以自由地添加流动性,也可以随时撤走流动性。很多应用都会通过各种激励措施来刺激用户保留其流动性,但一旦减低了激励或其它竞品提供了更高的激励,那用户就很可能会撤走流动性。所以,本质上,是用户控制了价值,DeFi 协议是很被动的。
为了改善这种情况,DeFi 2.0 就有了 PCV 的尝试,尝试由协议来控制价值。PCV 的基本思想就是流动性不再单纯地全控制在用户手里,而是协议本身也可以拥有流动性。如此,这些由协议控制的流动性就可以长期锁在协议里,可以保证稳定的流动性。而且,因为流动性还是可以产生收益的,不断累积的收益就可以通过不同策略实现再增值,从而让协议拥有更多价值。
ApeX 协议主要是通过 Bonding 机制来实现 PCV。其基本原理是通过出售打折的 APEX(ApeX 协议的治理代币),来捕获用户的真实资产,并将得到的资产注入到 eAMM 中添加流动性。如此一来,这些流动性就是协议所拥有,而不再是用户所拥有。
而且,协议自身控制的这些流动性,还可以不断从 eAMM 中赚取到交易手续费,累积的手续费就可以通过不同策略复投来产生更多收益。
技术架构
在技术实现上,整个 ApeX 协议其实可以划分为主协议和外围协议两大块,主协议实现了最核心的交易功能,而外围协议则包含了好几个模块,主要包括 Bonding、Staking 和 Referral 等。
下面我们来看看 ApeX 协议的技术架构,这里主要说的是智能合约层面的架构,这也是整个协议的核心。
主协议
主协议的架构图如下:
参与主协议的用户群体中,主要有四种角色:
Trader:交易者,使用协议的主要用户群体。
LP:Liquidity Provider,流动性提供者,也是 Trader 的交易对手方。
Liquidator:清算人,可对达到清算门槛的持仓单执行清算操作,并得到清算激励。
Arbitrager:套利者,当内部格与外部预言机价格偏离较大时,就可通过 rebase 调整市场价格。
主协议主要包括以下合约:
Router:Trader & LP 与主协议交互的主要入口。
Factory:用来创建和查询交易对的合约,为了避免单 Factory 出现合约代码超 size 的问题,所以拆分为了 PairFactory、AmmFactory、MarginFactory 三个合约。
Amm:实现 eAMM 的底层合约,每个交易对都有一个 Amm 合约实例。同时继承了 LiquidityERC20,即 LP Token 合约。
Margin:管理用户仓位的底层合约,每个交易对也有一个 Margin 合约实例,和 Amm 实例绑定。同时继承了 Vault 接口,管理着真实资产。
Config:管理着主协议用到的所有配置参数。
PriceOracle:价格预言机合约。
外围协议
外围协议的架构则如下:
外围协议主要包含了三个模块:Bonding、Staking 和 Referral。对应三种参与者:Bonder、Staker 和 Trader。
Bonder 可通过 bond 的方式,支付某种资产给到 BondPool 以折扣价格获得 APEX,BondPool 会将收到的资产转投入 Amm 提供流动性,并将获得的 LP Token 交由 PCVTreasury 统一管理。这也是前文所说的实现 PCV 的方式。
Staker 可将 UniswapV2 或 SushiSwap 等外部 DEX 的 APEX-WETH 交易对的 LPToken 质押到 LPTokenPool 赚取 APEX 代币,赚取到的 APEX 还可以再质押投入 APEXPool 赚取更多的 APEX 代币。
Trader 则可通过不断交易,实现交易挖矿,赚取 APEX 代币。另外,Trader 还可以发展下线,邀请其他 Trader 来参与交易,赚取邀请奖励。
总结
本文作为概述篇,只对 ApeX Protocol 做了一些简单的介绍,旨在对这一款新产品有一个初步认识。后续文章将分模块深入剖析一些设计和实现细节,敬请期待!